RequireJS 是一个 JavaScript 模块加载器,主要用于实现异步或动态加载 js 文件,它的模块管理遵守AMD规范(Asynchronous Module Definition)。通过 RequireJS 我们可以很好地解决 js文件间相互依赖关系及 js 文件过多导致的页面加载慢等问题,很好地提高了代码的性能和可维护性。
RequireJS的基本设计思想是:通过define方法将代码定义为模块然后通过require方法,实现代码的模块加载。下面简单说下 RequireJS 的使用方法:
require.js 文件的引入
在引入 require.js 文件之前,我们需要先获取它。
与其他的 js 文件一样,require.js 同样通过 script 便签引入,代码如下:
<script data-main="js/main" src="scripts/require.js"></script>
注意:data-main 指向配置文件位置,比如上面代码中为 js文件下的 main.js 文件。省略此参数则在 require.js 文件底部配置亦可。
require.js 的基本配置
require.js 通过 config 方法进行配置,config 方法接受一个对象作为参数。完整的配置代码如下:
require.config({ baseUrl:'js/libs', paths: { 'qrcode' : 'libs/jquery.qrcode.min', 'lazyload' : 'libs/lazyload.min', 'videojs' : 'libs/videojs.min' }, shim: { 'jquery.scroll': { deps: [ 'jquery' ], exports: 'jQuery.fn.scroll' }, } });
其中,baseURL 与 shim 可以省略。
baseURL:设置基准路径。默认为当前位置所在路径。
paths:指定各个模块的位置。这个位置可以是同一个服务器上的相对位置,也可以是外部网址。其中每一组参数的左侧定义模块的ID,右侧定义模块的路径,路径不包含“.js”扩展名。可以为每个模块定义多个位置,如果第一个位置加载失败,则加载第二个位置。
shim:有些库不是AMD兼容的,这时就需要指定shim属性的值。shim可以理解成“垫片”,用来帮助require.js加载非AMD规范的库。其中 deps 定义依赖关系, exports 定义输出方式。
如何请求 require.js
定义好的模块需要调用时采用如下方式调用:
require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){ // Some Code });
如果需要加载错误处理函数,可以这么写:
require( ['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){ // Some Code }, function (err){ // Some Code } );
require 的三个参数分别为依赖关系、回调函数、错误处理函数。
定义一个自己的模块
除了一些现有的模块文件,我们也可以使用 define 定义一个自己的模块。定义方法如下:
define(['moduleA','moduleB'], function(moduleA, moduleB) { // Some Code });
第一个参数为依赖关系,第二个参数为回调函数。需要注意的是函数的参数与前面的依赖一一对应。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!