浅析Javascript使用include/require

 更新时间:2013年11月13日 10:27:03   作者:  
它有一个要求就是你的前端js是作为模块式的开发, 在前端逻辑比较复杂的话, 使用模块式来进行前端开发应该是种不错的选择。这里只简单介绍一下

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数组和循环详解

    这篇文章主要介绍了JavaScript数组和循环详解,本文讲解了循环遍历数组、按顺序存储和访问值、以相反的顺序存储和访问值、在数组中搜索等内容,需要的朋友可以参考下
    2015-04-04
  • js实现敏感词过滤算法及实现逻辑

    js实现敏感词过滤算法及实现逻辑

    这篇文章主要介绍了js实现敏感词过滤算法及实现逻辑,文中介绍了dfa算法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 基于JS实现table导出Excel并保留样式

    基于JS实现table导出Excel并保留样式

    这篇文章主要介绍了基于JS实现table导出Excel并保留样式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法

    layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法

    今天小编就为大家分享一篇layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 如何开发出更好的JavaScript模块

    如何开发出更好的JavaScript模块

    给大家分享一下如何才能开发出更好的JavaScript模块和功能,有兴趣的朋友参考学习下吧。
    2017-12-12
  • JS获取并处理php数组的方法实例分析

    JS获取并处理php数组的方法实例分析

    这篇文章主要介绍了JS获取并处理php数组的方法,结合实例形式分析了php针对数组的创建、转换以及js处理数组的接收、遍历、转换等相关操作技巧,需要的朋友可以参考下
    2018-09-09
  • js传参数受特殊字符影响错误的解决方法

    js传参数受特殊字符影响错误的解决方法

    js传参数受特殊字符影响错误,如果不做处理,会产品传参错误,encodeURI 方法返回一个编码的URI,可以有效解决此问题,感兴趣的朋友可以参考下
    2013-10-10
  • javascript中if和switch,==和===详解

    javascript中if和switch,==和===详解

    这篇文章主要给大家详细介绍了javascript中if和switch,==和===的区别和联系,十分的细致实用,有需要的小伙伴可以参考下。
    2015-07-07
  • NodeJS与Mysql的交互示例代码

    NodeJS与Mysql的交互示例代码

    实现NodeJS与Mysql的交互首先把Mysql Module装到NodeJS中,具体实现及结果截图如下,有此需求的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • electron-builder 的基本使用及electron打包步骤

    electron-builder 的基本使用及electron打包步骤

    electron-builder 作为一个用于 Electron 应用程序打包的工具,需要下载并使用 Electron 运行时来创建可执行文件,这篇文章主要介绍了electron-builder 的基本使用,需要的朋友可以参考下
    2023-12-12

最新评论