浅析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 连接数据库如何操作数据库中的数据
Nov 23 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
JS数组的遍历方式for循环与for...in
Jul 31 Javascript
jquery文档操作wrap()方法实例简述
Jan 10 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
Nov 18 Javascript
javascript实现手动点赞效果
Apr 09 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 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操作文件的一些基本函数使用示例
2014/11/18 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
基于JavaScript实现树形下拉框
2016/08/10 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
浅谈js中的this问题
2017/08/31 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
财政专业求职信范文
2014/02/19 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
星级党支部申报材料
2014/05/31 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
小学语文复习计划
2015/01/19 职场文书
北大自主招生自荐信
2015/03/04 职场文书