浅析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自执行函数的几种不同写法的比较
Aug 16 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
JS实现很实用的对联广告代码(可自适应高度)
Sep 18 Javascript
jquery获取文档高度和窗口高度汇总
Jan 25 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
eslint 的三大通用规则详解
May 16 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 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
php zip文件解压类代码
2009/12/02 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php的curl封装类用法实例
2014/11/07 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php实现word转html的方法
2016/01/22 PHP
使用正则替换变量
2007/05/05 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
python对字典进行排序实例
2014/09/25 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python实现媒体播放器功能
2018/02/11 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python迭代dict的key和value的方法
2018/07/06 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
毕业生就业协议书
2014/04/11 职场文书
食品采购员岗位职责
2014/04/14 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
各种货币符号快捷输入
2022/02/17 杂记