浅析Javascript使用include/require
include:function(jsurl){
if(jsurl==null||typeof(jsurl)!="string")return;
varjs=document.createElement("script");
js.type="text/javascript";
js.charset="utf-8";
js.src=jsurl;
$.ajaxSetup({cache:true});
$("head").append(js);
//$.getScript(jsurl);
}
需要注意的是该函数其实在发送GET请求的事情是jQuery.ajax的getScript()来处理的,但是在GET后的处理和$.getScript()不同,因此导致使用方法会不一样,getScript()一般需要把有依赖的函数写到它的回调函数中去,如:
$.getScript("some.js",function(){
//做写依赖some.js文件的事情.
});
而我们这里的include不需要这么写,而是直接:
include("some.js");
//这里可以直接写依赖some.js文件中定义的函数
另外就是关于文件缓存,默认情况下$.getScript是会在url后面加上一个时间戳,使得在第二次请求的时候不让浏览器去读取缓存文件,如果我们getScript("some.js"),最后在请求的时候会变成GETsome.js?_23432434534235之类的,这是一种强制不缓存的策略,在开发阶段是比较好的,但到了生产阶段,会导致用户的浏览器每次都不缓存我们的js脚本,这对效率是很大的影响,我们应该自己在js脚本后面自己加上版本戳,比如some.js?v=1,而不是使用每次都会变的时间戳,所以需要使用:
$.ajaxSetup({cache:true});
这样就会关闭jQuery自动在url后面加上时间戳的特性.
如果你的脚本大量的存在互相依赖关系,而又需要动态的决定加载哪些脚本,那么我推荐的是使用requirejs.
require(["some/module","a.js","b.js"],function(someModule){
//dosomething
});
它有一个要求就是你的前端js是作为模块式的开发,在前端逻辑比较复杂的话,使用模块式来进行前端开发应该是种不错的选择,而关于JS的模块式开发在今后文章再专门谈,这里只简单介绍一下,如果对这个方面感兴趣的可以到requireJs官网去看看.
相关文章
- JavaScript两种数组去重方法「建议收藏」
- labuladong的算法小抄的javascript实现-动态规划
- 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档
- 你也许不知道的 JavaScript 高级函数
- JavaScript中的Window.History返回对象的使用详解编程语言
- JavaScript使用prototype定义对象类型
- javascript层展开/关闭,带缓冲效果
- javascript验证码生成代码推荐学习
- JavaScript生成随机数并自动大小排序
- javascript构建一个xmlhttp对象池合理创建和使用xmlhttp对象
- JavaScript中使用正则匹配多条,且获取每条中的分组数据
- javascript对数组的常用操作代码数组方法总汇
- javascript中的if语句使用介绍
- JavaScript—window对象使用示例
- javascript使用百度地图api和html5特性获取浏览器位置
- Javascript学习笔记之对象篇(一):对象的使用和属性
- Javascript基础教程之数据类型(字符串String)