文档章节

简易的js文件加载工具

大朱
 大朱
发布于 2016/06/17 16:17
字数 381
阅读 30
收藏 0

 原理大体就是通过ajax加载指定路径的js文件,在将其加载到内存中

(function(win){
	
	var ajax = function(){
		
		//js获取项目根路径                http://localhost:8080/uploader
		var getRootPath = function(){
		    //获取当前网址               http://localhost:8080/uploader/.....
		    var cur3wPath=window.document.location.href;
		    //获取主机地址之后的目录                    uploader/....
		    var pathName=window.document.location.pathname;
		    var pos=cur3wPath.indexOf(pathName);
		    //获取主机地址                        http://localhost:8080
		    var localhostPaht=cur3wPath.substring(0,pos);
		    //获取带"/"的项目名            /uploader
		    var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
		    return(localhostPaht+projectName);
		};
		
		//初始化目录
		var URI = getRootPath();
		var initURI = function(uri){
			URI = uri;
		};
		
		//获取XMLHttpRequest 对象
		var _xmlhttp = null;
		var getXMLHttpRequest=function(){
			if(_xmlhttp!=null){
				return _xmlhttp;
			}
			if(win.XMLHttpRequest){
				return new XMLHttpRequest();
			}else{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
		};
		_xmlhttp = getXMLHttpRequest();
		
		//去除头尾空格
		var _trim = function(data){return null==data?"":(data+"").replace(/(^\s*)|(\s*$)/g,"");};
		//全局对象转换
		var _globalEval = function(data){data&&_trim(data)&&(window.execScript||function(data){window.eval.call(window,data);})(data);};
		
		//ajax请求获取文件内容
		var getText = function(fileName){
			var url=URI+"/"+fileName;
			
			console.log("开始加载"+url);
			
			_xmlhttp.open("GET",url, false);
			_xmlhttp.send();
			if(_xmlhttp.readyState==4 && _xmlhttp.status==200){
				return _xmlhttp.responseText;
			}else if(_xmlhttp.readyState==4){
				throw new Error("加载文件 "+url+" 失败!");
			}
			
			console.log("加载"+url+"成功!");
		};
		
		//将文件内容转换为js对象
		var evalObj = function(text){
			_globalEval(text);//将文件内容转换为js对象
		};
		
		//加载文件
		var load = function(fileName){
			var _text = getText(fileName);
			//对象转换
			evalObj(_text);
		};
		
		//返回自定义ajax对象
		return {
			uri:URI,
			initURI:initURI,
			getText:getText,
			load:load
		};
		
	};
	
	//   "/js/allen.js"
	win.Loader = ajax();
	win.load = win.Loader.load;
	
	console.log("Loader 初始化完毕....");
	
})(window);

可以通过  Loader.load('/js/xxx.js');或者load('/js/xxx.js');

 

 

© 著作权归作者所有

共有 人打赏支持
大朱
粉丝 3
博文 22
码字总数 6690
作品 0
南京
高级程序员
私信 提问
JavaScript模块化进阶

写在前面 模块化简单来说就是是指把一个复杂的系统分解到多个模块以方便编码。JS模块化的大致流程为:CommonJS(服务端) -> AMD(浏览器端)-> UMD(兼容了CommonJS和AMD) -> ES Module(E...

Jee
2018/12/12
0
0
hijk 0.2.2 发布,自动化 JavaScript Web 开发包

hijk 是一个自动化的WebAPI开发包,全程使用JavaScript语言,只需要写一个标准JavaScript函数,复制到 js/目录下,就会自动加载为 WebAPI, 可以通过http提供网络服务,无需编译,修改后自动加...

iBoxDB
2014/07/01
1K
2
hijk 0.1 发布,自动化JavaScript WebAPI开发包

hijk是一个快速开发WebAPI的工具包,使用了JDK8 中的新命令jjs运行,全程使用JavaScript作为开发语言,无须编译代码, 工具包无须安装,在有JDK8的机器上复制就能使用. 使用简介: 使用 javasc...

iBoxDB
2014/06/19
2.4K
13
手把手教你撸一个简易的 webpack

背景 随着前端复杂度的不断提升,诞生出很多打包工具,比如最先的,。到后来的和。但是目前很多脚手架工具,比如已经帮我们集成了一些构建工具的使用。有的时候我们可能并不知道其内部的实现...

muwoo
2018/06/07
0
0
请问Javascript针对html代码的dom操作是否有简易工具可以进行处理?

Javascript可以与HTML代码交互,请问是否有简易工具可以实现?V8实现不了吧?比如: 有html代码: 有Javascript代码: 有什么工具能让我得到Javascript对html代码的操作结果?...

Edwy
2014/01/07
362
4

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
今天
3
0
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
10
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
9
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部