<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>js | Wiki | PWODEV</title>
	<atom:link href="https://wiki.pwodev.com/tag/js/feed/" rel="self" type="application/rss+xml" />
	<link>https://wiki.pwodev.com/tag/js/</link>
	<description>Help for developers</description>
	<lastBuildDate>Fri, 09 Aug 2019 13:31:00 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>highlight.js &#8212; лучшая подсветка синтаксиса кода</title>
		<link>https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/</link>
					<comments>https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 13:25:44 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[подсветка кода]]></category>
		<guid isPermaLink="false">https://wiki.pwodev.com/?p=678</guid>

					<description><![CDATA[<p>Сравним какая подсветка синтаксиса кода лучше. На сегодняшний день мы имеем уже большее количество всяких скриптов которые делают это. Загуглим: code syntax highlighting. и рассмотрим список самых популярных скриптов подсветки синтаксиса: Хотя&#8230;. Зачем тратить на это время. Нам нужно чтобы работало быстро, не нагружало страницу лишними скриптами, и заморачиваться не хочется с внедрением скрипта в [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/">highlight.js &#8212; лучшая подсветка синтаксиса кода</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сравним какая подсветка синтаксиса кода лучше. На сегодняшний день мы имеем уже большее количество всяких скриптов которые делают это. Загуглим: code syntax highlighting. и рассмотрим список самых популярных скриптов подсветки синтаксиса:</p>



<p>Хотя&#8230;.</p>



<p>Зачем тратить на это время. Нам нужно чтобы работало быстро, не нагружало страницу лишними скриптами, и заморачиваться не хочется с внедрением скрипта в сайт. Надо также чтобы отображалось красиво, как в нашем ide, типа PHPStorm или любом другом. Чтобы так, один раз поставил и забыл.</p>



<p>Отлично, я свой выбор сделал и тебе советую: <a rel="noreferrer noopener" aria-label="highlight.js (откроется в новой вкладке)" href="https://highlightjs.org/" target="_blank">highlight.js</a></p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="869" height="528" src="https://wiki.pwodev.com/wp-content/uploads/2019/08/подсветка-кода.png" alt="Подсветка кода с помошью скрипта highlight.js" class="wp-image-684" srcset="https://wiki.pwodev.com/wp-content/uploads/2019/08/подсветка-кода.png 869w, https://wiki.pwodev.com/wp-content/uploads/2019/08/подсветка-кода-300x182.png 300w, https://wiki.pwodev.com/wp-content/uploads/2019/08/подсветка-кода-768x467.png 768w, https://wiki.pwodev.com/wp-content/uploads/2019/08/подсветка-кода-400x243.png 400w" sizes="(max-width: 869px) 100vw, 869px" /><figcaption>Зацени как клево смотрится официальный сайт</figcaption></figure>



<h4 class="wp-block-heading">Итак краткая инструкция по установке:</h4>



<p>Добавляем в &lt;head&gt; это:</p>



<pre class="wp-block-code"><code>&lt;link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.9/styles/default.min.css">
&lt;script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.9/highlight.min.js">&lt;/script>
&lt;script>hljs.initHighlightingOnLoad();&lt;/script></code></pre>



<p>Тут мы добавили css, js скрипт и запустили обработку этого скрипта.</p>



<p>Подсветка синтаксиса кода работает. По умолчанию скрипт применяется к такой html конструкции:</p>



<pre class="wp-block-code"><code>&lt;pre>&lt;code class="html">...&lt;/code>&lt;/pre></code></pre>



<p>class=&#187;html&#187; &#8212; это не обязательно, но если хочется, можно написать язык кода, чтобы упростить распознавание скриптом, типа кода.</p>



<p>Тебе надо подсветить код в WordPress и ты ищешь какой-то вордпрессовский плагин? Не советую мусорить в Вордпрессе дополнительными плагинами. Просто добавь highlight.js в head и не заморачивайся. А вот тебе сразу инструкция: <a rel="noreferrer noopener" aria-label="Как правильно добавлять скрипты в WordPress (откроется в новой вкладке)" href="https://wiki.pwodev.com/jquery-wordpress-%d0%b8%d0%b7-google/" target="_blank">Как правильно добавлять скрипты в WordPress</a>.</p>



<p>Более подробная документация по скрипту и дополнительные опции можно найти в <a rel="noreferrer noopener" aria-label="официальной документации highlight.js (откроется в новой вкладке)" href="https://highlightjs.org/usage/" target="_blank">официальной документации highlight.js</a>. Там же можно найти много различных тем и стилей подсветки кода. </p>



<p>Всем удачи в вашем не простом, но очень интересном деле. Не забывайте регистрироваться и писать комментарии.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&amp;linkname=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2Fhighlight-js-%25d0%25bb%25d1%2583%25d1%2587%25d1%2588%25d0%25b0%25d1%258f-%25d0%25bf%25d0%25be%25d0%25b4%25d1%2581%25d0%25b2%25d0%25b5%25d1%2582%25d0%25ba%25d0%25b0-%25d0%25ba%25d0%25be%25d0%25b4%25d0%25b0%2F&#038;title=highlight.js%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0%20%D0%BA%D0%BE%D0%B4%D0%B0" data-a2a-url="https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/" data-a2a-title="highlight.js — лучшая подсветка синтаксиса кода"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/">highlight.js &#8212; лучшая подсветка синтаксиса кода</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/highlight-js-%d0%bb%d1%83%d1%87%d1%88%d0%b0%d1%8f-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%b4%d0%b0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>is email? javascript verification function</title>
		<link>https://wiki.pwodev.com/is-email-javascript-verification/</link>
					<comments>https://wiki.pwodev.com/is-email-javascript-verification/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Wed, 06 Jun 2018 10:08:46 +0000</pubDate>
				<category><![CDATA[JS]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[verification]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=464</guid>

					<description><![CDATA[<p>Есть форма, в ней поле input в котором нужно ввести email. Как верифицировать форму, проверить строку на наличие email адреса? Как понять что поле email заполнено правильно? is email &#8212; JS функция проверки строки, на корректность email. Верификация email адреса. Вот сама js функция is email: Функция вернет TRUE или FALSE. Эту функцию лучше всего [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/is-email-javascript-verification/">is email? javascript verification function</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Есть форма, в ней поле input в котором нужно ввести email. Как верифицировать форму, проверить строку на наличие email адреса? Как понять что поле email заполнено правильно? is email &#8212; JS функция проверки строки, на корректность email. Верификация email адреса.</p>



<h5 class="wp-block-heading">Вот сама js функция is email:</h5>



<pre class="wp-block-code"><code>function is_email(email) {
	var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return regex.test(email);
}</code></pre>



<p>Функция вернет <strong>TRUE</strong> или <strong>FALSE</strong>.</p>



<figure class="wp-block-image"><img decoding="async" width="627" height="147" src="http://wiki.pwodev.com/wp-content/uploads/2018/06/Снимок-экрана-2018-06-06-в-11.57.42.png" alt="is email? javascript verification function" class="wp-image-465" srcset="https://wiki.pwodev.com/wp-content/uploads/2018/06/Снимок-экрана-2018-06-06-в-11.57.42.png 627w, https://wiki.pwodev.com/wp-content/uploads/2018/06/Снимок-экрана-2018-06-06-в-11.57.42-300x70.png 300w, https://wiki.pwodev.com/wp-content/uploads/2018/06/Снимок-экрана-2018-06-06-в-11.57.42-400x94.png 400w" sizes="(max-width: 627px) 100vw, 627px" /><figcaption>javascript verification function</figcaption></figure>



<p>Эту функцию лучше всего поставить перед отправкой формы, как-бы валидация формы. Если все сходится, и функция вернет TRUE, отправляем форму дальше стандартными средствами или с помощью ajax. Еще будет нужно чтобы форма не отправлялась по событию submit. Как это сделать я мы уже писали в статье:&nbsp;<a href="http://wiki.pwodev.com/destroy-default-onclick-event/">Как отменить отправку формы с помощью js</a>.</p>



<p>На данный момент нам нужна была только&nbsp;javascript функция. Варианты на других языках программирования предлагайте в комментариях, добавим. А чтобы добавить комментарий &#8212; регистрируйтесь. Будем рады всем!</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&amp;linkname=is%20email%3F%20javascript%20verification%20function" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2Fis-email-javascript-verification%2F&#038;title=is%20email%3F%20javascript%20verification%20function" data-a2a-url="https://wiki.pwodev.com/is-email-javascript-verification/" data-a2a-title="is email? javascript verification function"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/is-email-javascript-verification/">is email? javascript verification function</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/is-email-javascript-verification/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Клик вне элемента &#8212; jQuery click outside</title>
		<link>https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/</link>
					<comments>https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Thu, 11 Jan 2018 11:40:53 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=414</guid>

					<description><![CDATA[<p>Сегодня поступила задача получить событие клика на странице, за пределами определенного элемента. Другими словами клик вне элемента или jQuery click out или&#160;outside click. Что-то похожее на событие hover out или mouse leave или&#160;mouse out но по клику. Отследить клик за пределами определенного элемента пригодится например чтобы закрыть открывшееся меню, или закрыть попап&#160;(close popup by outside [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/">Клик вне элемента &#8212; jQuery click outside</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сегодня поступила задача получить событие клика на странице, за пределами определенного элемента. Другими словами клик вне элемента или jQuery click out или&nbsp;outside click. Что-то похожее на событие hover out или mouse leave или&nbsp;mouse out но по клику.</p>



<p>Отследить клик за пределами определенного элемента пригодится например чтобы закрыть открывшееся меню, или закрыть попап&nbsp;(close popup by outside click). Либо для любых других ваших задач.</p>



<h5 class="wp-block-heading">Как реализовать это? Как отследить клик вне элемента?</h5>



<pre class="wp-block-code"><code>jQuery(document).on('click',function (e) {
 var el = '.element';
 if (jQuery(e.target).closest(el).length) return;
 // дальше пишем код который нужно выполнить по клику вне элемента
});</code></pre>



<p>На этом все. Надеюсь эта статья была вам полезна. Напишите в комментариях возможно другие решения этого вопроса, либо если вы нашли более простое решение. Также регистрируйтесь если хотите также писать статьи.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&amp;linkname=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25ba%25d0%25bb%25d0%25b8%25d0%25ba-%25d0%25b2%25d0%25bd%25d0%25b5-%25d1%258d%25d0%25bb%25d0%25b5%25d0%25bc%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-jquery-click-outside%2F&#038;title=%D0%9A%D0%BB%D0%B8%D0%BA%20%D0%B2%D0%BD%D0%B5%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20jQuery%20click%20outside" data-a2a-url="https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/" data-a2a-title="Клик вне элемента — jQuery click outside"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/">Клик вне элемента &#8212; jQuery click outside</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/%d0%ba%d0%bb%d0%b8%d0%ba-%d0%b2%d0%bd%d0%b5-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82%d0%b0-jquery-click-outside/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Парсер сайтов и контента &#8212; phpQuery</title>
		<link>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/</link>
					<comments>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Tue, 02 Jan 2018 16:19:11 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DOMDocument]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[file_get_contents]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[phpQuery]]></category>
		<category><![CDATA[var_dump]]></category>
		<category><![CDATA[парсер]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=400</guid>

					<description><![CDATA[<p>Сегодня поговорим о том как сделать парсер сайтов на php или html tag parser. Задача получить контент сайта с помощью php, а дальше из полученного контента вытащить содержимое какого-либо тега или class или id. Например jQuery это хороший&#160;парсер контента. Тоесть чтобы получить какой-то элемент страницы достаточно знать только селектор этого элемента. Вообщем нам нужен такой [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/">Парсер сайтов и контента &#8212; phpQuery</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сегодня поговорим о том как сделать парсер сайтов на php или html tag parser. Задача получить контент сайта с помощью php, а дальше из полученного контента вытащить содержимое какого-либо тега или class или id. Например jQuery это хороший&nbsp;парсер контента. Тоесть чтобы получить какой-то элемент страницы достаточно знать только селектор этого элемента. Вообщем нам нужен такой же парсер контента сайтов как jQuery но на php.</p>



<p>Для реализации этого есть php класс <a href="http://php.net/manual/class.domdocument.php" target="_blank" rel="noopener noreferrer">DOMDocument</a>. Этот&nbsp; класс php парсит html код как делает это обычный Javascript. Но чтобы упростить пользование класса DOMDocument есть библиотека&nbsp;phpQuery это аналог&nbsp;jQuery но на php.</p>



<p><a href="https://code.google.com/archive/p/phpquery/" target="_blank" rel="noopener noreferrer">Ссылка phpQuery на Google Code</a></p>



<p>Задание думаю понятно, теперь приступим к реализации php парсера.</p>



<h3 class="wp-block-heading">Парсер сайтов на&nbsp;phpQuery.</h3>



<p>Для начала скачиваем последнюю версию плагина phpQuery по <a href="https://code.google.com/archive/p/phpquery/downloads" target="_blank" rel="noopener noreferrer">этой ссылке</a>&nbsp;или из <a href="https://github.com/TobiaszCudnik/phpquery" target="_blank" rel="noopener noreferrer">репозитория</a>. Кладем файл в нужную директорию (в нашем случае в корень сайта). И подключаем библиотеку которая поможет нам парсить контент сайта.</p>



<pre class="wp-block-code"><code>include_once 'phpQuery.php';</code></pre>



<p>Итак библиотеку мы подключили. Теперь нам нужны демо данные. Для этого записываем в php переменную html код.</p>



<p>Статья <a href="http://wiki.pwodev.com/echo-large-html-code-in-php/" target="_blank" rel="noopener noreferrer">как записать в php переменную html код</a>.</p>



<pre class="wp-block-code"><code>$html = &lt;&lt;&lt;CONTENT
&lt;div class="test">
 &lt;h1>Title&lt;/h1>
 &lt;div class="content">Content&lt;/div>
&lt;/div>
CONTENT;</code></pre>



<p>Демо данные у нас есть. Мы сохранили их в переменную $html. Наша задача получить содержимое .content</p>



<p>Другой вариант можно также получить контент сайта по URL для того чтобы сделать парсер php функцией file_get_contents:</p>



<pre class="wp-block-code"><code>$html = file_get_contents('http://wiki.pwodev.com/');</code></pre>



<p>Добавляем демо данные или контент сайта в обьект модуля:</p>



<pre class="wp-block-code"><code>$document = phpQuery::newDocument($html);</code></pre>



<p>Теперь нам нужно парсить html код по тегу. Парсим контент следующей функцией:</p>



<pre class="wp-block-code"><code>$echo = $document->find('.content');</code></pre>



<p>Селектор такой же как и в jQuery или как в css. Все довольно просто. Теперь чтобы вывести полученное содержимое достаточно написать:</p>



<pre class="wp-block-code"><code>echo $echo;</code></pre>



<p>Если нам нужно вернуть html код этого класса а не вывести на экран используем следующий метод:&nbsp;<strong>$echo-&gt;htmlOuter();</strong></p>



<pre class="wp-block-code"><code>var_dump($echo->htmlOuter());

/* RESULT
string(34) "
&lt;div class="content">Content&lt;/div>
" 
*/</code></pre>



<p><strong>$echo-&gt;html();</strong> &#8212; вернет содержимое без родительского искомого класса. То есть без &#171;&lt;div class=&#187;content&#187;&gt;&lt;/div&gt;&#187;</p>



<p><strong>$echo-&gt;getString();</strong> &#8212; вернет массив текста без тегов.</p>



<p>Полный список методов есть в официальной документации этой библиотеки.</p>



<h3 class="wp-block-heading">Полный код сегодняшнего урока:</h3>



<pre class="wp-block-code"><code>&lt;?php
include_once 'phpQuery.php';

$html = &lt;&lt;&lt;CONTENT
&lt;div class="test">
 &lt;h1>Title&lt;/h1>
 &lt;div class="content">Content&lt;/div>
&lt;/div>
CONTENT;

$document = phpQuery::newDocument($html);
$echo = $document->find('.content');

var_dump($echo->html());</code></pre>



<p>Еще один пример использования:</p>



<pre class="wp-block-code"><code>&lt;?php
include_once 'phpQuery.php';

$html = file_get_contents('http://wiki.pwodev.com');

$document = phpQuery::newDocument($html);

$echo_elements = $document->find('.post .title');

foreach ($echo_elements as $el) {
 $pq = pq($el); // Это аналог $ в jQuery

 $old_title = $pq->find('a')->getString()[0];
 $pq->find('a')->attr('href', 'http://wiki.pwodev.com/')->html('New title. Old - '.$old_title); // меняем атрибуты найденого элемента и контент

 $pq->find('div.remove_element')->remove(); // удаляем ненужный элемент

 $pq->find('a')->prepend('&lt;span>Title: &lt;/span>'); // добавляем контент в начало
 $pq->append('&lt;p>Next element&lt;/p>'); // добавляем контент в конец
}

var_dump($echo_elements->html());</code></pre>



<p>На этом пока все. Надеюсь всем было интересно и познавательно. Если кто-то хочет дополнить статью пишите в комментарии. Также добро пожаловать к нам в сообщество.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&#038;title=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" data-a2a-url="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/" data-a2a-title="Парсер сайтов и контента — phpQuery"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/">Парсер сайтов и контента &#8212; phpQuery</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Организация JavaScript файлов, модульный подход</title>
		<link>https://wiki.pwodev.com/organization-javascript-files/</link>
					<comments>https://wiki.pwodev.com/organization-javascript-files/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Thu, 16 Nov 2017 13:27:58 +0000</pubDate>
				<category><![CDATA[JS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Модульность]]></category>
		<category><![CDATA[Шаблон]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=278</guid>

					<description><![CDATA[<p>Не так давно столкнулся с одним сайтом где один javascript файл содержал больше чем 15 тысяч строк. В нем лежали все модули которые использовал сайт, часть кода была сжатая а другая часть читабельная. При попытке отформатировать код в PHPStorm, в коде появлялось неисчислимое количество ошибок. Было принято решение переделать всю структуру JS кода на сайте. [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/organization-javascript-files/">Организация JavaScript файлов, модульный подход</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Не так давно столкнулся с одним сайтом где один javascript файл содержал больше чем 15 тысяч строк. В нем лежали все модули которые использовал сайт, часть кода была сжатая а другая часть читабельная. При попытке отформатировать код в PHPStorm, в коде появлялось неисчислимое количество ошибок. Было принято решение переделать всю структуру JS кода на сайте. Но как часто бывает, времени на это было очень мало, и поэтому быстрый фикс был &#8212; хардкод. Но с оговоркой что когда-нибудь вернемся и все переделаем. И вот наконец-то время это пришло.</p>



<p>Для начала было решено разбить код на части, на отдельные файлы, и каждый кусок функционала выносить в отдельный файл. Так же пригодился модульный подход при работе с JS. Полностью писать статью о том как это все делалось времени не хватит, ибо работы много. Вам лишь приведу в пример заготовку, шаблон, темплейт каждого отдельного JS файла.</p>



<p><strong>Пример JS кода:</strong></p>



<pre class="wp-block-code"><code>/**
 * =====================================================================================================================
 * App
 * =====================================================================================================================
 */
var App = (function (r, $) {
 "use strict";

 /**
  * private options
  * =================================================================================================================
  */
 var private_option_1;
 var private_option_2;

 /**
  * private method 1
  * =================================================================================================================
  */
 function private_method_1() {
 // code
 }

 /**
  * private method 2
  * =================================================================================================================
  */
 function private_method_2() {
 // code
 }

 /**
  * public options
  * =================================================================================================================
  */
 r.public_option_1 = 'public_option_1';
 r.public_option_2 = 'public_option_2';

 /**
  * public method 1
  * =================================================================================================================
  */
 r.public_method_1 = function() {
 // code
 };

 /**
  * public method 2
  * =================================================================================================================
  */
 r.public_method_2 = function() {
 // code
 };

 /**
  * return
  * =================================================================================================================
  */
 return r;

})(App || {}, jQuery);

console.log(App);</code></pre>



<p>Если имеются дополнения пишите в комментариях, будем добавлять.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&amp;linkname=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2Forganization-javascript-files%2F&#038;title=%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20JavaScript%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4" data-a2a-url="https://wiki.pwodev.com/organization-javascript-files/" data-a2a-title="Организация JavaScript файлов, модульный подход"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/organization-javascript-files/">Организация JavaScript файлов, модульный подход</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/organization-javascript-files/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>jQuery touch swipe или как отследить жесты</title>
		<link>https://wiki.pwodev.com/jquery-touch-swipe/</link>
					<comments>https://wiki.pwodev.com/jquery-touch-swipe/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 06:58:09 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Жесты]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=136</guid>

					<description><![CDATA[<p>Что такое жесты и какие они бывают: Swipe &#8212; пролистывание как слайд, обычно используется для открытия меню жестом, провести пальцем по экрану слева на право чтобы открылось меню. hold &#8212; событие долгому длинному нажатию Для того чтобы отследить жесты как на мобильном устройстве iPhone или Android или любой другой mobile, проще всего подключить библиотеку&#160;jquery.touchSwipe.min.js. Дальше [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/jquery-touch-swipe/">jQuery touch swipe или как отследить жесты</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Что такое жесты и какие они бывают:</p>



<ul class="wp-block-list"><li>Swipe &#8212; пролистывание как слайд, обычно используется для открытия меню жестом, провести пальцем по экрану слева на право чтобы открылось меню.</li><li>hold &#8212; событие долгому длинному нажатию</li></ul>



<p>Для того чтобы отследить жесты как на мобильном устройстве iPhone или Android или любой другой mobile, проще всего подключить библиотеку&nbsp;<a href="http://wiki.pwodev.com/wp-content/uploads/2017/10/jquery.touchSwipe.min_.js.zip">jquery.touchSwipe.min.js</a>. Дальше привязываем событие к нужному нам элементу:</p>



<pre class="wp-block-code"><code>jQuery('body').swipe({
 swipe:function(event, direction, distance, duration, fingerCount, fingerData) {
 console.log(direction);
 }
});</code></pre>



<p>Теперь мы можем дополнять наш сайт жестами.</p>



<p>Если нам нужно чтобы событие жест сработал в реальном времени или через определенное количество пикселей пишем такую функцию:</p>



<pre class="wp-block-code"><code>jQuery('body').swipe( {
    swipeStatus:function(event, phase, direction, distance, duration, fingerCount, fingerData, currentDirection)
    {
        if (phase=="start"){
            // сработает в начале swipe
        } 
        if (phase=="end"){ 
            //сработает через 20 пикселей то число которое выбрали в threshold
            if (direction == 'left') {
                //сработает при движении влево
            }
            if (direction == 'right') {
                //сработает при движении вправо
            }
            if (direction == 'up') {
                //сработает при движении вверх
            }
            if (direction == 'down') {
                //сработает при движении вниз
            }
 },
 triggerOnTouchEnd:false,
 threshold:20 // сработает через 20 пикселей
});</code></pre>



<h5 class="wp-block-heading">Параметры:</h5>



<p><strong>event</strong> &#8212; стандартный ивент, тут можно посмотреть по какому элементу сработал скрипт</p>



<pre class="wp-block-code"><code>jQuery(event.target)</code></pre>



<p><strong>phase</strong></p>



<ul class="wp-block-list"><li><em>start</em> &#8212; указывает начальную фазу события касания</li><li><em>move</em> &#8212; указывает на событие перемещения</li><li><em>end</em> &#8212; указывает на завершение события</li><li><em>cancel</em> &#8212; указывает на отмену события</li></ul>



<p><strong>direction</strong></p>



<ul class="wp-block-list"><li><em>left</em> &#8212; указывает на передвижение влево</li><li><em>right</em> &#8212; указывает на передвижение вправо</li><li><em>up</em> &#8212; указывает на передвижение вверх</li><li><em>down</em> &#8212; указывает на передвижение вниз</li><li><em>in</em> &#8212; указывает на событие помещения в обьект</li><li><em>out</em> &#8212; указывает на событие выхода из обьекта</li></ul>



<p><strong>distance</strong> &#8212; расстояние которое пользователь пролистал</p>



<p><strong>duration</strong> &#8212; продолжительность пролистывания в миллисекундах</p>



<p><strong>fingerCount</strong> &#8212; количество пальцев при таче</p>



<p><strong>fingerData</strong> &#8212; координаты пальцев при событии тач</p>



<p><strong>currentDirection</strong> &#8212; текущее направление движения тача</p>



<p><a href="http://labs.rampinteractive.co.uk/touchSwipe" target="_blank" rel="noopener noreferrer">Сайт библиотеки плагина и документации к плагину</a></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&amp;linkname=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2Fjquery-touch-swipe%2F&#038;title=jQuery%20touch%20swipe%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B6%D0%B5%D1%81%D1%82%D1%8B" data-a2a-url="https://wiki.pwodev.com/jquery-touch-swipe/" data-a2a-title="jQuery touch swipe или как отследить жесты"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/jquery-touch-swipe/">jQuery touch swipe или как отследить жесты</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/jquery-touch-swipe/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
