文档章节

简易的js文件加载工具

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

精选30+云产品,助力企业轻松上云!>>>

 原理大体就是通过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
南京
高级程序员
私信 提问
加载中
请先登录后再评论。
博客目录 [2017-06-30]

C#(46) 超简易静态Web服务器 C# 生成不重复随机字符串 (1秒内生成1000000个) .NET Framework C# 简易日志记录类 C# 读写INI文件 C# 拷贝文件夹 C# 执行bat文件 Spring.net 获取SQL连接字符...

xiao张
2013/04/24
0
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
1.9K
2
国产JavaScript框架 - Como JS

Como 是一款代码简易而功能强大的 Javascript 框架,这也是开发者在工作过程中的经验总结,实用性强;通过它,能够简化Javascript 代码开发,增强代码重用性,能够异步按需加载 js 和 css 文...

匿名
2009/12/24
7.5K
0
webpack4.0 CheatSheet

还在为webpack的配置而烦恼吗?这里有一份webpack从简易到高级版本的配置。还附赠配置地址,你想要吗?不,你不想。老老实实自己配置去吧。 压箱底的笔记而已,大家看看乐乐就好了,这是笔者...

cherryvenus
2019/03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在屏幕底部对齐视图? - How to align views at the bottom of the screen?

问题: Here's my layout code; 这是我的布局代码; <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orien......

fyin1314
38分钟前
8
0
微信小程序如何修改小程序名称

如何修改微信小程序的名称。 微信小程序是在 app.json 中定义的。 你可用修改 app.json 中的 navigationBarTitleText": “云开发 QuickStart”, 字段。 xiug修改后保存,你就可以看到小程序的...

honeymoose
56分钟前
27
0
将符合ISO 8601的字符串转换为java.util.Date - Converting ISO 8601-compliant String to java.util.Date

问题: I am trying to convert an ISO 8601 formatted String to a java.util.Date . 我正在尝试将ISO 8601格式的String转换为java.util.Date 。 I found the pattern yyyy-MM-dd'T'HH:mm:s......

富含淀粉
今天
17
0
jQuery选择器中的通配符 - Wildcards in jQuery selectors

问题: I'm trying to use a wildcard to get the id of all the elements whose id begin with "jander". 我正在尝试使用通配符来获取id以“jander”开头的所有元素的id。 I tried $('#jand......

法国红酒甜
今天
19
0
唐山5.1级地震 百度人工智能技术帮上忙:成都减灾所提前30秒让北京、天津市民收到预警

本文作者:y****n 7月12日6时38分在河北唐山市古冶区发生5.1级地震,成都高新减灾研究所与应急管理部门联合建成的大陆地震预警网成功预警该地震,给唐山市提前3秒预警,给天津市提前33秒预警...

百度开发者中心
昨天
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部