{"id":181536,"date":"2013-05-30T15:08:03","date_gmt":"2013-05-30T11:08:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=181536"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=181536","title":{"rendered":"<span class=\"post_title\">\u041f\u0443\u0442\u044c JavaScript \u043c\u043e\u0434\u0443\u043b\u044f<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/f75\/3b6\/6e5\/f753b66e57434dab766eb63110086560.png\" \/><\/div>\n<p>  \u041d\u0435 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 JavaScript \u0435\u0449\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0432\u0441\u0435 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u0430\u043a \u043c\u043e\u0433\u043b\u0438.<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u0438 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u043a\u0430\u043a. \u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0435\u043b\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442 \u0448\u0443\u043c\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u0434 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435.<\/p>\n<p>  \u0412\u043e\u0442 \u0432 JavaScript \u0441\u0432\u043e\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430 \u2014 \u0432 \u044f\u0437\u044b\u043a\u0435 \u043d\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043b\u0435\u0436\u0430\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e, \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439, \u0445\u0438\u0442\u0440\u043e \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0435\u0432\u0430\u0442\u044c \u0441 \u0434\u0432\u043e\u0439\u043d\u044b\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430.<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0430 JavaScript \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c DOM\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438. \u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438 \u043e \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0418 \u0442\u0443\u0442 \u0412\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043d\u0430\u0433\u0440\u044f\u043d\u0443\u043b\u043e! \u0412\u0441\u0435 \u0432\u0440\u043e\u0434\u0435-\u0431\u044b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0430 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 JavaScript, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0437\u0430\u043f\u0430\u0437\u0434\u044b\u0432\u0430\u044e\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0440\u0443\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0414\u0443\u043c\u0430\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0447\u0438\u0442\u0430\u043b\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e Addy Osmani <a href=\"http:\/\/addyosmani.com\/writing-modular-js\/\">Writing Modular JavaScript With AMD, CommonJS &#038; ES Harmony<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u043b\u0430\u0432 \u0435\u0433\u043e \u043a\u043d\u0438\u0433\u0438 <a href=\"http:\/\/addyosmani.com\/resources\/essentialjsdesignpatterns\/book\/#modularjavascript\">Learning JavaScript Design Patterns<\/a> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e \u00ab\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\u00bb JavaScript \u0438\u043b\u0438 \u0436\u0435 \u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"http:\/\/www.adequatelygood.com\/JavaScript-Module-Pattern-In-Depth.html\">JavaScript Module Pattern: In-Depth<\/a> 2010 \u0433\u043e\u0434\u0430 \u043f\u0440\u043e \u00ab\u0441\u0442\u0430\u0440\u044b\u0435\u00bb \u043c\u043e\u0434\u0443\u043b\u0438.<\/p>\n<p>  \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e\u043b\u044f\u043d\u043a\u0443. \u0412 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043c\u043e\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u043c \u043f\u0443\u0442\u0438. \u041e \u0442\u043e\u043c \u043a\u0430\u043a \u044f \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b \u043f\u0443\u0442\u044c \u043e\u0442 \u00ab\u0441\u0442\u0430\u0440\u044b\u0445\u00bb \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043a \u00ab\u043d\u043e\u0432\u044b\u043c\u00bb \u0438 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 3 \u0447\u0430\u0441\u0442\u0435\u0439: \u041f\u0443\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f, \u041c\u0430\u0442\u0447\u0430\u0441\u0442\u044c \u043f\u043e \u043a\u0438\u0448\u043a\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">tl;dr<\/b><\/p>\n<div class=\"spoiler_text\">\u042f \u043f\u0440\u043e\u0448\u0435\u043b \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0442 \u00ab\u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439\u00bb \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/requirejs.org\/docs\/whyamd.html#amd\">AMD<\/a> \u0438 <a href=\"http:\/\/browserify.org\/\">browserify<\/a> \u043a <a href=\"http:\/\/lmdjs.org\/\">LMD<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0449\u0435. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0434\u0435\u043b\u0430\u044e \u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0430 <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=harmony:modules\">ECMAScript 6 Modules<\/a>.  <\/div>\n<\/div>\n<p>  <\/p>\n<h4>\u041f\u0443\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f<\/h4>\n<p>  <\/p>\n<h5>\u042d\u0442\u0430\u043f 1: \u0411\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h5>\n<p>  \u0412 \u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434\u0430 JavaScript \u0431\u044b\u043b\u043e \u043c\u0430\u043b\u043e \u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u0438 \u0431\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438 \u0431\u044b \u043c\u043e\u0438 50 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0432 150. \u0418 \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c DOM \u044f \u043c\u043e\u0433 \u0438 \u0431\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u042f \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c\u0438 \u0438\u043c\u0435\u043d \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0431\u043e\u0440\u043a\u0443, \u0430 \u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0442\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u044b.<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c  <\/p>\n<pre><code class=\"javascript\">MyNs.MyModule = function () {}; MyNs.MyModule.prototype = { \t\/\/ ... }; <\/code><\/pre>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430  <\/p>\n<pre><code class=\"html\">&lt;script src=&quot;myNs.js&quot;\/&gt; &lt;script src=&quot;myNs\/myModule.js&quot;\/&gt; <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0448\u0430\u0433\u043d\u0443\u043b \u0435\u0449\u0435 \u043d\u0430 \u043f\u043e\u043b \u0448\u0430\u0433\u0430 \u0432\u043f\u0435\u0440\u0435\u0434, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cat  <\/p>\n<pre><code class=\"bash\">$ cat js\/*.js build.js <\/code><\/pre>\n<h5>\u042d\u0442\u0430\u043f 2: \u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433<\/h5>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438 \u043c\u043e\u0438 50 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 1500, \u044f \u0441\u0442\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u0418 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u0438\u0441\u0430\u043b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c Rich Internet Application. \u0414\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0440\u0435\u0448\u0430\u043b\u0430 \u043c\u043e\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u0441\u0442\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b. \u041c\u043e\u0434\u0443\u043b\u0435\u0439 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e, \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u043c\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u0442\u043e\u0433\u0434\u0430 \u0431\u044b\u043b \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d, \u0445\u043e\u0442\u044f \u0441 \u043d\u0438\u043c\u0438 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043d\u0438:  <\/p>\n<pre><code class=\"javascript\">if (typeof MyNamespace === 'undefined') {     var MyNamespace = {}; } <\/code><\/pre>\n<p>  \u0438 \u043b\u0438\u0448\u043d\u0435\u0439 \u043f\u0438\u0441\u0430\u043d\u0438\u043d\u044b:  <\/p>\n<pre><code class=\"javascript\">new MyNamespace.MyConstructor(MyNamespace.MY_CONST); \/\/ vs new MyConstructor(MY_CONST); <\/code><\/pre>\n<p>  \u0438 \u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u043e\u0445\u043e \u0441\u0436\u0438\u043c\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"javascript\">new a.MyConstructor(a.MY_CONST); \/\/ vs new a(b); <\/code><\/pre>\n<p>  \u041c\u043e\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0448\u0430\u0433\u043d\u0443\u043b\u0438 \u0435\u0449\u0435 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0432\u043f\u0435\u0440\u0435\u0434, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044e \u0438 \u0432\u044b\u043a\u0438\u043d\u0443\u043b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0435\u0433\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0418 \u0441\u0442\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438:  <\/p>\n<pre><code class=\"javascript\">include('deps\/dep1.js');  var MyModule = (function () { \tvar MyModule = function () {}; \tMyModule.prototype = { \t\t\/\/ ... \t};  \treturn MyModule; })(); <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443  <\/p>\n<pre><code class=\"javascript\">(function () { include('myModule.js'); }()); <\/code><\/pre>\n<p>  \u0418 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433  <\/p>\n<pre><code class=\"bash\">$ includify builds\/build.js index.js <\/code><\/pre>\n<p>  \u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u0430 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 IEFE. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u0430\u0434\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u043e\u0432.<\/p>\n<h5>\u042d\u0442\u0430\u043f 3: AMD<\/h5>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/bff\/a9d\/00e\/bffa9d00e252e3730d8f482cfdcf9f4d.png\"\/><br \/>  \u0412 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c, \u0447\u0438\u0442\u0430\u044f Reddit, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u043e AMD \u0438 RequireJS.<\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0434\u0435\u044f AMD \u0431\u044b\u043b\u0430 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0430 \u0438\u0437 <a href=\"http:\/\/yuilibrary.com\/yui\/docs\/yui\/create.html\">YUI Modules<\/a> \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u0434\u043e\u043f\u0438\u043b\u0435\u043d\u0430. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  \u0411\u044b\u043b\u043e  <\/p>\n<pre><code class=\"javascript\">YUI().use('dep1', function (Y) {     Y.dep1.sayHello(); }); <\/code><\/pre>\n<p>  \u0421\u0442\u0430\u043b\u043e  <\/p>\n<pre><code class=\"javascript\">require(['dep1'], function (dep1) {     dep1.sayHello(); }); <\/code><\/pre>\n<p>  \u041f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 AMD \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u043b \u043d\u0435 \u0442\u0430\u043a. \u0412\u0441\u0435\u0433\u043e 2 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>require()<\/code> \u0438 <code>define()<\/code> \u0438 \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u044b! \u041c\u043e\u0434\u0443\u043b\u0438 \u0441\u0442\u0430\u043b\u0438 \u0441\u0430\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442. \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043d\u0430 3 \u0447\u0430\u0441\u0442\u0438 (\u0438\u043c\u043f\u043e\u0440\u0442, \u044d\u043a\u0441\u043f\u043e\u0440\u0442, \u0442\u0435\u043b\u043e \u043c\u043e\u0434\u0443\u043b\u044f), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c. \u0422\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442. \u041a\u043e\u0434 \u0441\u0442\u0430\u043b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u044b\u043c!<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c  <\/p>\n<pre><code class=\"javascript\">define('myModule', ['dep1', 'dep2'], function (dep1, dep2) { \tvar MyModule = function () {}; \tMyModule.prototype = { \t\t\/\/ ... \t};  \treturn MyModule; }); <\/code><\/pre>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430  <\/p>\n<pre><code class=\"bash\">$ node r.js index.js bundle.js <\/code><\/pre>\n<p>  \u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e\u2026<\/p>\n<h5>\u042d\u0442\u0430\u043f 4: \u0420\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 AMD<\/h5>\n<p>  \u0422\u043e, \u0447\u0442\u043e \u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0432\u044b\u0448\u0435 \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430. \u0422\u0430\u043a\u043e\u0433\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442. \u0410 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435:  <\/p>\n<pre><code class=\"javascript\">require(['deps\/dep1', 'deps\/dep2', 'deps\/dep3', 'deps\/dep4', 'deps\/dep5', 'deps\/dep6', 'deps\/dep7'], function (     dep1,        dep2,        dep3,        dep4,        dep5,        dep6,        dep7) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0441 \u043d\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043d\u0438. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430 Simplified CommonJS. \u0415\u0449\u0435 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c <code>define()<\/code> \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u044b\u0439 CommonJS \u043c\u043e\u0434\u0443\u043b\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0445 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>r.js<\/code>.  <\/p>\n<pre><code class=\"javascript\">define(function (require, module, exports) {     var dep1 = require('dep1'),         dep2 = require('dep2'),         dep3 = require('dep3'),         dep4 = require('dep4'),         dep5 = require('dep5'),         dep6 = require('dep6'),         dep7 = require('dep7');      return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 Simplified CommonJS \u0434\u043b\u044f RequireJS \u00ab\u043d\u0435 \u0440\u043e\u0434\u043d\u043e\u0439\u00bb, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u0442\u043e RequireJS \u043d\u0430\u0447\u043d\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/739\/571\/f6e\/739571f6e2d3318bb1778249b09933b4.png\"\/><\/p>\n<p>  \u0418 \u043c\u043e\u0436\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u043d\u0430\u0439\u0442\u0438:  <\/p>\n<pre><code class=\"javascript\">require(&quot;myModule\/\/&quot;); require(&quot;my module&quot;); require(&quot;my&quot; + &quot;Module&quot;); var require = r; r(&quot;myModule&quot;); <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439, \u043d\u043e \u0442\u0443\u0442 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u044b, \u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0438 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u043d\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u043c\u0438-\u043b\u0438\u0431\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  RequireJS, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435:  <\/p>\n<pre><code class=\"javascript\">({     &quot;paths&quot;: {     \t&quot;myModule&quot;: &quot;modules\/myModule.js&quot;     } }) <\/code><\/pre>\n<p>  \u0415\u0449\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e(\u0448\u0430\u0431\u043b\u043e\u043d\u044b) \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0441\u0442\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439 \u0432\u0440\u043e\u0434\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430. \u0410 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438\u00bb \u0433\u043b\u0443\u043f\u043e \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445.<\/p>\n<p>  \u042f \u0441\u0442\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u044b\u0435 CommonJS \u043c\u043e\u0434\u0443\u043b\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 r.js \u0434\u0430\u0436\u0435 \u0432 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u043c\u0435\u043d\u0442\u0435. \u041e\u0442\u043a\u0430\u0437 \u043e\u0442 AMD \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441 Node.js \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043c\u0430\u0433\u0438\u0438. \u042f \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043d\u0435 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043d\u043e \u0441 \u043a\u043e\u0441\u0442\u044b\u043b\u044f\u043c\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439.<\/p>\n<p>  \u0422\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b RequireJS \u043c\u043d\u0435 \u0431\u044b\u043b\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043a\u043e\u0434 \u0432 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u043c\u0435\u043d\u0442\u0435 \u0438 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0434\u043e\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u043c\u0435\u043d\u0442\u0435 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0430 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0441\u0432\u043e\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 1 \u0444\u0430\u0439\u043b.<\/p>\n<p>  \u041a\u0430\u043a\u0430\u044f-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 (1 \u0437\u0430\u043f\u0440\u043e\u0441) \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0436\u0435 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e. \u0418 \u0434\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u043e\u043d\u0438 \u043d\u0435 \u043a\u0443\u0447\u0435\u0439 \u043c\u0435\u043b\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0430 \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c (\u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 1\u043c \u0444\u0430\u0439\u043b\u0435). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u043e \u0440\u0438\u0441\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>  \u0415\u0449\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0431\u043e\u0440\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u044e \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u044b \u0442\u0435\u0441\u0442\u0438\u043d\u0433 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434 IE \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0418\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434 iPad \u0434\u043b\u044f \u0423\u043a\u0440\u0430\u0438\u043d\u044b \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439. \u0426\u0430\u0440\u0438\u043b\u0430 \u0430\u043d\u0430\u0440\u0445\u0438\u044f \u0438 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u2026<\/p>\n<p>  \u0412 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 RequireJs \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0442\u043e, \u0447\u0442\u043e <code>require()<\/code> \u2014 \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u0432\u043e\u0434 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043b\u044e\u0431\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. <code>require()<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u043d\u0430\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0438 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0435 \u0431\u044b\u043b \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d, \u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0432\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0433\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441.  <\/p>\n<pre><code class=\"javascript\">require(['async!i18n\/data', 'pewpew.js', 'text!templates\/index.html'], fucntion (data, pewpew, template) {  }); <\/code><\/pre>\n<p>  \u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0433\u0434\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0434\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u044d\u0442\u043e \u043e\u043a.<\/p>\n<h5>\u042d\u0442\u0430\u043f 5: \u041f\u043e\u0438\u0441\u043a \u043c\u043e\u0434\u0443\u043b\u044f<\/h5>\n<p>  \u042f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043a \u0436\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043b\u044c\u0437\u044f\u2026 \u043d\u043e \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0436\u0435 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e:<\/p>\n<h6>1 \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c CommonJS<\/h6>\n<p>  \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u043f\u043e\u0434 Node.js \u0438 \u043f\u043e\u0434 JS@DOM. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0440\u0435\u0434\u043e\u0439 (\u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\/DOM) \u0438\u043b\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043d\u0435\u0435 \u0447\u0430\u0441\u0442\u0438: \u0448\u0430\u0431\u043b\u043e\u043d\u044b (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c), \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u044b\u2026<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u0438\u0448\u0435\u0448\u044c AMD \u0438 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443 \u0442\u0435\u0431\u044f 2 \u043f\u0443\u0442\u0438: \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c AMD \u043d\u0430 CJS \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c node-require. \u0427\u0430\u0449\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041d\u041e. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0448\u0430, \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 Node.js. \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c AMD \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 Node.js.<\/p>\n<p>  CJS \u043a\u0440\u043e\u043c\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 Node.js \u043b\u0438\u0448\u0435\u043d \u043e\u0431\u0435\u0440\u0442\u043a\u0438 <code>define()<\/code> \u0438 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u0430, \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0415\u0433\u043e require \u0438 export \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435 \u0438 \u0431\u043b\u0438\u0436\u0435 \u043a ES6 Modules \u0447\u0435\u043c <code>define()<\/code>-way. \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u0441\u0430\u043c\u0438:<\/p>\n<p>  ES6 Modules  <\/p>\n<pre><code class=\"javascript\">import &quot;dep1&quot; as dep1; import &quot;dep2&quot; as dep2;  export var name = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  CommonJS\/Modules  <\/p>\n<pre><code class=\"javascript\">var dep1 = require(&quot;dep1&quot;), \tdep2 = require(&quot;dep2&quot;);  exports.name = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  AMD  <\/p>\n<pre><code class=\"javascript\">require(['dep1', 'dep2'], function (dep1, dep2) { \treturn { \t\tname: function () { \t\t\treturn dep1 + dep2; \t\t} \t}; }); <\/code><\/pre>\n<p>  \u0418 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a AMD, \u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0431\u043e\u043b\u044c\u043d\u043e \u2014 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, \u0447\u0442\u043e\u0431\u044b r.js \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u043b \u043c\u043e\u0438 CJS \u043c\u043e\u0434\u0443\u043b\u0438.<\/p>\n<h6>2 \u0421\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h6>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u0438\u0448\u0435\u0442\u0435 CoffeeScript, \u0442\u043e \u0432\u044b \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435, \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0435 \u0432\u0430\u0448\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b.<\/p>\n<p>  \u0414\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 CJS \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0443\u0436\u043d\u0430 \u043e\u0431\u0435\u0440\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430 \u043c\u0435\u043d\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a. \u0421\u0431\u043e\u0440\u0449\u0438\u043a \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0433 \u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u0435\u043d\u044f: \u0432\u0441\u0435 \u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u0435 \u043e\u0448\u0438\u0431\u0441\u044f \u043b\u0438 \u044f \u0432 \u0438\u043c\u0435\u043d\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u0432\u0441\u0435 \u043b\u0438 \u044f \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0437\u0430\u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u043b.<\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 1 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438 \u043c\u043e\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  \u0414\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u00ab\u043c\u043e\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b\u00bb \u0438 \u00ab\u043d\u0435 \u043c\u043e\u0438\u00bb \u00ab\u0432\u043e \u0431\u043b\u0430\u0433\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0439 \u043a\u043e\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e) \u043d\u0435 \u0438\u043c\u0435\u043b\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u044f \u043f\u0438\u0448\u0443 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0430 \u0438 \u043a\u044d\u0448 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u044b. \u0421\u0431\u043e\u0440\u043a\u0430 \u0432\u0441\u0435-\u0432-\u043e\u0434\u043d\u043e\u043c \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u0439\u00bb \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438.<\/p>\n<h6>3 \u0413\u0438\u0431\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438: \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u0438\u043a\u0441\u0438\u043d\u044b<\/h6>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, \u0432 \u043c\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0441\u0440\u0435\u0434\u044b \u0438 \u043b\u043e\u043a\u0430\u043b\u0438. \u042f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430 \u0438 \u043f\u0438\u0441\u0430\u043d\u0438\u043d\u044b.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 <code>prod<\/code> \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433 <code>dev<\/code> \u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438. \u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 <code>ru<\/code> \u0438 <code>en<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043c\u0435\u0448\u0430\u0442\u044c <code>prod+en<\/code>, <code>dev+ru<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u044f\u043a\u0438\u0445 \u00abcommon\u00bb \u0438 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442 (<code>prod-ru<\/code>, <code>prod-en<\/code>, <code>dev-ru<\/code>, <code>dev-en<\/code>) \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432\u0441\u0435\u0433\u043e 4 \u00ab\u0441\u0443\u0445\u0438\u0445\u00bb \u043a\u043e\u043d\u0444\u0438\u0433\u0430: <code>prod<\/code>, <code>dev<\/code>, <code>ru<\/code>, <code>en<\/code>.<\/p>\n<h6>4 CLI<\/h6>\n<p>  \u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a \u0442\u043e\u043c\u0443 \u0440\u043e\u0431\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430 \u0442\u0435\u0431\u044f. \u0415\u0441\u043b\u0438 \u043e\u043d \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u043d\u0443\u0436\u043d\u043e <code>--\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 --\u043a\u043e\u043c\u0430\u043d\u0434\u044b-\u0434\u043b\u044f-\u0440\u0430\u0431\u043e\u0442\u044b<\/code>, \u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u0433\u0430\u0442\u044c \u0438 \u0432\u043b\u0435\u0447\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 <code>Makefile<\/code> \u0438 \u0442\u0440\u0430\u0442\u0443 \u043a\u0443\u0447\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>  \u041b\u044e\u0431\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0442\u044c\u0441\u044f. \u0414\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443 \u0441\u0430\u0431\u043a\u043e\u043c\u0430\u043d\u0434. \u0412 \u043e\u0431\u0449\u0435\u043c \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u043c\u043d\u0438\u043b \u0438 \u043f\u0438\u0441\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0443\u043c.<\/p>\n<p>  \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435  <\/p>\n<pre><code class=\"bash\">$ tool make -f path\/to\/build_name.js -o path\/to\/build.js <\/code><\/pre>\n<p>  \u0438  <\/p>\n<pre><code class=\"bash\">$ tool make build_name <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0448\u044c \u044d\u0442\u0443 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043a\u043e\u043c\u043f\u043b\u0438\u0442\u0430 \u0442\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e 1 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u044b\u0439, \u0447\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439, \u043d\u043e \u0443\u0436 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0433\u0440\u0430\u0444\u043e\u043c\u0430\u043d\u0430.<\/p>\n<h5>\u042d\u0442\u0430\u043f 6: browserify<\/h5>\n<p>  <a href=\"https:\/\/github.com\/substack\/node-browserify\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/cf5\/442\/50b\/cf544250baf484ac5d1402ef0f7fbe58.png\"\/><\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/substack\/node-browserify\">browserify<\/a> \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 Node.js \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e <code>browserify main.js &gt; bundle.js<\/code> \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0432 \u0441 browserify \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043b \u0435\u0433\u043e \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 use-case: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u044b Node.js \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. browserify \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u0435\u043d \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043b\u0435\u0439, \u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0442\u0435\u0445 \u0440\u0435\u0430\u043b\u0438\u0439 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0434\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<h5>\u042d\u0442\u0430\u043f 7: LMD<\/h5>\n<p>  <a href=\"http:\/\/lmdjs.org\/\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/a7f\/46b\/0ae\/a7f46b0ae46c334555f7d5217d46cac2.png\"\/><\/a><\/p>\n<p>  \u042f \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b, \u043d\u043e \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 <a href=\"http:\/\/lmdjs.org\/\">LMD<\/a> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u043e\u044e \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0449\u0435. \u041f\u043e\u0434\u0433\u043e\u043d\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0434 \u043c\u043e\u0438 \u0446\u0435\u043b\u0438 \u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u043e\u0433.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043b\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 LMD:<\/p>\n<h6>1 \u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430<\/h6>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0438 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043c?! \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 lmd \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c \u0432 \u043d\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u043f\u0443\u0442\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041a\u043e\u043d\u0444\u0438\u0433\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u0438\u043a\u0441\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438.<\/p>\n<p>  \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433  <\/p>\n<pre><code class=\"javascript\">{ \t&quot;name&quot;: &quot;My Config&quot;, \t&quot;root&quot;: &quot;..\/js&quot;, \t&quot;output&quot;: &quot;..\/build.lmd.js&quot;, \t&quot;modules&quot;: { \t\t&quot;main&quot;: &quot;index.js&quot; \t}, \t&quot;optimize&quot;: true, \t&quot;ie&quot;: false, \t&quot;promise&quot;: true } <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u043e\u0442\u043d\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u2014 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433! \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u00abrewrite rule\u00bb \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.  <\/p>\n<pre><code class=\"javascript\">{ \t&quot;modules&quot;: { \t\t&quot;main&quot;: &quot;index.js&quot;, \t\t&quot;&lt;%= file %&gt;Template&quot;: &quot;templates\/*.html&quot; \t} } <\/code><\/pre>\n<p>  \u0418 \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u0432 \u0432\u0438\u0434\u0435 CJS \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<h6>2 \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0424\u0421: \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/h6>\n<p>  \u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u0424\u0421 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u044d\u0442\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0430 \u043a\u043e\u0434 \u0443\u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 URL \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c. \u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f, \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 CDN \u043f\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438.<\/p>\n<p>  \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c locale \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a locale.ru.json \u0442\u0430\u043a \u0438 locale.en.json \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u0434\u0440\u0443\u0433\u0438\u043c.<\/p>\n<p>  \u0412\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u0430\u043a \u0432\u0430\u043c \u0443\u0433\u043e\u0434\u043d\u043e \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435 \u0434\u0443\u043c\u0430\u044f \u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0443\u0442\u044f\u0445. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0432\u044b \u0437\u0430\u0431\u044b\u043b\u0438 \u043a\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u0442\u043e \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>lmd info<\/code>:  <\/p>\n<pre><code class=\"bash\">$ lmd info build_name | grep module_name  info:    module_name                  \u2718       plain    \u2718    \u2714      \u2718        \u2718 info:    module_name                   &lt;- \/Users\/azproduction\/project\/lib\/module_name.js <\/code><\/pre>\n<p>  <\/p>\n<h6>3 \u041d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 require() \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b<\/h6>\n<p>  \u041c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e require \u044d\u0442\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u0442\u043e <code>require()<\/code> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e. \u0410 <code>require.*()<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d <code>*<\/code> \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0436\u0435 \u0441\u0432\u043e\u0435 \u0434\u0435\u043b\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>require.js()<\/code> \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u043b\u044e\u0431\u043e\u0439 JavaScript \u0444\u0430\u0439\u043b \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 <code>$.loadScript<\/code>.<\/p>\n<p>  \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433, \u043e\u0434\u043d\u0430\u043a\u043e LMD \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434\u00bb.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 LMD \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0442\u044c 3 \u043f\u043b\u0430\u0433\u0438\u043d\u0430: css, parallel \u0438 promise  <\/p>\n<pre><code class=\"javascript\">require.css(['\/pewpew.css', '\/ololo.css']).then(function () {  }); <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d js  <\/p>\n<pre><code class=\"javascript\">var js = require.js;  js('http:\/\/site.com\/file.js').then(function () {  }); <\/code><\/pre>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043c\u0438\u043a\u0441\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432.<\/p>\n<h6>4 \u0410\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h6>\n<p>  \u0411\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u043d\u043e \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438. LMD \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e CJS \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0431\u043e\u0440\u043a\u0438. \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432(\u0448\u0430\u0431\u043b\u043e\u043d\u044b) \u0438 JSON-\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b (\u0441\u043c\u043e\u0442\u0440\u0438 \u043f\u043b\u0430\u0433\u0438\u043d text \u0434\u043b\u044f RequireJS) \u043d\u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 RequireJS LMD \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u0430 \u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0441 shim.<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f LMD \u0438\u043c\u0435\u0435\u0442 \u043a\u0443\u0447\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, LMD \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u043e\u044e \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0449\u0435. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043f\u0440\u043e LMD \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 LMD.<\/p>\n<h5>\u0411\u0443\u0434\u0443\u0449\u0435\u0435?<\/h5>\n<p>  <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=harmony:modules\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ef2\/9f2\/934\/ef29f29341ff778490720c63f10f3ac3.png\"\/><\/a><\/p>\n<p>  \u0414\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e ES6 Modules. \u0418\u0445 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0445\u043e\u0436 \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 JavaScript. \u0412 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f: \u0438\u043c\u043f\u043e\u0440\u0442, \u044d\u043a\u0441\u043f\u043e\u0440\u0442, \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f (\u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043d\u043a\u0430\u0442\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432). \u041e\u043d\u0438 <a href=\"http:\/\/addyosmani.com\/blog\/author-in-es6-transpile-to-es5-as-a-build-step-a-workflow-for-grunt\/\">\u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 CJS \u0438 AMD<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0435\u0441\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0435 \u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p>  Import \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u041d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0418\u043c\u043f\u043e\u0440\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c:  <\/p>\n<pre><code class=\"html\">&lt;script&gt; import {get, Deferred} from &quot;http:\/\/yandex.st\/jquery\/3.0\/jquery.min.js&quot;;  get('\/').then(console.log.bind(console)); &lt;\/script&gt; <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e  <\/p>\n<pre><code class=\"html\">&lt;script src=&quot;http:\/\/yandex.st\/jquery\/3.0\/jquery.min.js&quot;&gt; &lt;script&gt; var get = $.get,     Deferred = $.Deferred;  get('\/').then(console.log.bind(console)); &lt;\/script&gt; <\/code><\/pre>\n<p>  \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043d\u044f\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>&lt;script async\/&gt;<\/code><\/p>\n<p>  \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0435\u0441\u0442\u044c, \u043d\u043e \u043e\u043d\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u0430\u044f:  <\/p>\n<pre><code class=\"javascript\">Loader.load('http:\/\/json.org\/modules\/json2.js', function(JSON) { \talert(JSON.stringify([0, {a: true}])); }); <\/code><\/pre>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u0422\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>  \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u043e, \u0447\u0442\u043e \u044f \u0432\u0430\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0435 \u0442\u0430\u043a (\u043d\u043e \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e). \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u0430\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0442\u0430\u043a \u043a\u0430\u043a JavaScript \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438 \u0438\u043c \u0431\u043e\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0434\u0438\u043a\u0438\u0435 \u0445\u0430\u043a\u0438 \u0432\u0440\u043e\u0434\u0435 AMD. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f ECMAScript \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430 \u0432 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0430\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0418 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<h5>\u0412\u044b\u0432\u043e\u0434\u044b<\/h5>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, JavaScript \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0443\u0441\u0442\u043e\u044f\u0432\u0448\u0435\u0439\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 ES6 Modules \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 CJS \u0438 AMD. \u0412 JavaScript \u0441\u0432\u043e\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430, \u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439(\u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u0430, \u0442\u0440\u0430\u0444\u0438\u043a, \u043b\u0430\u0433\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u044b. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0440\u0435\u0448\u0435\u043d\u0430 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u043a\u0430\u043a \u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0448\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 ES6 \u2014 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<h4>\u041c\u0430\u0442\u0447\u0430\u0441\u0442\u044c<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0441\u0438\u043b\u0438\u043b\u0438 \u043c\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0442\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043c\u043e\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.<\/p>\n<p>  \u042f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 JavaScript \u00ab\u043c\u043e\u0434\u0443\u043b\u0438\u00bb \u0438 \u0438\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c. \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<ul>\n<li> \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<br \/> \n<ul>\n<li>\u0420\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/li>\n<li>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435<\/li>\n<li>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435<\/li>\n<li>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c<br \/> \n<ul>\n<li>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439<\/li>\n<li>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/li>\n<li>\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f<br \/> \n<ul>\n<li>\u0425\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442<\/li>\n<li>\u041d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/li>\n<li>\u00ab\u0421\u0430\u043c\u043e\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u00bb \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/li>\n<li>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/li>\n<li>\u0427\u0435\u0441\u0442\u043d\u044b\u0439 import\/export<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u0421\u0431\u043e\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<br \/> \n<ul>\n<li>\u0411\u0435\u0437 \u0441\u0431\u043e\u0440\u043a\u0438<\/li>\n<li>\u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043c\u0430\u0441\u043a\u0435<\/li>\n<li>\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433<\/li>\n<li>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/li>\n<li>\u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f<br \/> \n<ul>\n<li>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435<\/li>\n<li>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/li>\n<li>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<br \/> \n<ul>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f<\/li>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u00ab\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e\u00bb \u043c\u043e\u0434\u0443\u043b\u044f<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439<br \/> \n<ul>\n<li>\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u0438 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/li>\n<\/ul>\n<p>   <\/li>\n<\/ul>\n<p>  <\/p>\n<h5>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h5>\n<p>  \u041a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\/\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0423 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<h6>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0420\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h6>\n<p>  \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0430 \u043f\u043b\u0435\u0447\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c.  <\/p>\n<pre><code class=\"html\">&lt;script src=&quot;deps\/dep1.js&quot;\/&gt; &lt;script src=&quot;deps\/dep2.js&quot;\/&gt; &lt;script src=&quot;moduleName.js&quot;\/&gt; <\/code><\/pre>\n<p>  \u0418 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 <code>main.js<\/code>  <\/p>\n<pre><code class=\"javascript\">var moduleName = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u2014 \u044d\u0442\u043e \u043e\u043a<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 = \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<p>  \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u00ab\u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043a\u043e\u0434\u0438\u0442\u044c\u00bb.<\/p>\n<h6>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435<\/h6>\n<p>  \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\/\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041a\u043e\u043d\u0444\u0438\u0433 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043a\u0430\u043a \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 LMD  <\/p>\n<pre><code class=\"javascript\">{     &quot;modules&quot;: {         &quot;main&quot;: &quot;moduleName.js&quot;         &quot;&lt;%= file %&gt;&quot;: &quot;deps\/*.js&quot;     } } <\/code><\/pre>\n<p>  \u0418 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 <code>main.js<\/code>  <\/p>\n<pre><code class=\"javascript\">var dep1 = require('dep1'),     dep2 = require('dep2');  module.exports function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0438\u043c\u044f \u043b\u044e\u0431\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443)<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<h6>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435<\/h6>\n<p>  \u0412 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 \u0442\u043e \u043a\u0430\u043a \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b. \u041c\u043e\u0434\u0443\u043b\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445. \u041f\u043e\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u043d\u0430\u0447\u043d\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 AMD (RequireJS)  <\/p>\n<pre><code class=\"javascript\">require(['deps\/dep1', 'deps\/dep2'], function (dep1, dep2) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u0443\u044e\u0442 \u0434\u043e CommonJS define \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0441\u044f\u043a\u0438\u0435 \u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0418\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f  <\/p>\n<pre><code class=\"javascript\">require(['deps\/dep1', 'deps\/dep2', 'deps\/dep3', 'deps\/dep4', 'deps\/dep5', 'deps\/dep6', 'deps\/dep7'], function (    dep1,        dep2,        dep3,        dep4,        dep5,        dep6,        dep7) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u0414\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u044f \u0434\u043e CommonJS define  <\/p>\n<pre><code class=\"javascript\">define(function (require, module, exports) {     var dep1 = require('dep1'),         dep2 = require('dep2'),         dep3 = require('dep3'),         dep4 = require('dep4'),         dep5 = require('dep5'),         dep6 = require('dep6'),         dep7 = require('dep7');      return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 RequireJS \u0438\u0449\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430\u043c\u0438. \u042d\u0442\u043e \u043d\u0430 95% \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0427\u0435\u0441\u0442\u043d\u044b\u0439 \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 (AST \u0438\u043b\u0438 \u0445\u0438\u0442\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433) \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u043e\u0431\u044a\u0435\u043c \u043a\u043e\u0434\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u0430), \u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  \u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433, \u0447\u0442\u043e\u0431\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 define \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u00bb \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 <code>require('templates\/' + type)<\/code> \u0438 \u0435\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e \u0440\u0435\u0434\u043a\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043d\u043e \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041a\u043e\u043d\u0444\u0438\u0433\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0433\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<h6>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435<\/h6>\n<p>  \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435.<\/p>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u044e\u0431\u044b\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 npm \u0438 <code>package.json<\/code>  <\/p>\n<pre><code class=\"javascript\">{     &quot;dependencies&quot;: {         &quot;express&quot;: &quot;3.x&quot;,         &quot;colors&quot;: &quot;*&quot;     } } <\/code><\/pre>\n<p>  \u0418 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e <code>main.js<\/code>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c var express = require('express');  \/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c var dep1 = require('.\/deps\/dep1'),     dep2 = require('.\/deps\/dep2');  module.exports function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0438. \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0422\u0443\u0442, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0431\u0435\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0442\u043a \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e \u043c\u043e\u0434\u0443\u043b\u0435. <code>package.json<\/code> \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b <code>require('pewpew.js')<\/code><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0442\u043e \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0422\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0442\u0430\u043a \u0438 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 browserify<\/p>\n<h5>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c<\/h5>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e.<\/p>\n<h6>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439<\/h6>\n<p>  \u0412\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043b\u0435\u0436\u0430\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0432 \u043d\u0435\u0439\u043c\u0441\u043f\u044d\u0439\u0441\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043b\u044e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.  <\/p>\n<pre><code class=\"javascript\">var dep1 = 1; var dep2 = 2;  alert(dep1 + dep2); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u0442\u043e \u044d\u0442\u043e \u043e\u043a<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0433\u043b\u0430\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f (\u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441)<\/p>\n<h6>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/h6>\n<p>  \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0434\u0443\u043b\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u00bb \u2014 <code>require()<\/code> \u0438\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u0438\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0447\u0435\u0440\u0435\u0437 <code>define()<\/code><\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0433\u0434\u0430 \u0432 \u00ab\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f\u00bb \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f require \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u043c. \u0422\u0430\u043a \u0436\u0435 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e.  <\/p>\n<pre><code class=\"javascript\">var dep1 = require('.\/deps\/dep1'),     dep2 = require('.\/deps\/dep2');  alert(dep1 + dep2); <\/code><\/pre>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0441 <code>define()<\/code>  <\/p>\n<pre><code class=\"javascript\">require(['.\/deps\/dep1', '.\/deps\/dep2'], function (dep1, dep2) {     alert(dep1 + dep2); }); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041b\u0435\u0433\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c\/\u043d\u0430\u0439\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u043d\u0438\u0432\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c runtime-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u0433\u0440\u0430\u0444 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041a\u043e\u0434 \u043d\u0435\u043c\u043d\u043e\u0433\u043e Verbose, \u043d\u043e \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0441\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<h6>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c. \u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 import.  <\/p>\n<pre><code class=\"javascript\">import * from &quot;dep1&quot;; import * from &quot;dep2&quot;; <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0434 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 AMD define()  <\/p>\n<pre><code class=\"javascript\">define('module', ['.\/deps\/dep1', '.\/deps\/dep2'], function (dep1, dep2) {  }); <\/code><\/pre>\n<p>  \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440\u0430\u043c ES6 Modules \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 ES3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 (\u043f\u043e\u043b\u043d\u044b\u0439 \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439)<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f ES6 Modules<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0412 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0440\u0435\u0434\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e<\/p>\n<h5>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f<\/h5>\n<p>  \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438. \u042d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0443\u0442\u0438\u043b\u0438\u0442\u044b (\u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442, \u0447\u0438\u0441\u0435\u043b, i18n \u0438 \u043f\u0440). \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u00ab\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0442\u0430\u043a\u0438\u0435-\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b\u00bb.<\/p>\n<h6>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0425\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e  <\/p>\n<pre><code class=\"javascript\">var a = 10,     b = '';  for (var i = 0; i &lt; a; i++) {     b += i; }  var dep1 = b; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0417\u0430\u0441\u043e\u0440\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0410\u0434 \u0438 \u043a\u043e\u0448\u043c\u0430\u0440, \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0435 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435<\/p>\n<h6>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/h6>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 IIFE, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u041c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u043d\u0430\u0435\u0442 \u0433\u0434\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f.  <\/p>\n<pre><code class=\"javascript\">var dep1 = (function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; })(); <\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442  <\/p>\n<pre><code class=\"javascript\">(function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      exports.dep1 = b; })(exports); <\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 AMD  <\/p>\n<pre><code class=\"javascript\">define('dep1', [], function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; }); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0435 \u043d\u0443\u0436\u043d\u044b \u043e\u0441\u043e\u0431\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u043a\u0440\u043e\u043c\u0435 AMD)<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u0437\u043d\u0430\u0435\u0442 \u043a\u0443\u0434\u0430 \u043e\u043d \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a\u043e\u0435 \u0438\u043c\u044f \u0443 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442<\/p>\n<h6>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u00ab\u0421\u0430\u043c\u043e\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u00bb \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/h6>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043b\u0435\u0436\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u00ab\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u00bb <code>ready()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0433\u043e\u0442\u043e\u0432. \u041e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 2 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442.  <\/p>\n<pre><code class=\"javascript\">(function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      ready('dep1', b); })(); <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>load()<\/code>, \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043d\u0430 <code>require()<\/code>  <\/p>\n<pre><code class=\"javascript\">load('dep1', 'dep2', function (dep1, dep2) {     ready('dep3', function () {         return dep1 + dep2;     }); }); <\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"javascript\">load('dep3', do.stuff); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c (\u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u0435\u0442 \u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442)<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u0437\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0435 \u0438\u043c\u044f \u0438 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<h6>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u043d\u0438 \u0433\u0434\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c. \u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f.<\/p>\n<p>  \u042d\u0442\u043e CommonJS \u043c\u043e\u0434\u0443\u043b\u044c  <\/p>\n<pre><code class=\"javascript\">var a = 10,     b = '';  for (var i = 0; i &lt; a; i++) {     b += i; }  module.exports = b; <\/code><\/pre>\n<p>  \u0438\u043b\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 AMD  <\/p>\n<pre><code class=\"javascript\">define([], function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; }); <\/code><\/pre>\n<p>  \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0438\u043c\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f.  <\/p>\n<pre><code class=\"javascript\">var dep1 = require('deps\/dep1'); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043d\u0438 \u0433\u0434\u0435 \u043e\u043d \u043b\u0435\u0436\u0438\u0442 \u043d\u0438 \u043a\u0430\u043a \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<h6>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0427\u0435\u0441\u0442\u043d\u044b\u0439 import\/export<\/h6>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f ECMAScript 6 Modules, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u0440\u0438\u0434\u0435\u0442 \u0438 \u0432 JavaScript.<\/p>\n<p>  \u0414\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c.  <\/p>\n<pre><code class=\"javascript\">module &quot;deps&quot; {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      export var dep1 = b;     export var dep2 = b + 1; } <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0435\u0437 \u043e\u0431\u0432\u044f\u0437\u043a\u0438 <code>module {}<\/code>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435  <\/p>\n<pre><code class=\"javascript\">import * from &quot;deps&quot;;  console.log(dep1); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u043c\u0435\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u00ab\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d\u00bb  <\/p>\n<pre><code class=\"javascript\">import &quot;crypto&quot; as ns;  console.log(ns.dep1); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f  <\/p>\n<pre><code class=\"javascript\">import {dep1} from &quot;deps&quot;;  console.log(dep1); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0417\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u2014 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u042d\u0442\u043e ECMAScript 6<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c ES6 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 ES3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u043a\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437 TypeScript<\/p>\n<h5>\u0421\u0431\u043e\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h5>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 CoffeeScript \u0438 AMD, \u0442\u043e \u0432\u044b \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442: \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0444\u0430\u0439\u043b\u044b, \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0435 \u0438\u0445.<\/p>\n<h6>\u0411\u0435\u0437 \u0441\u0431\u043e\u0440\u043a\u0438<\/h6>\n<p>  \u0412\u0441\u0435 \u0432 HTML  <\/p>\n<pre><code class=\"html\">&lt;script src=&quot;deps\/dep1.js&quot;\/&gt; &lt;script src=&quot;deps\/dep2.js&quot;\/&gt; &lt;script src=&quot;moduleName.js&quot;\/&gt; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u0438\u0437-\u0437\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0421\u043c\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 HTML \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u043e\u0432\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u2014 \u043d\u043e\u0432\u044b\u0439 .html<\/p>\n<h6>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043c\u0430\u0441\u043a\u0435<\/h6>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c  <\/p>\n<pre><code class=\"bash\">$ cat **\/*.js &gt; build.js <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c  <\/p>\n<pre><code class=\"html\">&lt;script src=&quot;build.js&quot;\/&gt; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0444\u0430\u0439\u043b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0424\u0430\u0439\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 OS \u0438 FS<\/p>\n<h6>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433<\/h6>\n<p>  \u0421\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u00ab\u043c\u0435\u0442\u043e\u043a\u00bb \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u2014 <code>include('path\/name.js')<\/code> \u0438\u043b\u0438 <code>\/\/ include path\/name.js<\/code> \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445  <\/p>\n<pre><code class=\"javascript\">include('deps\/dep1.js'); include('deps\/dep2.js');  var moduleName = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0432 \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442.  <\/p>\n<pre><code class=\"javascript\">\/* start of deps\/dep1.js *\/ var dep1 = 1; \/* end of deps\/dep1.js *\/  \/* start of deps\/dep2.js *\/ var dep2 = 2; \/* end of deps\/dep2.js *\/  var moduleName = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0435\u0449\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0444\u0430\u0439\u043b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432\u00bb<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 <code>include<\/code><br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0433\u043b\u0443\u043f\u044b\u0439 \u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442 \u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041f\u0440\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u044c<\/p>\n<p>  \u0418\u043d\u044a\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044e \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u0432\u043b\u0435\u0447\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u00abuse strict\u00bb \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u043c \u0438\u043c\u0435\u043d \u0438 \u043f\u0440\u043e\u0447\u0438\u043c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440  <\/p>\n<pre><code class=\"javascript\">(function () {     &quot;use strict&quot;;     var i = 3;     include('dep1'); \/\/ \u041d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438     return dep1 + i; })(); <\/code><\/pre>\n<p>  \u0418 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c  <\/p>\n<pre><code class=\"javascript\">var i = 4,     dep = 01234; <\/code><\/pre>\n<p>  \u0414\u0443\u043c\u0430\u044e, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \ud83d\ude09<\/p>\n<h6>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h6>\n<p>  \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0441 \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 r.js (\u0441\u0431\u043e\u0440\u0449\u0438\u043a RequireJS \u043c\u043e\u0434\u0443\u043b\u0435\u0439) \u0438 browserify (\u0430\u0434\u0430\u043f\u0442\u043e\u0440 CommonJS \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 Node.js \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0434 \u0431\u0440\u0430\u0443\u0437\u0435\u0440). \u041e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 AST \u043f\u0430\u0440\u0441\u0435\u0440, \u0438\u0449\u0443\u0442 \u0432\u044b\u0437\u043e\u0432\u044b define\/require \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 include \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442 \u044d\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c  <\/p>\n<pre><code class=\"javascript\">require(['dep1', 'dep2'], function (dep1, dep2) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 r.js \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d \u0432\u043e\u0442 \u0432 \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434  <\/p>\n<pre><code class=\"javascript\">define('dep1', [], function () {     return 1; });  define('dep2', [], function () {     return 2; });  require(['dep1', 'dep2'], function (dep1, dep2) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  browserify \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0444\u0430\u0439\u043b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0430\u0433\u0438\u044e \u0441 \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u0430\u043c\u0438<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439)<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0414\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 3 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438<\/p>\n<h6>\u0421\u0431\u043e\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430<\/h6>\n<p>  \u0422\u0443\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0443\u0436\u043d\u044b. \u0421\u0431\u043e\u0440\u0449\u0438\u043a \u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0417\u0430\u0442\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0443\u0431\u0440\u0430\u0442\u044c.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LMD.  <\/p>\n<pre><code class=\"javascript\">{ \t&quot;root&quot;: &quot;..\/js&quot;,     &quot;modules&quot;: {         &quot;main&quot;: &quot;main.js&quot;,         &quot;dep1&quot;: &quot;deps\/dep1.js&quot;,         &quot;dep2&quot;: &quot;deps\/dep2.js&quot;     } } <\/code><\/pre>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043d\u043e \u0437\u0430\u0447\u0435\u043c 2 \u0440\u0430\u0437\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435?!<\/p>\n<p>  \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f. LMD \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0443\u0442\u044f\u0445 \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430\/\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u0431\u0435\u0433\u0430\u0442\u044c \u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u0438 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0443\u044e \u0424\u0421 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0435\u0448\u0435\u0432\u0443\u044e Dependency Injection \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0441\u0440\u0435\u0434\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u0415\u0449\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0445 \u043d\u0430\u0439\u0442\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043e \u043c\u043e\u0434\u0443\u043b\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u044d\u0442\u043e \u0448\u0430\u0433 \u043d\u0430\u0437\u0430\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 LMD \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0441\u0430\u0431\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/en.wikipedia.org\/wiki\/Glob_(programming)\">glob-\u0438\u043d\u0433<\/a> \u0438 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 rewrite rule.<\/p>\n<p>  \u0412\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443  <\/p>\n<pre><code class=\"javascript\">{     &quot;root&quot;: &quot;..\/js&quot;,     &quot;modules&quot;: {         &quot;&lt;%= file %&gt;&quot;: &quot;**\/*.js&quot;     } } <\/code><\/pre>\n<p>  \u0412\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0443\u0436\u043d\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0438\u0448\u0435\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u043a\u0430\u043a \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c LMD. \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 LMD \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0438\u0437 lodash, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 <a href=\"https:\/\/github.com\/azproduction\/lmd\/tree\/master\/examples\/features\/glob\">\u0445\u0438\u0442\u0440\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>:  <\/p>\n<pre><code class=\"javascript\">{ \t&quot;root&quot;: &quot;..\/js&quot;,     &quot;modules&quot;: {         &quot;&lt;%= file %&gt;&lt;%= dir[0][0].toUpperCase() %&gt;&lt;%= dir[0].slice(1, -1) %&gt;&quot;: &quot;{controllers,models,views}\/*.js&quot;     } } <\/code><\/pre>\n<p>  \u0418\u0442\u043e\u0433\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u0432\u0441\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0430\u0434\u0435\u0436\u043d\u043e \u2014 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u0435\u043d \u0441\u0431\u043e\u0440\u0449\u0438\u043a<\/p>\n<h5>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f<\/h5>\n<p>  \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u0430\u0433 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0447\u0430 \u043a\u043e\u0434\u0430. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u043d \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2014 \u043e\u043d\u0430 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0434 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0438\u043c\u0435\u043d\u0435\u043c) \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434 \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f, \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0432 AST \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 JIT \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0435 \u043a\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e JavaScript \u0441\u0442\u0440\u043e\u043a\u0430.  <\/p>\n<pre><code class=\"javascript\">'function a() {return Math.PI;}'; <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430.  <\/p>\n<pre><code class=\"javascript\">function a() { \treturn Math.PI; } <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430.  <\/p>\n<pre><code class=\"javascript\">function a() { \treturn Math.PI; }  a(); <\/code><\/pre>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0435\u0435 \u0432\u044b\u0437\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f.<\/p>\n<h6>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u0440\u044f\u043c \u0441\u0435\u0439\u0447\u0430\u0441. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0446\u0438\u043a\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.  <\/p>\n<pre><code class=\"javascript\">var dep1 = (function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; })(); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f Startup Latency<\/p>\n<h6>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/h6>\n<p>  \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438 AMD \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 Node.js  <\/p>\n<pre><code class=\"javascript\">define('dep1', [], function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; }); <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435. \u041d\u043e \u0435\u0433\u043e \u0442\u0435\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>return b;<\/code> \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u043e\u0431\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0438\u0434 \u043c\u043e\u0434\u0443\u043b\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> Startup Latency \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u0434\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<h6>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/h6>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u0434\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0422\u0430\u043a\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f RequireJS \u0438 \u0434\u043b\u044f LMD.<\/p>\n<p>  \u041a\u0443\u0441\u043e\u043a \u0441\u0431\u043e\u0440\u043a\u0438 LMD (\u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0433)  <\/p>\n<pre><code class=\"javascript\">{ \t'dep1': '(function(){var a=10,b=&quot;&quot;;for(var i=0;i&lt;a;i++){b+=i;}return b;})' } <\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043c\u043e\u0434\u0443\u043b\u044f <code>dep1<\/code>, \u0442\u043e LMD \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"javascript\">var resources = new Function('return ' + modules['dep1'])()(require, module, exports); <\/code><\/pre>\n<p>  \u0412\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 <code>new Function<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0447\u0435\u0441\u0442\u043d\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441 \u0443\u043c\u043e\u043c, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0438\u0433\u0440\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435. \u041f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 <code>new Function<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <code>eval()<\/code>, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c<\/p>\n<h5>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h5>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u0432 JavaScript@DOM \u0441\u0432\u043e\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0443\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041c\u043e\u0434\u0443\u043b\u0438 \u043b\u0435\u0436\u0430\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e \u0438 \u0438\u0445 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u0430. \u0415\u0441\u043b\u0438 \u0432 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u0440\u0438\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u00ab\u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0432\u0435\u0442\u0430\u00bb, \u0442\u043e \u0432 JavaScript@DOM \u0442\u0430\u043a\u043e\u0435 \u0432\u0440\u044f\u0434-\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0437-\u0437\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 EventLoop.<\/p>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0440\u0430\u0437\u0443 \u043c\u044b \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \ud83d\ude42<\/p>\n<h6>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f<\/h6>\n<p>  \u041f\u043e\u0434 \u043d\u0435\u0443\u043f\u0440\u043e\u0432\u043b\u044f\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>jQuery.getScript(file)<\/code><\/p>\n<p>  \u0414\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<pre><code class=\"javascript\">var script = document.createElement('script'); script.src = file; script.onload = done; document.head.appendChild(script); <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u043e\u043d\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0411\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 LAB.js, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 XHR \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. XHR, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u043d\u043e\u0441\u0438\u0442 \u0441\u0432\u043e\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.  <\/p>\n<pre><code class=\"javascript\">$LAB .script(&quot;framework.js&quot;).wait() .script(&quot;plugin.framework.js&quot;); <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438, \u0432\u0440\u043e\u0434\u0435 YepNope \u0438 script.js \u0434\u0435\u043b\u0430\u044e \u043f\u0440\u0438\u043c\u0435\u0440\u0442\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0414\u0435\u0448\u0435\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b XHR \u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0438\u0441\u0430\u043d\u0438\u043d\u044b<\/p>\n<h6>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u00ab\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e\u00bb \u043c\u043e\u0434\u0443\u043b\u044f<\/h6>\n<p>  \u041b\u044e\u0431\u0430\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u0430\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>require()<\/code> \u0438 <code>define()<\/code> \u0438\u0437 RequireJS.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>require()<\/code> \u0438\u0437 RequireJS \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u043a\u043e\u0434 \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.  <\/p>\n<pre><code class=\"javascript\">require(['dep1', 'dep2'], function (dep1, dep2) {     console.log(dep1 + dep2); }); <\/code><\/pre>\n<p>  \u0412 LMD, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043a\u0430\u043a \u0431\u0430\u043d\u0434\u043b \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u0430\u043d\u0434\u043b\u0430 \u0432\u0441\u0435 \u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043b\u044e\u0431\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e.  <\/p>\n<pre><code class=\"javascript\">_e4fg43a({ \t'dep1': function () { \t\treturn 1; \t},  \t'dep2': 2,  \t'string': 'Hello, &lt;%= name %&gt;!' }); <\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"javascript\">require.bundle('name').then(function () { \t\/\/ do stuff }); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0430\u043a \u0438 \u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/p>\n<h5>\u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h5>\n<p>  \u0417\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u043b\u0438 \u0438\u0445 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430, \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0447\u0435\u043c \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043b\u043e\u043c\u0430\u0435\u0442 \u0438\u0445 \u0442\u0440\u0443\u0434\u044b. \u041f\u0440\u044f\u043c\u043e\u0439 \u0438 \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u00ab\u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u043a\u043e\u0434\u00bb. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0435\u0441\u043b\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u0432 \u0432\u0430\u0448\u0435\u0433\u043e JavaScript, \u0442\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u00ab\u0441\u043b\u043e\u043c\u0430\u0442\u044c\u00bb \u0447\u0442\u043e-\u0442\u043e, \u043d\u043e \u0442\u0443\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<h6>\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u044f\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.  <\/p>\n<pre><code class=\"javascript\">var dep1 = (function () {     var a = 10,         b = '';      for (var i = 0; i &lt; a; i++) {         b += i;     }      return b; })(); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041e\u043f\u044f\u0442\u044c \u0436\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041d\u0435 \u043d\u0443\u0436\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0435\u043d<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0443\u0434\u0430 \u0443 \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u043d \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0435 \u0434\u0435\u043b\u043e \u043e\u043d \u0436\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/p>\n<h6>\u041c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/h6>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u044f \u0438\u043c\u044f \u2014 <code>require('pewpew')<\/code>. \u0421\u043a\u0440\u044b\u0442\u0438\u0435, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u044d\u0442\u043e \u043d\u0435 \u0446\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435. \u0412 AMD \u0435\u0441\u0442\u044c 2 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0434\u0443\u043b\u044e \u2014 \u044d\u0442\u043e <code>require()<\/code> \u0438 <code>define()<\/code>. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b.  <\/p>\n<pre><code class=\"javascript\">define('dep3', ['dep1', 'dep2'], function (dep1, dep2) {     return function () {     \treturn dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u041c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043b\u0443\u0430\u0439\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044f\u0432\u043d\u043e<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u041d\u0443\u0436\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438<\/p>\n<h6>\u041c\u043e\u0434\u0443\u043b\u0438 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/h6>\n<p>  \u0426\u0435\u043b\u044c \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0437\u0432\u043d\u0435. \u0414\u0443\u043c\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u00ab\u043c\u043e\u0434\u0443\u043b\u0438\u00bb, \u0432\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"javascript\">$(function () { \tvar dep1 = (function () { \t\tvar a = 10, \t\t\tb = '';  \t\tfor (var i = 0; i &lt; a; i++) { \t\t\tb += i; \t\t}  \t\treturn b; \t})();  \t$('button').click(function () { \t\tconsole.log(dep1); \t}); }); <\/code><\/pre>\n<p>  \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0434\u043e \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435. \u041d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0415\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432 \u00ab\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435\u00bb, \u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043e\u0431\u0449\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c.<\/p>\n<p>  \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 IEFE:  <\/p>\n<pre><code class=\"javascript\">(function () { \/* start of deps\/dep1.js *\/ var dep1 = 1;  \/* start of deps\/dep2.js *\/ var dep2 = 2;  var moduleName = function () {     return dep1 + dep2; }; })(); <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, jQuery.<\/p>\n<p>  LMD \u0438 browserify \u0442\u0430\u043a \u0436\u0435 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u044e\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b, \u043d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u00ab\u0432\u0441\u0435-\u0432-\u043e\u0434\u043d\u043e\u043c\u00bb \u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u043e\u0442 \u00ab\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438\u00bb \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0432 \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:  <\/p>\n<pre><code class=\"javascript\">(function (main, modules) { \tfunction lmd_require() {} \t\/\/ ... \tmain(lmd_require); }) (function (require) { \tvar dep1 = require('dep1'); \t\/\/ ... }, { \tdep1: function (r,m,e) {} }); <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/57f\/874\/11d57f8740ef02ab67ead2e67cd599cb.png\"\/> \u0412 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/46c\/f9a\/e57\/46cf9ae57df48bf0a9063f8a95874425.png\"\/> \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0443\u0436\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/p>\n<h4>\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u043f\u0430\u043b\u044f\u0440\u043d\u044b\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 JavaScript<\/h4>\n<p>  <\/p>\n<table>\n<tr>\n<th><\/th>\n<th>AMD,YUI<\/th>\n<th>ES6<\/th>\n<th>CJS\/LMD<\/th>\n<th>IEFE<\/th>\n<\/tr>\n<tr>\n<th>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/th>\n<td>\u0412 \u043c\u043e\u0434\u0443\u043b\u0435+\u043a\u043e\u043d\u0444\u0438\u0433<\/td>\n<td>\u0412 \u043c\u043e\u0434\u0443\u043b\u0435<\/td>\n<td>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0435<\/td>\n<td>\u0420\u0443\u0447\u043d\u043e\u0435<\/td>\n<\/tr>\n<tr>\n<th>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c<\/th>\n<td>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/td>\n<td>\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439<\/td>\n<td>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/td>\n<td>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439<\/td>\n<\/tr>\n<tr>\n<th>\u042d\u043a\u0441\u043f\u043e\u0440\u0442<\/th>\n<td>\u0421 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/td>\n<td>\u0427\u0435\u0441\u0442\u043d\u044b\u0439 import\/export<\/td>\n<td>\u0421 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/td>\n<td>\u0425\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439\/\u041d\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439<\/td>\n<\/tr>\n<tr>\n<th>\u0421\u0431\u043e\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/th>\n<td>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437<\/td>\n<td>\u041d\u0435 \u043d\u0443\u0436\u043d\u0430\/\u041a\u043e\u043d\u043a\u0430\u0442\u0438\u043d\u0430\u0446\u0438\u044f<\/td>\n<td>\u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430<\/td>\n<td>\u041a\u043e\u043d\u043a\u0430\u0442\u0438\u043d\u0430\u0446\u0438\u044f<\/td>\n<\/tr>\n<tr>\n<th>\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f<\/th>\n<td>\u041f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/td>\n<td>\u041d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/td>\n<td>\u041f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e<\/td>\n<td>\u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435<\/td>\n<\/tr>\n<tr>\n<th>\u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/th>\n<td>\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/td>\n<td>\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/td>\n<td>\u0422\u043e\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/td>\n<td>\u041d\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/td>\n<\/tr>\n<\/table>\n<p>  <\/p>\n<h4>\u0420\u0430\u0441\u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/h4>\n<p>  \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u00ab\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u00bb \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 JavaScript.<\/p>\n<h5>No module<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">var moduleName = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  <\/p>\n<h5>Namespace<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">var MyNs.moduleName = function () {     return MyNs.dep1 + MyNs.dep2; }; <\/code><\/pre>\n<p>  <\/p>\n<h5>IIFE return<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">var moduleName = (function (dep1, dep2) {     return function () {         return dep1 + dep2;     }; }(dep1, dep2)); <\/code><\/pre>\n<p>  <\/p>\n<h5>IIFE exports<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">(function (exports, dep1, dep2) {     exports.moduleName = function () {         return dep1 + dep2;     }; }(window, dep1, dep2)); <\/code><\/pre>\n<p>  <\/p>\n<h5>AMD<\/h5>\n<p>  YUI \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0435\u043c\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0445\u043e\u0436\u0438 \u0441 AMD. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0438\u0445 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.  <\/p>\n<pre><code class=\"javascript\">define([&quot;dep1&quot;, &quot;dep2&quot;], function (dep1, dep2) {     return function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  <\/p>\n<h5>AMD \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f CommonJS<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">define(function (require, module, exports) {     var dep1 = require('dep1'),         dep2 = require('dep2');      module.exports = function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  <\/p>\n<h5>CommonJS<\/h5>\n<p>  <\/p>\n<pre><code class=\"javascript\">var dep1 = require('dep1'),     dep2 = require('dep2');  module.exports = function () {     return dep1 + dep2; }; <\/code><\/pre>\n<p>  <\/p>\n<h5>UMD<\/h5>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c 3 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c. \u041e\u0434\u043d\u043e \u0434\u0435\u043b\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0447\u0435\u043c \u0443\u0433\u043e\u0434\u043d\u043e. \u0414\u0440\u0443\u0433\u043e\u0435 \u0436\u0435 \u0434\u0435\u043b\u043e Open-Source \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0431\u0435\u0440\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0441\u0443\u0442\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u2014 \u0437\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/umdjs\/umd\">UMD: Universal Module Definition<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u00ab\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u00bb \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u043f\u043e\u0434 \u0432\u0441\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b.  <\/p>\n<pre><code class=\"javascript\">(function (root, factory) {     if (typeof exports === 'object') {         \/\/ \u0424\u043e\u0440\u043c\u0430\u0442 1: CommonJS         factory(exports, require('dep1'), require('dep2'));     } else if (typeof define === 'function' && define.amd) {         \/\/ \u0424\u043e\u0440\u043c\u0430\u0442 2: AMD (\u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c)         define(['exports', 'dep1', 'dep2'], factory);     } else {         \/\/ \u0424\u043e\u0440\u043c\u0430\u0442 3: \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044b         factory(window, root.dep1, root.dep2);     } })(this, function (exports, dep1, dep2) {      \/\/ \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c     exports.moduleName = function () {         return dep1 + dep2;     }; }); <\/code><\/pre>\n<p>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0430\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u043d\u0430 \u00ab\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u00bb \u0441\u0430\u043c\u043e\u0435 \u0442\u043e.<\/p>\n<h4>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c<\/h4>\n<p>  <\/p>\n<ol>\n<li><a href=\"http:\/\/www.adequatelygood.com\/JavaScript-Module-Pattern-In-Depth.html\">JavaScript Module Pattern: In-Depth<\/a><\/li>\n<li><a href=\"http:\/\/yuilibrary.com\/yui\/docs\/yui\/create.html\">Creating YUI Modules<\/a><\/li>\n<li><a href=\"http:\/\/addyosmani.com\/writing-modular-js\/\">Writing Modular JavaScript With AMD, CommonJS &#038; ES Harmony<\/a><\/li>\n<li><a href=\"http:\/\/requirejs.org\/docs\/whyamd.html\">Why AMD?<\/a><\/li>\n<li><a href=\"http:\/\/tomdale.net\/2012\/01\/amd-is-not-the-answer\/\">AMD is Not the Answer<\/a><\/li>\n<li><a href=\"http:\/\/tagneto.blogspot.ru\/2011\/11\/why-not-amd.html\">Why not AMD?<\/a><\/li>\n<li><a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=harmony:modules\">Proposal ES6 Modules<\/a><\/li>\n<li><a href=\"http:\/\/blog.bittersweetryan.com\/2013\/02\/playing-with-ecmascriptharmony-modules.html\">Playing with ECMAScript.Harmony Modules using Traceur<\/a><\/li>\n<li><a href=\"http:\/\/addyosmani.com\/blog\/author-in-es6-transpile-to-es5-as-a-build-step-a-workflow-for-grunt\/\">Author In ES6, Transpile To ES5 As A Build-step: A Workflow For Grunt<\/a><\/li>\n<\/ol>\n<p>  <font color=\"#999\">\u041e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0448\u043b\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432 \u041b\u0421.<\/font>  \t\t\t\t<\/p>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u041a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u043e\u043c JavaScript?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"181536\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"8060\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41622\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41622\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41622\">\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u0438<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41624\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41624\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41624\">\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41626\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41626\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41626\">\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 IIFE (jQuery-style)<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41628\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41628\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41628\">AMD \u0438\u043b\u0438 YUI<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41630\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41630\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41630\">CommonJS (browserify, lmd, &#8230;)<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv41632\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"41632\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv41632\">\u0414\u0440\u0443\u0433\u043e\u0439<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<p class=\"total\">\u041d\u0438\u043a\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.<\/p>\n<\/p><\/form>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/181536\/\"> http:\/\/habrahabr.ru\/post\/181536\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/f75\/3b6\/6e5\/f753b66e57434dab766eb63110086560.png\" \/><\/div>\n<p>  \u041d\u0435 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 JavaScript \u0435\u0449\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0432\u0441\u0435 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u0430\u043a \u043c\u043e\u0433\u043b\u0438.<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u0438 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u043a\u0430\u043a. \u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0435\u043b\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442 \u0448\u0443\u043c\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u0434 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435.<\/p>\n<p>  \u0412\u043e\u0442 \u0432 JavaScript \u0441\u0432\u043e\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430 \u2014 \u0432 \u044f\u0437\u044b\u043a\u0435 \u043d\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043b\u0435\u0436\u0430\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e, \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439, \u0445\u0438\u0442\u0440\u043e \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0435\u0432\u0430\u0442\u044c \u0441 \u0434\u0432\u043e\u0439\u043d\u044b\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430.<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0430 JavaScript \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c DOM\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438. \u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438 \u043e \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0418 \u0442\u0443\u0442 \u0412\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043d\u0430\u0433\u0440\u044f\u043d\u0443\u043b\u043e! \u0412\u0441\u0435 \u0432\u0440\u043e\u0434\u0435-\u0431\u044b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0430 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 JavaScript, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0437\u0430\u043f\u0430\u0437\u0434\u044b\u0432\u0430\u044e\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0440\u0443\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0414\u0443\u043c\u0430\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0447\u0438\u0442\u0430\u043b\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e Addy Osmani <a href=\"http:\/\/addyosmani.com\/writing-modular-js\/\">Writing Modular JavaScript With AMD, CommonJS &#038; ES Harmony<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u043b\u0430\u0432 \u0435\u0433\u043e \u043a\u043d\u0438\u0433\u0438 <a href=\"http:\/\/addyosmani.com\/resources\/essentialjsdesignpatterns\/book\/#modularjavascript\">Learning JavaScript Design Patterns<\/a> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e \u00ab\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\u00bb JavaScript \u0438\u043b\u0438 \u0436\u0435 \u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"http:\/\/www.adequatelygood.com\/JavaScript-Module-Pattern-In-Depth.html\">JavaScript Module Pattern: In-Depth<\/a> 2010 \u0433\u043e\u0434\u0430 \u043f\u0440\u043e \u00ab\u0441\u0442\u0430\u0440\u044b\u0435\u00bb \u043c\u043e\u0434\u0443\u043b\u0438.<\/p>\n<p>  \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e\u043b\u044f\u043d\u043a\u0443. \u0412 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043c\u043e\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u043c \u043f\u0443\u0442\u0438. \u041e \u0442\u043e\u043c \u043a\u0430\u043a \u044f \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b \u043f\u0443\u0442\u044c \u043e\u0442 \u00ab\u0441\u0442\u0430\u0440\u044b\u0445\u00bb \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043a \u00ab\u043d\u043e\u0432\u044b\u043c\u00bb \u0438 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-181536","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/181536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=181536"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/181536\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=181536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=181536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=181536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}