首页 > 代码库 > 浅谈js模块加载方式(初级)
浅谈js模块加载方式(初级)
1.简介: 前端模块化开发日渐鼎盛,如何将零散的插件或者是普通的js脚本文件统一管理及引用,是众多开发者共同的目标。本人是从事.net开发的,最近对前端的一些东西特别的感兴趣,也会尝试的夹杂一点自己的想法,写一些小东西。东西不牛逼,但是感觉用起来还是方便那么一点的。下面就展示一下简短的小代码。
2.中心思想:通过外部调用事先封装好的模块加载方法,传入参数(包括主目录及模块js或者css的目录 ),在程序运行的同时,会动态的将相应的css或者是js代码追加引用到head标签内,这样,就可以使用被引用的文件的样式或者方法啦。
1 (function(req) { 2 window._Req= req; 3 })((function($) { 4 var _factory = function() {}; //模块工厂 5 //docker 6 _factory.prototype = { 7 _origin: location.origin || location.protocol + "//" + location.host,//域名地址 8 _aim: null, 9 _config: function(param) { 10 var _default = { //默认参数 11 _coreDir: "", 12 _moduleArr: [ 13 [‘‘, ‘‘] 14 ], //模块数组 15 }, 16 _opt = {}; 17 $.extend(_opt, _default); 18 if (typeof param === ‘object‘) 19 $.extend(_opt, param); 20 this._aim = _opt; 21 this._load(); //加载模块 22 }, 23 _load: function() { 24 try { 25 var _modules = this._aim._moduleArr, 26 _core = this._aim._coreDir; 27 _modules.forEach(function(_element) { 28 _element.forEach(function(_ele) { 29 var _index = _ele.lastIndexOf(‘.‘), 30 _moduleType = _ele.substring(_index + 1), 31 _moduleDir = _core + ‘/‘ + _ele, 32 _module = null; 33 switch (_moduleType) { 34 case ‘js‘: 35 _module = document.createElement(‘script‘); 36 _module.src =http://www.mamicode.com/ _moduleDir; 37 break; 38 case ‘css‘: 39 _module = document.createElement(‘link‘); 40 _module.href =http://www.mamicode.com/ _moduleDir; 41 _module.rel = ‘stylesheet‘; 42 break; 43 default: 44 console.error("对不起模块类型不匹配"); 45 break; 46 } 47 document.head.appendChild(_module); 48 }); 49 }, this); 50 } catch (ex) { 51 throw ex; 52 } 53 } 54 }; 55 return new _factory(); //返回工厂 56 })(jQuery))
1 _Req._config({ 2 _coreDir: "../jq-package", 3 _moduleArr: [ 4 [‘js/ui-dialog.js‘, ‘css/dialog.css‘] 5 ], //模块数组 6 });
浅谈js模块加载方式(初级)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。