浅析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 相关文章推荐
javascript innerText和innerHtml应用
Jan 28 Javascript
详解JavaScript函数绑定
Aug 18 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
javascript不同类型数据之间的运算的转换方法
Feb 13 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
May 07 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
Vue根据条件添加click事件的方式
Nov 09 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
Jquery中获取iframe的代码
2011/01/11 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
python实现合并两个数组的方法
2015/05/16 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Python列表切片操作实例总结
2019/02/19 Python
Python递归函数实例讲解
2019/02/27 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
建筑施工实习自我鉴定
2013/09/19 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
天网工程实施方案
2014/03/26 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
污水处理保证书
2015/05/09 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB