AJL - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JS рдФрд░ CSS рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░ !

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдиреЗ рдореБрдЭреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯреЗ рд╕рдВрд╕рд╛рдзрди рд▓реЛрдбрд░ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рднреА рдЦреЛрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреЗрдПрд╕, рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ (рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ)ред

рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрдкрдиреА рдмрд╛рдЗрдХ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирддреАрдЬрддрди, рдПрдХ рдШрдЯрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ uglify рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 6.28 Kb рдФрд░ GZip рдореЗрдВ 1.3 Kb рддрдХ рд▓реЗрддрд╛ рд╣реИред

рдЙрдирдХреА рдХреБрдВрдЬреА "рдЪрд┐рдкреНрд╕":


рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред

рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд рдПрдЬреЗрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрд░реНрд╕ рдФрд░ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд┐рд╡рд░рдгред


AJL рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдПрдЬреЗрдПрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдбреЗрдЯрд╛-рдПрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ (AJL рдХреЛ рдЖрдзрд╛рд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП):
//baseLayout.html <script src="js/vendor/AJL.min.js" data-ep="EntryPoint.js"></script> 

AJL рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ EntryPoint.js рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕рдВрдХреБрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдк рдбреЗрдЯрд╛-рдЕрд╡рдзрд┐ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдПрдЬреЗрдПрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╣рд╛рдВ рд╣реИред
EntryPoint.js рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИред

рд╣рдо рдкреИрдХреЗрдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП jQuery, рдЙрд╕рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбреЗрдЯрд╛-рдПрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 //EntryPoint.js AJL({ name: "jQuery", //  assets: ['js/vendor/jquery.min.js'], //  URL'    config: { //  async: false //   } }, { name: "jQuery Plugins", assets: ['js/vendor/jquery.plugin.js', 'js/vendor/jquery.plugin2.js'], config: { depend: ['jQuery'] //  ,       } }, { name: "My Scripts", assets: ['js/foo.js', 'js/bar.js'], config: { lazy: true //      window.onload } }).loadAll(); //  ,   PackageManager.  chainloading       

рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдмрд╣реБрдд рд╕рд╛рдл рджрд┐рдЦрддрд╛ рд╣реИред рдирд╛рдо рдореЗрдВ, рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ , рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ URL рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреАред рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ , рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЫрд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВ рдирд┐рдХрд╛рд▓рд╛ред

EntryPoint.js рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

1. рддреАрди рдкреИрдХреЗрдЬ jQuery рдХреЗ рдирд╛рдо, jQuery рдкреНрд▓рдЧрдЗрдиреНрд╕, рдореЗрд░реЗ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, AJL рдПрдХ PackageManager рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд▓реЛрдбрдЕрд▓ () рд╡рд┐рдзрд┐ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдкреИрдХреЗрдЬ рд▓реЛрдб рдХрд░рддреА рд╣реИред рд╕рднреА рдкреИрдХреЗрдЬ рд╕рд░рдгреА рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рд▓реЛрдб () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдкрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдЬреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдбрд╛рдЙрдирд▓реЛрдб рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ "рдЧрдВрднреАрд░" рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕рдм рдХреБрдЫред

2. jQuery рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж jQuery рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ jQuery рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рдФрд░ рдЕрдВрдд рдореЗрдВ - рдореЗрд░реЗ рд▓рд┐рдкрд┐рдпреЛрдВ - рдкреГрд╖реНрда рдкрд░ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдЖрд▓рд╕реА рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ)ред

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

AJL рдХреЗ рд╕рд╛рде, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ:
  AJL({ name: "jQuery", assets: ['js/vendor/jquery.min.js'], config: { async: false } }, { name: "jQuery Plugins", assets: ['js/vendor/jquery.plugin.js', 'js/vendor/jquery.plugin2.js'], config: { depend: ['jQuery'] } }, { name: "Editor Scripts And Styles", assets: ['js/editor/foo.js', 'js/editor/bar.js', 'css/editor/style.css'], config: { depend: ['jQuery Plugins'] } }, { name: "My Dashboard Scripts", assets: ['js/foo.js', 'js/bar.js'], config: { lazy: true } }); 

рд▓реЛрдбрдПрдб () рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╡рд╣ рдпрд╣рд╛рдВ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рдкреИрдХреЗрдЬреЛрдВ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд▓реЛрдбрдПрдб () рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕рд┐рд░реНрдл рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдкрд╛рджрдХ рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред
 //dashboard.html <script>AJL("My Dashboard Scripts").load();</script> //editor.html <script>AJL("Editor Scripts And Styles").load();</script> 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдкрд┐рдпреЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдирд╛рдордХ рдкреИрдХреЗрдЬ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рдпрд╣рд╛рдБ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдХрдбрд╝реА рдФрд░ рдЗрд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, jQuery рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓реЛрдб рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ jQueryред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рд╕рдВрдХреБрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

"рд╣реБрдб" рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдЕрдм рдЖрдЗрдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ AJL рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдПред

рдирд╛рдо рд╕реНрдерд╛рди
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреЛрдб рдХреА 17 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ рдФрд░ рд╕рд╛рд░ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╕рд░рдгреА рдФрд░ рдЙрд╕рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЬрдм рд╣рдо рдЕрдВрддрд┐рдо рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рддрддреНрд╡ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рддреЗ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
 setNamespace: function (namespace, module) { var parts = namespace.split('.'), parent = window, partsLength, curPart, i; //Need iterate all parts of namespace without last one partsLength = parts.length - 1; for (i = 0; i < partsLength; i++) { //Remember current part curPart = parts[i]; if (typeof parent[curPart] === 'undefined') { //If this part undefined then create empty parent[curPart] = {}; } //Remember created part in parent parent = parent[curPart]; } //And last one of parts need to be filled by module param parent[parts[partsLength]] = module; //And not forgot return generated namespace to global scope return parent; }, 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 AJL("Module.SubModule", function() { return "Hi, I'm Module.SubModule"; }); 


рдкреИрдХреЗрдЬ, PackageConfig, рд▓реЛрдбрд░
рдкреИрдХреЗрдЬ рдФрд░ рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк (рд╡рд░реНрдЧ, рдПрдХ рд╢рдмреНрдж рдореЗрдВ) рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВред рд╕рднреА рдЬреЛ рдореИрдВ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд░рдЦрддрд╛ рд╣реВрдВ, рд╡рд╣ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╣реИ, URL рдХреА рдПрдХ рд╕рд░рдгреА, рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдгред рдкреИрдХреЗрдЬ рдХрд╛ рд▓реЛрдб () рд╡рд┐рдзрд┐ рд╕реНрд╡рдпрдВ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рд▓реЛрдбрдкреИрдХ () рд▓реЛрдбрд░.рдЬреЗрдПрд╕ рд╕реЗ рдХреЙрд▓ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
  load: function () { AJL.Loader.loadPackage.call(this); } 


рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЦрд░рд╛рдм рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рдЕрд▓рдЧ рд╣реИрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрд▓рдЧ рд╣реИрдВ, рдФрд░ рдмреВрдЯрд▓реЛрдбрд░ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Loader.js рдФрд░ loadPackage () рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрдм DOM рдореЗрдВ рдЯреИрдЧ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХрдм рдирд╣реАрдВред
 loadPackage: function () { var helper = AJL.Helper, packageManager = AJL.PackageManager, pack = this, packageAssets = pack.getAssets(), packageConfig = pack.getConfig(), depend = packageConfig.getItem('depend'); //If assets array empty then halt loading of package if (helper.isEmpty(packageAssets)) { return false; } //If this package depend on other packages then load dependencies first if (!helper.isEmpty(depend)) { packageManager.loadByNames(depend); } //If need to wait window.load than call lazyLoad and return if (packageConfig.getItem('lazy') == true) { lazyLoad.call(pack); return true; } //In other cases just call startLoading directly for start loading startLoading.call(pack); return true; }, 


рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд▓реЛрдб рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

PackageManager
рдПрдЬреЗрдПрд▓ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдкреИрдХреЗрдЬ рдореИрдирдЬрд░ рднреА рд╣реИ, рдЬреЛ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд▓реЗрдХреНрдЯрд░ред рдЧреЗрдЯрд░реНрд╕ рд╣реИрдВ, рдРрд╕реЗ рд╕реЗрдЯрд░реНрд╕ рд╣реИрдВ рдЬреЛ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд░рдгреА рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдирд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдпрд╣ рднреА рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирд╛ рдЧрдпрд╛ рд▓реЛрдбрдСрд▓ () рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рдорд╛рдиреНрдп рдЧрдгрдирд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
 loadAll: function () { var helper = AJL.Helper, curPack; for (var pack in packages) { if (packages.hasOwnProperty(pack)) { curPack = packages[pack]; if (helper.isInstanceOf(curPack, AJL.Package)) { curPack.load(); } } } return this; }, 

рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Iterates, рдФрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреИрдХреЗрдЬ рд╣реИ, рддреЛ рдХреЙрд▓ рд▓реЛрдб () рдХрд░реЗрдВред рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ loadByNames () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
 loadByNames: function (names) { var helper = AJL.Helper, curName, namesLength, i; namesLength = names.length; for (i = 0; i < namesLength; i++) { curName = names[i]; if (packages.hasOwnProperty(curName) && helper.isInstanceOf(packages[curName], AJL.Package)) { packages[curName].load(); } } return this; } 

рд╣рдо рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рдирд╛рдо рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╣рд╛рдБ, рдФрд░ рдпрд╣ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреИрдХреЗрдЬ рд╣реИ, рддреЛ рдХреЙрд▓ рд▓реЛрдб () рдХрд░реЗрдВред

AJL
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рддред AJL () рдлрд╝рдВрдХреНрд╢рдиред
 AJL = function () { var packageManager = AJL.PackageManager, namespace = AJL.Namespace, helper = AJL.Helper, packageInstance = {}, packageName = '', packageAssets = [], packageConfig = {}, argLength = arguments.length, argFirst, argSecond, i; //Switch of arguments length for detect what need to do switch (argLength) { case 0: //If arguments not exists then just return PackageManager instance return packageManager; case 1: argFirst = arguments[0]; //If this arg is string then return package with this name if (helper.isString(argFirst)) { return packageManager.getPackage(argFirst); } break; case 2: argFirst = arguments[0]; argSecond = arguments[1]; //If first arg is string and second object or function if (helper.isString(argFirst) && (helper.isObject(argSecond) || helper.isFunction(argSecond))) { //Then I think that it's namespace setting namespace.setNamespace(argFirst, argSecond); return packageManager; } break; default: break; } //If all predefined templates in arguments didn't decided then create packages from them for (i = 0; i < argLength; i++) { if (!helper.isUndefined(arguments[i])) { packageName = arguments[i].name; packageAssets = arguments[i].assets; packageConfig = arguments[i].config; packageInstance = new AJL.Package(packageName, packageAssets, packageConfig); packageManager.setPackage(packageInstance); } } return packageManager; }; 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦреЗрдВред рдпрджрд┐ рдХреБрдЫ рднреА рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рддреБрд░рдВрдд рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╡реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рдЧреБрдЬрд╝рд░реЗ, рддреЛ рд╣рдо рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдФрд░ рдЙрд╕рдХреА рддрд▓рд╛рд╢ рдХреАред рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдкреИрдХреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдпрджрд┐ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рддреЛ рд╣рдо рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди (рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ) рдореЗрдВ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдЧрд░ рдХреЛрдИ рдирд╣реАрдВ рдЖрдпрд╛, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ AJL рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВред

рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдкрдврд╝рдиреЗ рдХреА рддрд╛рдХрдд рдкрд╛рдИред рдпрджрд┐ рдЖрдк рдПрдЬреЗрдПрд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ:

рдореБрдЦреНрдп рдкреГрд╖реНрда
рдЧрд┐рдЯрд╣рдм рд╕реНрд░реЛрдд
рдкреНрд░рд▓реЗрдЦрди

рдкреАрдПрд╕ рдореИрдВ рд╕рднреА рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдЖрд▓реЛрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реВрдВред рдмрд╕ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рднрд╛рдЧ рдЧрдпрд╛ :)

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


All Articles