0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Терминология - перед началом обучения</a></li>
1
<ul><li><a>Терминология - перед началом обучения</a></li>
2
<li><a>О выполнении цикла - синхронная работа</a></li>
2
<li><a>О выполнении цикла - синхронная работа</a></li>
3
<li><a>Как быть с JS - сколько потоков может обрабатывать</a><ul><li><a>Исторические изменения</a></li>
3
<li><a>Как быть с JS - сколько потоков может обрабатывать</a><ul><li><a>Исторические изменения</a></li>
4
</ul></li>
4
</ul></li>
5
<li><a>Асинхронность - понятие и особенности</a></li>
5
<li><a>Асинхронность - понятие и особенности</a></li>
6
<li><a>Инструмент Worker</a><ul><li><a>Идеи</a></li>
6
<li><a>Инструмент Worker</a><ul><li><a>Идеи</a></li>
7
<li><a>Поддержка - есть или нет</a></li>
7
<li><a>Поддержка - есть или нет</a></li>
8
<li><a>Возможности</a></li>
8
<li><a>Возможности</a></li>
9
<li><a>Ограничения доступа</a></li>
9
<li><a>Ограничения доступа</a></li>
10
<li><a>Наглядный пример работы</a></li>
10
<li><a>Наглядный пример работы</a></li>
11
</ul></li>
11
</ul></li>
12
<li><a>"Технологии" Async/Await</a><ul><li><a>Промисы в помощь</a></li>
12
<li><a>"Технологии" Async/Await</a><ul><li><a>Промисы в помощь</a></li>
13
</ul></li>
13
</ul></li>
14
<li><a>Полноценный движок</a><ul><li><a>Функции, возможности, преимущества</a></li>
14
<li><a>Полноценный движок</a><ul><li><a>Функции, возможности, преимущества</a></li>
15
<li><a>Где лучше всего использовать</a></li>
15
<li><a>Где лучше всего использовать</a></li>
16
</ul></li>
16
</ul></li>
17
<li><a>Как разобраться в JS и потоках: советы</a></li>
17
<li><a>Как разобраться в JS и потоках: советы</a></li>
18
</ul><p>Программирование на JS пользуется спросом у многих современных разработчиков. Этот язык активно применяется для веб-контента. Именно для таких целей он изначально был создан.</p>
18
</ul><p>Программирование на JS пользуется спросом у многих современных разработчиков. Этот язык активно применяется для веб-контента. Именно для таких целей он изначально был создан.</p>
19
<p>По мере развития JavaScript перетерпел огромное количество изменений. Многие сделали язык более функциональным. Большая часть корректировок основана на поточности. Именно о ней пойдет речь далее. Информация будет полезна как новичкам, так и тем, кто уже знаком с основами программирования.</p>
19
<p>По мере развития JavaScript перетерпел огромное количество изменений. Многие сделали язык более функциональным. Большая часть корректировок основана на поточности. Именно о ней пойдет речь далее. Информация будет полезна как новичкам, так и тем, кто уже знаком с основами программирования.</p>
20
<h2>Терминология - перед началом обучения</h2>
20
<h2>Терминология - перед началом обучения</h2>
21
<p>Но сначала стоит освежить в памяти некоторые термины. Без их понимания не выйдет нормального коддинга:</p>
21
<p>Но сначала стоит освежить в памяти некоторые термины. Без их понимания не выйдет нормального коддинга:</p>
22
<ul><li>алгоритмы - последовательности манипуляций, которые помогают разрешать поставленные перед программером задачи;</li>
22
<ul><li>алгоритмы - последовательности манипуляций, которые помогают разрешать поставленные перед программером задачи;</li>
23
<li>API - правила и принципы с процедурами, протоколами, необходимыми для создания программного обеспечения;</li>
23
<li>API - правила и принципы с процедурами, протоколами, необходимыми для создания программного обеспечения;</li>
24
<li>объект - связанные между собой константы, переменные, структурные сведения, которые можно обрабатывать совместно;</li>
24
<li>объект - связанные между собой константы, переменные, структурные сведения, которые можно обрабатывать совместно;</li>
25
<li>классы - группы связанных между собой объектов с одинаковыми свойствами;</li>
25
<li>классы - группы связанных между собой объектов с одинаковыми свойствами;</li>
26
<li>компиляция - создание исполняемой утилиты посредством написанного кода;</li>
26
<li>компиляция - создание исполняемой утилиты посредством написанного кода;</li>
27
<li>константа - неизменяемое значение, встречающееся при функционировании софта;</li>
27
<li>константа - неизменяемое значение, встречающееся при функционировании софта;</li>
28
<li>массив - группа или перечень похожих между собой электронных сведений, подлежащих группировке;</li>
28
<li>массив - группа или перечень похожих между собой электронных сведений, подлежащих группировке;</li>
29
<li>переменная - минимальное хранилище информации;</li>
29
<li>переменная - минимальное хранилище информации;</li>
30
<li>бесконечный цикл - непрерывное, постоянное повторение элемента программы, которое не останавливается;</li>
30
<li>бесконечный цикл - непрерывное, постоянное повторение элемента программы, которое не останавливается;</li>
31
<li>цикл - период "жизни" программного кода или его части;</li>
31
<li>цикл - период "жизни" программного кода или его части;</li>
32
<li>оператор - объект, умеющий управлять операндами;</li>
32
<li>оператор - объект, умеющий управлять операндами;</li>
33
<li>операнд - объект, подлежащий манипулированию (управлению);</li>
33
<li>операнд - объект, подлежащий манипулированию (управлению);</li>
34
<li>время выполнения (рантайм) - время, за которое приложение будет выполняться на устройстве.</li>
34
<li>время выполнения (рантайм) - время, за которое приложение будет выполняться на устройстве.</li>
35
</ul><p>Теперь с понятиями потоков (threads) и многопоточности контактировать будет намного проще. Без первоначальных знаний в сфере программирования разобраться с соответствующей тематикой достаточно трудно.</p>
35
</ul><p>Теперь с понятиями потоков (threads) и многопоточности контактировать будет намного проще. Без первоначальных знаний в сфере программирования разобраться с соответствующей тематикой достаточно трудно.</p>
36
<h2>О выполнении цикла - синхронная работа</h2>
36
<h2>О выполнении цикла - синхронная работа</h2>
37
<p>При выполнении кода программеру предстоит иметь дело с разнообразными возможностями и манипуляциями. Они обрабатываются устройством в том или ином порядке.</p>
37
<p>При выполнении кода программеру предстоит иметь дело с разнообразными возможностями и манипуляциями. Они обрабатываются устройством в том или ином порядке.</p>
38
<p>"Классический" вариант называется последовательным. Или "синхронный". В данном случае выполнение функций или участков кода осуществляется последовательно. А именно:</p>
38
<p>"Классический" вариант называется последовательным. Или "синхронный". В данном случае выполнение функций или участков кода осуществляется последовательно. А именно:</p>
39
<ul><li>Начинается обработка первой операции или задачи.</li>
39
<ul><li>Начинается обработка первой операции или задачи.</li>
40
<li>Осуществляется выполнение соответствующего участка кодификации в JS или на другом желаемом языке.</li>
40
<li>Осуществляется выполнение соответствующего участка кодификации в JS или на другом желаемом языке.</li>
41
<li>Первая операция завершается.</li>
41
<li>Первая операция завершается.</li>
42
<li>Начинается обработка и реализация второй операции.</li>
42
<li>Начинается обработка и реализация второй операции.</li>
43
</ul><p> При подобных обстоятельствах имеет место синхронный код. Функции и элементы программы будут выполняться друг за другом. Если устройству пошлют сразу несколько команд, оно поставит все их в очередь. Далее - обработает в выстроенной последовательности.</p>
43
</ul><p> При подобных обстоятельствах имеет место синхронный код. Функции и элементы программы будут выполняться друг за другом. Если устройству пошлют сразу несколько команд, оно поставит все их в очередь. Далее - обработает в выстроенной последовательности.</p>
44
<h2>Как быть с JS - сколько потоков может обрабатывать</h2>
44
<h2>Как быть с JS - сколько потоков может обрабатывать</h2>
45
<p>JS - язык программирования, который изначально задумывался как однопоточный. Это значит, что в одном и том же процессе обрабатывается единственный имеющийся набор инструкций. Такой подход можно использовать для облегчения задач, поставленных перед разработчиками.</p>
45
<p>JS - язык программирования, который изначально задумывался как однопоточный. Это значит, что в одном и том же процессе обрабатывается единственный имеющийся набор инструкций. Такой подход можно использовать для облегчения задач, поставленных перед разработчиками.</p>
46
<p>Java Script на первых порах считался языком, используемым исключительно для добавления интерактивных возможностей на веб-странички. Пример - проверка форм. Для более сложных задач подобный способ общения с программным обеспечением не применялся. Поэтому иногда его называли блокирующим.</p>
46
<p>Java Script на первых порах считался языком, используемым исключительно для добавления интерактивных возможностей на веб-странички. Пример - проверка форм. Для более сложных задач подобный способ общения с программным обеспечением не применялся. Поэтому иногда его называли блокирующим.</p>
47
<h3>Исторические изменения</h3>
47
<h3>Исторические изменения</h3>
48
<p>Но с развитием технологий и прогресса Риан Даль смог круто изменить имеющуюся картину. JS стал полноценным языком программирования, который применяется для решения даже весьма сложных задач в веб-коддинге. И некоторые команды приходится обрабатывать "одновременно". То есть, параллельно.</p>
48
<p>Но с развитием технологий и прогресса Риан Даль смог круто изменить имеющуюся картину. JS стал полноценным языком программирования, который применяется для решения даже весьма сложных задач в веб-коддинге. И некоторые команды приходится обрабатывать "одновременно". То есть, параллельно.</p>
49
<p>При помощи специальных приемов и движков можно реализовать асинхронность. В этом случае система возвращает значение не одной функции кода, а нескольких при непосредственной обработке. Подобное решение позволяет использовать Джаву для сложных задач, но не во всех случаях.</p>
49
<p>При помощи специальных приемов и движков можно реализовать асинхронность. В этом случае система возвращает значение не одной функции кода, а нескольких при непосредственной обработке. Подобное решение позволяет использовать Джаву для сложных задач, но не во всех случаях.</p>
50
<p>Важно: асинхронность иногда приводит к проблемам чтения кодификации, поэтому с данной возможностью необходимо быть очень острожными.</p>
50
<p>Важно: асинхронность иногда приводит к проблемам чтения кодификации, поэтому с данной возможностью необходимо быть очень острожными.</p>
51
<h2>Асинхронность - понятие и особенности</h2>
51
<h2>Асинхронность - понятие и особенности</h2>
52
<p>Асинхронность - это многопоточность. В Java Script изначально не предусмотрена, но ее можно добиться через специальные методы, классы, операции, а также движки.</p>
52
<p>Асинхронность - это многопоточность. В Java Script изначально не предусмотрена, но ее можно добиться через специальные методы, классы, операции, а также движки.</p>
53
<p>Асинхронность предусматривает следующий вариант работы:</p>
53
<p>Асинхронность предусматривает следующий вариант работы:</p>
54
<ol><li>Даны две строчки кода, идущие друг за другом. Первая - строчка, требующая определенного времени на обработку.</li>
54
<ol><li>Даны две строчки кода, идущие друг за другом. Первая - строчка, требующая определенного времени на обработку.</li>
55
<li>Первая строка начинает обрабатываться в фоновом режиме.</li>
55
<li>Первая строка начинает обрабатываться в фоновом режиме.</li>
56
<li>В этот момент осуществляется чтение и запуск второй строки. Это происходит без ожидания завершения первой операции.</li>
56
<li>В этот момент осуществляется чтение и запуск второй строки. Это происходит без ожидания завершения первой операции.</li>
57
</ol><p>Именно такой "цикл" называется асинхронным. Он требует определенного количества времени, а также ресурсов задействованного устройства. События при подобных обстоятельствах будут обрабатываться быстрее, если разработчик имеет мощный компьютер.</p>
57
</ol><p>Именно такой "цикл" называется асинхронным. Он требует определенного количества времени, а также ресурсов задействованного устройства. События при подобных обстоятельствах будут обрабатываться быстрее, если разработчик имеет мощный компьютер.</p>
58
<p>Пример асинхронности - любая современная операционная система. В них используется этот прием, чтобы пользователь мог параллельно выполнять множество функций: слушать музыку, работать в интернете, запускать несколько программ, а также просматривать картинки и многое другое.</p>
58
<p>Пример асинхронности - любая современная операционная система. В них используется этот прием, чтобы пользователь мог параллельно выполнять множество функций: слушать музыку, работать в интернете, запускать несколько программ, а также просматривать картинки и многое другое.</p>
59
<h2>Инструмент Worker</h2>
59
<h2>Инструмент Worker</h2>
60
<p>Программисты решили задачу многопоточности в JS интересным способом - создали специальный инструмент реализации нескольких функций кода одновременно. Он должен помочь при создании сложных браузерных утилит. Называется Worker.</p>
60
<p>Программисты решили задачу многопоточности в JS интересным способом - создали специальный инструмент реализации нескольких функций кода одновременно. Он должен помочь при создании сложных браузерных утилит. Называется Worker.</p>
61
<h3>Идеи</h3>
61
<h3>Идеи</h3>
62
<p>Воркер лучше всего подходит для реализации следующих идей:</p>
62
<p>Воркер лучше всего подходит для реализации следующих идей:</p>
63
<ul><li>обработка тяжелых операций, которые могут выполнять асинхронно без блокировки работы интернет-обозревателя;</li>
63
<ul><li>обработка тяжелых операций, которые могут выполнять асинхронно без блокировки работы интернет-обозревателя;</li>
64
<li>вынесение описанных выше манипуляций в отдельные файлы-модули;</li>
64
<li>вынесение описанных выше манипуляций в отдельные файлы-модули;</li>
65
<li>создание для каждого подобного файла браузера объекта Worker, используемого для коммуникаций.</li>
65
<li>создание для каждого подобного файла браузера объекта Worker, используемого для коммуникаций.</li>
66
</ul><p>При использовании технологий типа Web Worker удается избежать перегрузки браузера и остановки тех или иных скриптов при выполнении сразу нескольких операций.</p>
66
</ul><p>При использовании технологий типа Web Worker удается избежать перегрузки браузера и остановки тех или иных скриптов при выполнении сразу нескольких операций.</p>
67
<h3>Поддержка - есть или нет</h3>
67
<h3>Поддержка - есть или нет</h3>
68
<p>Перед тем, как применять в интернет-обозревателе рассматриваемую технологию, требуется удостовериться в том, что имеет место поддержка оной. Для этого нужно осуществить проверку объекта window.Worker.</p>
68
<p>Перед тем, как применять в интернет-обозревателе рассматриваемую технологию, требуется удостовериться в том, что имеет место поддержка оной. Для этого нужно осуществить проверку объекта window.Worker.</p>
69
<h3>Возможности</h3>
69
<h3>Возможности</h3>
70
<p>Асинхронный код, реализованный через технологию Worker позволяет обращаться к определенному функционалу, чтобы получить ожидаемый результат. Но данный вариант обладает рядом ограничений, достойных внимания.</p>
70
<p>Асинхронный код, реализованный через технологию Worker позволяет обращаться к определенному функционалу, чтобы получить ожидаемый результат. Но данный вариант обладает рядом ограничений, достойных внимания.</p>
71
<p>Обращаться в процессе работы с Worker-скриптами можно к:</p>
71
<p>Обращаться в процессе работы с Worker-скриптами можно к:</p>
72
<ul><li>объекту navigator;</li>
72
<ul><li>объекту navigator;</li>
73
<li>импорту внешних скриптов с методов importScripts();</li>
73
<li>импорту внешних скриптов с методов importScripts();</li>
74
<li>созданию разнообразных объектов через Web Worker;</li>
74
<li>созданию разнообразных объектов через Web Worker;</li>
75
<li>setTimeout()/clearTimeout()/SetInterval()/clearInterval();</li>
75
<li>setTimeout()/clearTimeout()/SetInterval()/clearInterval();</li>
76
<li>XMLHttpRequest;</li>
76
<li>XMLHttpRequest;</li>
77
<li>кэшу приложений;</li>
77
<li>кэшу приложений;</li>
78
<li>объекту location (только для чтения).</li>
78
<li>объекту location (только для чтения).</li>
79
</ul><p>После изучения доступных скриптовых возможностей Воркера стоит рассмотреть имеющиеся ограничения.</p>
79
</ul><p>После изучения доступных скриптовых возможностей Воркера стоит рассмотреть имеющиеся ограничения.</p>
80
<h3>Ограничения доступа</h3>
80
<h3>Ограничения доступа</h3>
81
<p>Worker-скрипт не имеет доступа к следующим функциям и возможностям:</p>
81
<p>Worker-скрипт не имеет доступа к следующим функциям и возможностям:</p>
82
<ul><li>модели DOM;</li>
82
<ul><li>модели DOM;</li>
83
<li>объекты windows;</li>
83
<li>объекты windows;</li>
84
<li>элемент document;</li>
84
<li>элемент document;</li>
85
<li>объект типа parent.</li>
85
<li>объект типа parent.</li>
86
</ul><p>Стоит обратить внимание на то, что методы postMessage и onMessage выступают в качестве глобальных для рассматриваемого инструментария. К оным допускается обращение несколькими способами: напрямую или посредством self/this.</p>
86
</ul><p>Стоит обратить внимание на то, что методы postMessage и onMessage выступают в качестве глобальных для рассматриваемого инструментария. К оным допускается обращение несколькими способами: напрямую или посредством self/this.</p>
87
<p>Предельное количество воркеров составляет 256 штук. После этого стек будет считаться переполненным. На экране появится характерное сообщение об ошибке.</p>
87
<p>Предельное количество воркеров составляет 256 штук. После этого стек будет считаться переполненным. На экране появится характерное сообщение об ошибке.</p>
88
<p>Важно: для подписки на отлов ошибок рекомендуется использовать следующую функцию.</p>
88
<p>Важно: для подписки на отлов ошибок рекомендуется использовать следующую функцию.</p>
89
<h3>Наглядный пример работы</h3>
89
<h3>Наглядный пример работы</h3>
90
<p>Чтобы понять, как использовать Workers, рекомендуется рассмотреть наглядный пример. В нем:</p>
90
<p>Чтобы понять, как использовать Workers, рекомендуется рассмотреть наглядный пример. В нем:</p>
91
<ul><li>имеются два файла-документа: основной и воркера;</li>
91
<ul><li>имеются два файла-документа: основной и воркера;</li>
92
<li>основной называется test.html и пишется внутри HTML-файла;</li>
92
<li>основной называется test.html и пишется внутри HTML-файла;</li>
93
<li>воркер обладает названием - worker.js;</li>
93
<li>воркер обладает названием - worker.js;</li>
94
<li>нужно вывести на экран простые числа в установленных рамках - выносится в отдельный фоновый поток;</li>
94
<li>нужно вывести на экран простые числа в установленных рамках - выносится в отдельный фоновый поток;</li>
95
<li>код рассматриваемой функции будет расположен в файле worker.js.</li>
95
<li>код рассматриваемой функции будет расположен в файле worker.js.</li>
96
</ul><p>Отсюда следует, что документ Test выглядит так:</p>
96
</ul><p>Отсюда следует, что документ Test выглядит так:</p>
97
<p>А сам Воркер:</p>
97
<p>А сам Воркер:</p>
98
<h2>"Технологии" Async/Await</h2>
98
<h2>"Технологии" Async/Await</h2>
99
<p>Асинхронные функции выступают в качестве дополнений к основному синтаксису языка. Они предназначаются для упрощения/ускорения работы некоторых операций при составлении кода.</p>
99
<p>Асинхронные функции выступают в качестве дополнений к основному синтаксису языка. Они предназначаются для упрощения/ускорения работы некоторых операций при составлении кода.</p>
100
<p>Если пользоваться async/await, удастся достаточно легко решить проблемы асинхронности в JS. Классы здесь ведут себя как схемы, используемые при создании экземпляров объектов. Prototype служит экземпляром, которому остальные похожие элементы "поручают" основную работу. Не является шаблоном или схемой.</p>
100
<p>Если пользоваться async/await, удастся достаточно легко решить проблемы асинхронности в JS. Классы здесь ведут себя как схемы, используемые при создании экземпляров объектов. Prototype служит экземпляром, которому остальные похожие элементы "поручают" основную работу. Не является шаблоном или схемой.</p>
101
<p>Пользуясь Async/await, можно:</p>
101
<p>Пользуясь Async/await, можно:</p>
102
<ul><li>добавить новый метод для Array;</li>
102
<ul><li>добавить новый метод для Array;</li>
103
<li>учесть, что после этого все массивы смогут задействовать оный метод;</li>
103
<li>учесть, что после этого все массивы смогут задействовать оный метод;</li>
104
<li>осуществляется задача посредством затрагивания объекта, назначенного в качестве экземпляра.</li>
104
<li>осуществляется задача посредством затрагивания объекта, назначенного в качестве экземпляра.</li>
105
</ul><p>Async функции - функции, которые осуществляют возврат так называемых промисов.</p>
105
</ul><p>Async функции - функции, которые осуществляют возврат так называемых промисов.</p>
106
<p>Вот пример кода:</p>
106
<p>Вот пример кода:</p>
107
var someArray = [1, 2, 3]; Array.prototype.newMethod = function() { console.log(‘I am a new method!’); }; someArray.newMethod(); // I am a new method! // С реальными классами данная кодификация невозможна.<h3>Промисы в помощь</h3>
107
var someArray = [1, 2, 3]; Array.prototype.newMethod = function() { console.log(‘I am a new method!’); }; someArray.newMethod(); // I am a new method! // С реальными классами данная кодификация невозможна.<h3>Промисы в помощь</h3>
108
<p>Еще один вариант работы с асинхронностью - это promise. Лежат в основе Async function. Являются обязательными для понимания с многопоточностью в Джаве Скрипт.</p>
108
<p>Еще один вариант работы с асинхронностью - это promise. Лежат в основе Async function. Являются обязательными для понимания с многопоточностью в Джаве Скрипт.</p>
109
<p>Промис - специальный объект, который является асинхронным таском. Он должен обязательно завершиться. Имеет несколько состояний:</p>
109
<p>Промис - специальный объект, который является асинхронным таском. Он должен обязательно завершиться. Имеет несколько состояний:</p>
110
<ul><li>ожидание;</li>
110
<ul><li>ожидание;</li>
111
<li>решение;</li>
111
<li>решение;</li>
112
<li>отклонение.</li>
112
<li>отклонение.</li>
113
</ul><p>Стоит обратить внимание на то, что если промис выкинут из-за исключений, произойдет поглощение соответствующих исключений. Соответственно, promise способен полностью разрушить имеющийся код или написанную функцию.</p>
113
</ul><p>Стоит обратить внимание на то, что если промис выкинут из-за исключений, произойдет поглощение соответствующих исключений. Соответственно, promise способен полностью разрушить имеющийся код или написанную функцию.</p>
114
<p>В данной<a>статье</a>можно увидеть больше примеров по принципам работы промисов и<a>Async</a>.</p>
114
<p>В данной<a>статье</a>можно увидеть больше примеров по принципам работы промисов и<a>Async</a>.</p>
115
<h2>Полноценный движок</h2>
115
<h2>Полноценный движок</h2>
116
<p>Несмотря на то, что многопоточность предусматривает разнообразные способы реализации в JavaScript, программисты стараются прибегать к более простым вариантам. Пример - задействование специальных двжиков. С ними не придется применять функции обратного вызова и промисы.</p>
116
<p>Несмотря на то, что многопоточность предусматривает разнообразные способы реализации в JavaScript, программисты стараются прибегать к более простым вариантам. Пример - задействование специальных двжиков. С ними не придется применять функции обратного вызова и промисы.</p>
117
<p>Наиболее интересным вариантом является так называемый NodeJS. Это самостоятельный движок, с которым можно реализовывать многопоточность (multi thread) в Джаве Скрипт. Выступает серверной платформой для работы с JS. Позволяет создавать разнообразные сложные веб-приложения.</p>
117
<p>Наиболее интересным вариантом является так называемый NodeJS. Это самостоятельный движок, с которым можно реализовывать многопоточность (multi thread) в Джаве Скрипт. Выступает серверной платформой для работы с JS. Позволяет создавать разнообразные сложные веб-приложения.</p>
118
<h3>Функции, возможности, преимущества</h3>
118
<h3>Функции, возможности, преимущества</h3>
119
<p>Node - программная платформа, которая делает JS еще более совершенным. Программеры давно знают, что данный язык легко выучить, но на практике он применяется с трудом. Особенно при написании сложного программного обеспечения.</p>
119
<p>Node - программная платформа, которая делает JS еще более совершенным. Программеры давно знают, что данный язык легко выучить, но на практике он применяется с трудом. Особенно при написании сложного программного обеспечения.</p>
120
<p>Node позволяет:</p>
120
<p>Node позволяет:</p>
121
<ul><li>делать из JS язык общего назначения;</li>
121
<ul><li>делать из JS язык общего назначения;</li>
122
<li>работать с несколькими потоками одновременно;</li>
122
<li>работать с несколькими потоками одновременно;</li>
123
<li>взаимодействовать с вводом-выводом через собственный API (он написан на C++);</li>
123
<li>взаимодействовать с вводом-выводом через собственный API (он написан на C++);</li>
124
<li>подключать внешние библиотеки, составленные посредством иных языков программирования.</li>
124
<li>подключать внешние библиотеки, составленные посредством иных языков программирования.</li>
125
</ul><p>Впервые платформа появилась в 2009 году. Сейчас это - мощная платформа для масштабирования и асинхронной работы. За счет данной "утилиты" получается рационально расходовать и распределять имеющиеся машинные ресурсы. Пример - под каждое имеющееся подключение Node будет осуществлять выделение отдельного потока.</p>
125
</ul><p>Впервые платформа появилась в 2009 году. Сейчас это - мощная платформа для масштабирования и асинхронной работы. За счет данной "утилиты" получается рационально расходовать и распределять имеющиеся машинные ресурсы. Пример - под каждое имеющееся подключение Node будет осуществлять выделение отдельного потока.</p>
126
<p>Важно: Node совмещается с веб-браузерами, а также Linux, Windows и MacOS.</p>
126
<p>Важно: Node совмещается с веб-браузерами, а также Linux, Windows и MacOS.</p>
127
<h3>Где лучше всего использовать</h3>
127
<h3>Где лучше всего использовать</h3>
128
<p>Хороший программер всегда задумывается над тем, когда использовать те или иные возможности языков программирования. В случае с Node лучше всего применять его в контенте:</p>
128
<p>Хороший программер всегда задумывается над тем, когда использовать те или иные возможности языков программирования. В случае с Node лучше всего применять его в контенте:</p>
129
<ul><li>который активно связан с вводом и выводом информации;</li>
129
<ul><li>который активно связан с вводом и выводом информации;</li>
130
<li>задействованном для потоковой передачи электронных материалов;</li>
130
<li>задействованном для потоковой передачи электронных материалов;</li>
131
<li>интенсивного применения сведений в режиме реального времени (так называемый DIRT);</li>
131
<li>интенсивного применения сведений в режиме реального времени (так называемый DIRT);</li>
132
<li>одностраничного типа;</li>
132
<li>одностраничного типа;</li>
133
<li>в основе которого лежит JSON API.</li>
133
<li>в основе которого лежит JSON API.</li>
134
</ul><p>А вот для утилит, которые будут при работе сильно загружать и активно использовать центральный процессор Node.JS подходит плохо. Рекомендуется не применять данный движок для подобного софта. Это сильно замедлит работу кода.</p>
134
</ul><p>А вот для утилит, которые будут при работе сильно загружать и активно использовать центральный процессор Node.JS подходит плохо. Рекомендуется не применять данный движок для подобного софта. Это сильно замедлит работу кода.</p>
135
<h2>Как разобраться в JS и потоках: советы</h2>
135
<h2>Как разобраться в JS и потоках: советы</h2>
136
<p>Для того, чтобы лучше понимать потоки, const, promises и асинхронную работу функций в коде, рекомендуется получить соответствующее образование. Возможны следующие варианты развития событий:</p>
136
<p>Для того, чтобы лучше понимать потоки, const, promises и асинхронную работу функций в коде, рекомендуется получить соответствующее образование. Возможны следующие варианты развития событий:</p>
137
<ol><li>Получение образования в ВУЗе. По выпуску выдается диплом, но такой вариант отнимает много времени и средств. Узкую специализацию по программированию на JS в России найти трудно.</li>
137
<ol><li>Получение образования в ВУЗе. По выпуску выдается диплом, но такой вариант отнимает много времени и средств. Узкую специализацию по программированию на JS в России найти трудно.</li>
138
<li>Самообразование. Хороший вариант для тех, кто обладает самоконтролем. Никакого подтверждения знаний не будет, зато человек сможет самостоятельно учиться. Тогда, когда удобно. А еще у него останется много времени на практику и сбор портфолио. Наглядные коды и примеры работ при трудоустройстве дают определенные преимущества.</li>
138
<li>Самообразование. Хороший вариант для тех, кто обладает самоконтролем. Никакого подтверждения знаний не будет, зато человек сможет самостоятельно учиться. Тогда, когда удобно. А еще у него останется много времени на практику и сбор портфолио. Наглядные коды и примеры работ при трудоустройстве дают определенные преимущества.</li>
139
<li>Поступление в техникум. В этом случае стоит обратить внимание на направление "Программирование". Если есть - "Веб-программирование". Помогает в будущем поступить в ВУЗ. По выпуску выдается диплом о среднем профессиональном образовании. Недостаток лишь один - обучение охватывает программирование, функции, циклы и коддинг в общих чертах.</li>
139
<li>Поступление в техникум. В этом случае стоит обратить внимание на направление "Программирование". Если есть - "Веб-программирование". Помогает в будущем поступить в ВУЗ. По выпуску выдается диплом о среднем профессиональном образовании. Недостаток лишь один - обучение охватывает программирование, функции, циклы и коддинг в общих чертах.</li>
140
</ol><p>Еще один вариант развития событий - прохождение специализированных курсов. Сейчас ими можно пользоваться дистанционно. Преимуществ полно. А именно:</p>
140
</ol><p>Еще один вариант развития событий - прохождение специализированных курсов. Сейчас ими можно пользоваться дистанционно. Преимуществ полно. А именно:</p>
141
<ul><li>возможность учиться тогда, когда удобно;</li>
141
<ul><li>возможность учиться тогда, когда удобно;</li>
142
<li>для образовательного процесса требуется только подключение к интернету;</li>
142
<li>для образовательного процесса требуется только подключение к интернету;</li>
143
<li>наличие практики и возможность собрать портфолио;</li>
143
<li>наличие практики и возможность собрать портфолио;</li>
144
<li>лояльные сроки обучения - от пары месяцев до года.</li>
144
<li>лояльные сроки обучения - от пары месяцев до года.</li>
145
</ul><p>По выпуску выдается сертификат установленной формы. Можно подобрать узкоспециализированные https://otus.ru/catalog/courses?categories=programming на ДжавеСкрипт и не только. Предложения актуальны и для чайников, и для опытных программеров.</p>
145
</ul><p>По выпуску выдается сертификат установленной формы. Можно подобрать узкоспециализированные https://otus.ru/catalog/courses?categories=programming на ДжавеСкрипт и не только. Предложения актуальны и для чайников, и для опытных программеров.</p>
146
<a></a>
146
<a></a>