js模块加载方式浅析
简介:前端模块化开发日渐鼎盛,如何将零散的插件或者是普通的js脚本文件统一管理及引用,是众多开发者共同的目标。本人是从事.net开发的,最近对前端的一些东西特别的感兴趣,也会尝试的夹杂一点自己的想法,写一些小东西。东西不牛逼,但是感觉用起来还是方便那么一点的。
下面就展示一下简短的小代码。
中心思想:通过外部调用事先封装好的模块加载方法,传入参数(包括主目录及模块js或者css的目录),在程序运行的同时,会动态的将相应的css或者是js代码追加引用到head标签内,这样,就可以使用被引用的文件的样式或者方法啦。
源文件:
(function(req){
window._Req=req;
})((function($){
var_factory=function(){};//模块工厂
//docker
_factory.prototype={
_origin:location.origin||location.protocol+"//"+location.host,//域名地址
_aim:null,
_config:function(param){
var_default={//默认参数
_coreDir:"",
_moduleArr:[
['','']
],//模块数组
},
_opt={};
$.extend(_opt,_default);
if(typeofparam==='object')
$.extend(_opt,param);
this._aim=_opt;
this._load();//加载模块
},
_load:function(){
try{
var_modules=this._aim._moduleArr,
_core=this._aim._coreDir;
_modules.forEach(function(_element){
_element.forEach(function(_ele){
var_index=_ele.lastIndexOf('.'),
_moduleType=_ele.substring(_index+1),
_moduleDir=_core+'/'+_ele,
_module=null;
switch(_moduleType){
case'js':
_module=document.createElement('script');
_module.src=_moduleDir;
break;
case'css':
_module=document.createElement('link');
_module.href=_moduleDir;
_module.rel='stylesheet';
break;
default:
console.error("对不起模块类型不匹配");
break;
}
document.head.appendChild(_module);
});
},this);
}catch(ex){
throwex;
}
}
};
returnnew_factory();//返回工厂
})(jQuery))
调用:
_Req._config({
_coreDir:"../jq-package",
_moduleArr:[
['js/ui-dialog.js','css/dialog.css']
],//模块数组
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。