浅析Javascript使用include/require


Posted in Javascript onNovember 13, 2013

1. javascript include
Javascript 没有 include 语句有时挺讨厌, 特别是脚本和脚本之间存在依存的关系, 你根本就不能动态的去控制加载脚本, 一般来说最简单的 include 基本就是这样的, 当然我们这个使用了 jQuery 来进行请求脚本.

  include: function (jsurl) {
        if (jsurl == null || typeof(jsurl) != 'string') return;
        var js = 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") , 最后在请求的时候会变成 GET some.js?_23432434534235 之类的, 这是一种强制不缓存的策略, 在开发阶段是比较好的, 但到了生产阶段, 会导致用户的浏览器每次都不缓存我们的js脚本, 这对效率是很大的影响, 我们应该自己在js脚本后面自己加上版本戳, 比如 some.js?v=1 , 而不是使用每次都会变的时间戳, 所以需要使用:

$.ajaxSetup({ cache : true });

这样就会关闭jQuery自动在url后面加上时间戳的特性.

requireJs

如果你的脚本大量的存在互相依赖关系, 而又需要动态的决定加载哪些脚本, 那么我推荐的是使用requirejs .

它的基本用法是:

require(["some/module", "a.js", "b.js"], function(someModule) {
    // do something
});

它有一个要求就是你的前端js是作为模块式的开发, 在前端逻辑比较复杂的话, 使用模块式来进行前端开发应该是种不错的选择, 而关于JS的模块式开发在今后文章再专门谈, 这里只简单介绍一下, 如果对这个方面感兴趣的可以到requireJs官网去看看.

Javascript 相关文章推荐
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
Node.js的基本知识简单汇总
Sep 19 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
JavaScript动态加载重复绑定问题
Apr 01 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
使用vue实现通过变量动态拼接url
Jul 22 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 #Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 #Javascript
如何判断鼠标是否在DIV的区域内
Nov 13 #Javascript
HTTP 304错误的详细讲解
Nov 13 #Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 #Javascript
js字母大小写转换实现方法总结
Nov 13 #Javascript
jQuery替换字符串(实例代码)
Nov 13 #Javascript
You might like
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
js文字横向滚动特效
2015/11/11 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Python对字符串实现去重操作的方法示例
2017/08/11 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
数学专业推荐信范文
2013/11/21 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB