AngularJSред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рд▓рдВрдмрд┐рдд рд▓реЛрдбрд┐рдВрдЧ

AngularJs рдПрдХ рдмреЗрд╣рддрд░реАрди рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдбреЛрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЙрдкрджреНрд░рд╡ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓рд░ рдорд╣рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣реА рд╣реИред рдФрд░ рдЬрдмрдХрд┐ рдирд┐рд░реНрджреЗрд╢ рдЕрднреА рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдгреАрдп-рдпреВрдЖрдИ рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╕рдм рдХреБрдЫ рддрдм рдФрд░ рднреА рдмрджрддрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдЬрд┐рдХ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддреА рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рднреВрдорд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреИрдорд╛рдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдХреЛрдгреАрдп рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдлрд┐рд░ рднреА, рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬрдм рдЖрдк рдХреЛрдгреАрдпрд╡реЛрдбреНрдпреВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдгреАрдп рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрд╛рдХрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдордирдорд╛рдиреЗ рдХреНрд░рдо рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХреЗрдВред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд▓реЛрдбрд┐рдВрдЧ HTML-рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдХреЛрдгреАрдп.рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдлрд╝рдВрдХреНрд╢рди рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

рддреЛ, рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ:
  1. рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд▓реЛрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  2. рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдпрд╛рдиреА рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рд╕рднреА рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
  3. рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдореЙрдбреНрдпреВрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛) рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ рд▓рд┐рдВрдХ рдХрд░рдирд╛ред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдХреЛрдб рдореЗрдВ рдХрд┐рд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЖрд░рдВрдн рдХрд░реЗрдЧреА:
<div load-on-demand="'home'"></div> 

рд▓реЛрдб-рдСрди-рдбрд┐рдорд╛рдВрдб рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдореЙрдбреНрдпреВрд▓.рдХреЙрдиреНрдлрд┐рдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЙрджрд╛рд╣рд░рдг:
 var app = angular.module('app', ['loadOnDemand']); app.config(['$loadOnDemandProvider', function ($loadOnDemandProvider) { var modules = [ { name: 'home', script: 'js/home.js' } ]; $loadOnDemandProvider.config(modules, []); }]); 


рдЕрдм рд╣рдо рд╕реАрдзреЗ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди (рд▓рд┐рдВрдХрдлрдВрдХреНрд╢рди) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЫрджреНрдо рдХреЛрдб:
 var aModule = angular.module('loadOnDemand', []); aModule.directive('loadOnDemand', ['$loadOnDemand', '$compile', function ($loadOnDemand, $compile) { return { link: function (scope, element, attr) { var moduleName = scope.$eval(attr.loadOnDemand); //   //      var moduleConfig = $loadOnDemand.getConfig(moduleName); $loadOnDemand.load(moduleName, function() { //   loadTemplate(moduleConfig.template, function(template) { //   childScope = scope.$new(); //      element.html(template); //   html  DOM var content = element.contents(), linkFn = $compile(content); //  DOM-   angular linkFn(childScope); //    scope }); }); } }; }]); 


рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд┐рдВрджреБ $ loadOnDemand.load () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рддрд╛ $ loadOnDemand рдореЗрдВ рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЫрд┐рдкрд╛рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдХреЛрдб рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛рдПред

 aModule.provider('$loadOnDemand', function(){ this.$get = [function(){ //    ,     return { getConfig: function (name) {}, //      load: function (name, callback) {} //   }; }]; this.config = function (config, registeredModules) {} //    }); 


рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдПрдХ $ рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рд╕реЗрд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрдиреНрдлрд╝реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред $ рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░рд╛ рдЖрдЧрдВрддреБрдХ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ (рдКрдкрд░ app.config) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓.рдХреЙрдиреНрдлрд┐рдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкреНрд░рджрд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрд░реНрдХ рдХреЛ рдЙрд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╕реЗрд╡рд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ: getConfig - рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реЗрд╡рд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ document.createScript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рддрд░рд╣ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдбреАрдмрдЧрд░ рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рд╣реИред

рдФрд░ рдкрд╛рдиреА рд╡рд╣ рд╕рдм рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред рд▓реЗрдХрд┐рди, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рд╣реЛрдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХреЛрдгреАрдп рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рддреЛ, рдХреЛрдгреАрдп рдореЗрдВ рдбреВрдмреЛред

DOM рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдгреАрдп рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рд╡рд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдирдЬреА-рдРрдк рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ DOM рдХреЛ рдХреЛрдгреАрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рд╣рдо рдПрдХ рдЗрдиреНрдлрд╝реЗрдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрд╣ рдХреЙрд▓ рд╣реИ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ - рд▓реЛрдбрдореНрдпреВрд▓рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред loadModules рдПрдХ рдореЙрдбреНрдпреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рд╣реЛрддреА рд╣реИ - _invokeQueueред рдпрд╣ рдХрддрд╛рд░ рд╕рд┐рд░реНрдл рддрдм рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрдм рдХреЛрдгреАрдп рдкрдВрдЫреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХрддрд╛рд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рджрд╛рддрд╛ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
 aModule.provider('$loadOnDemand', ['$controllerProvider', '$provide', '$compileProvider', '$filterProvider', function ($controllerProvider, $provide, $compileProvider, $filterProvider) { . . . loadScript(moduleName, function(){ register(moduleName); }); . . . }]); 

рд░рдЬрд┐рд╕реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рдорд╛рд░реЛрд╣ред
 moduleFn = angular.module(moduleName); for (invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) { invokeArgs = invokeQueue[i]; provider = providers[invokeArgs[0]]; provider[invokeArgs[1]].apply(provider, invokeArgs[2]); } 


InvokeArgs [0] рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ, invokeArgs [1] рдПрдХ рдирдИ рд╕реЗрд╡рд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдкрдиреА рд╡рд┐рдзрд┐ рд╣реИред invokeArgs [2] - рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рдзрд┐ (рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рд╕реВрдЪреА рдФрд░ рд╕реЗрд╡рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп) рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 <!DOCTYPE html> <html ng-app="app"> <head> </head> <body> <div ng-view></div> <script src="js/angular.js"></script> <script src="js/loadOnDemand.js"></script> </body> </html> 

рдФрд░ рдЖрд╡реЗрджрди рдХрд╛ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓, рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 (function(){ var app = angular.module('app', ['loadOnDemand']); app.config(['$routeProvider', function ($routeProvider) { . . . }; app.config(['$loadOnDemandProvider', function ($loadOnDemandProvider) { . . . }; })(); 


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рдЬреАрдердм рдкрд░ рдЯрд┐рдХреА рд╣реБрдИ рд╣реИ

Source: https://habr.com/ru/post/In178753/


All Articles