requireJS:

(1)实现js文件的异步加载,避免页面失去响应;

(2)管理模块之间的依赖性,便于代码的编写和维护。

加载:

<script src="js/require.js" ></script>

由于加载的模块较多,可能会造成页面失去响应,故可以将此 script 标签 放到 <body> 的后面

(you could also place the script tag end of the <body> section if you do not want the loading of the require.js script to block rendering)

<script src="js/require.js" defer async="true" ></script>

或者是个该标签加上 async 属性,由于IE只支持 defer,故把该属性也一并加上

(For browsers that support it, you could also add an async attribute to the script tag.)

<script src="js/require.js" data-main="js/main"></script>

date-main 指定程序的主模块入口,(由于require.js默认文件后缀是js,故main.js可以简写成main)

程序主模块入口文件:main.js

require(['jQuery', 'underscore', 'backbone', 'moduleA', 'moduleB', 'moduleC'], function($, _, Backbone, moduleA, moduleB, moduleC) {

//some code do sth

})

第一个参数:数组,程序所依赖的模块

第二个参数:回调函数,当把前面指定的模块都加载完成后,回调函数将被调用,前面所加载的模块讲义

注:此种情况加载成功的前提是,依赖模块与main.js在同一目录下,(涉及require另已配置属性baseUrl)

模块加载自定义:require.confige()

位置:主模块main.js的顶部

参数:一个对象{}

对象属性:

/* 逐一指定路径 */

baseUrl: '',//默认值为main.js所在目录

paths:{ //相对baseUrl的路径

"jquery": "jquery",

"underscore": "underscore.min",

   "backbone": "backbone.min"

}

/* 改变基目录 baseUrl,模块取相对基目录的路径 */

baseUrl: 'js',//默认值为main.js所在目录

paths:{

//相对baseUrl的路径,路径别名,

//requery()函数的第一个参数中的元素即该属性对象的属性名如:jquery

"jquery": "libs/jquery",

"underscore": "libs/underscore.min",

   "backbone": "libs/backbone.min"

}

/* 在另一台主机上 */

paths:{

"jquery": "https://code.jquery.com/jquery-3.1.1.min.js"

}

此时如果加载多个模块的话,就会发送多次HTTP请求,为了不影响页面的加载速度,可以在模块部署完毕后,借用require.js的优化工具 ———— r.js,将这多个模块合并到一个文件中,以减少HTTP请求数。

shim: { //配置不兼容的模块

"underscore": {

exports: '_'

},

"backbone": {

deps: ['underscore', 'jquery'],

exports: 'Backbone'

}

}

//exports: 输出变量名,外部模块调用时该模块的名称

//deps: 该模块的依赖模块

requery.js加载的模块必须是 按照AMD规范、用define()函数定义的模块,由于很多库不符合该规范,故requeryJS提供了 shim 配置属性来做到兼容

 

http://www.ruanyifeng.com/blog/2012/11/require_js.html

http://requirejs.org/docs/api.html

http://www.requirejs.cn/

最新文章

  1. [LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器
  2. 使用JNI封装底层input系统提供的event事件
  3. 文本标记器vi
  4. [转]Android的Handler总结
  5. maven手动安装jar到本地仓库
  6. makefile实例(3)-多个文件实例优化
  7. 1014. Waiting in Line (30)
  8. linux 第三天11讲
  9. vs2010断点使用技巧
  10. 51 NOD 1238 最小公倍数之和 V3
  11. Tomcat映射路径
  12. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
  13. 【转载】C++ getline函数用法
  14. shell编程 之 引号、括号的用法总结
  15. Python开发——4.集合和字符串拼接
  16. ionic popup 做法及样式修改
  17. 用最简单的例子理解观察者模式(Observer Pattern)
  18. Weex Workshop 挑战赛,等你来战!
  19. Javascript 链式作用域 function fn(){}和var fn=function(){}区别
  20. 采集baidu搜索信息的java源代码实现(大部分转发,少量自己修改)(使用了htmlunit和Jsoup)(转发:https://blog.csdn.net/zhaohang_1/article/details/44731039)

热门文章

  1. svn学习笔记(一)
  2. Python web前端 05 JavaScript
  3. 服务端 安装配置 svn
  4. P4890 Never&#183;island
  5. POJ - 2248 迭代加深
  6. MySQL 重设root密码
  7. poj3176
  8. docker 容器启动的模板以及注意事项
  9. GCD - Extreme(欧拉函数变形)
  10. (转)linux命令详解之useradd命令使用方法