浅析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 当前日期加(天、周、月、年)
Aug 09 Javascript
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
js获取页面传来参数的方法
Sep 06 Javascript
使用BootStrap实现用户登录界面UI
Aug 10 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
Dec 23 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
JavaScript注册时密码强度校验代码
Jun 30 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 Javascript
Ajax实现三级联动效果
Oct 05 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/06/20 PHP
PHP中echo和print的区别
2014/08/28 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
python中的yield使用方法
2014/02/11 Python
Python中random模块用法实例分析
2015/05/19 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python Pillow Image Invert
2019/01/22 Python
自学python用什么系统好
2020/06/23 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
交通事故检查书范文
2014/01/30 职场文书
十佳护士获奖感言
2014/02/18 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
师德师风自查材料
2014/10/14 职场文书
董存瑞观后感
2015/06/11 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
入党转正申请书范文
2019/05/20 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js