【Require.js】JavaScript文件和模块加载器

官网:Require.js
中文站:Require.js

Require.js 是一款JavaScript 模块加载器。

1、Require.js 要解决的问题

1. 实现js文件的异步加载,减少js加载响应时间。
2. 管理各个模块之间的依赖,方便代码维护。

2、 Require.js 的引入

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

其中,data-main是程序的入口。require.js 在加载的时候会检查data-main 属性,你可以在data-main指向的脚本中设置模板加载 选项,然后加载第一个应用模块。同时,为避免引入的require.js阻塞页面,可以使用异步加载。

<script data-main="scripts/main.js" src="scripts/require.js" defer async="true" ></script>

3、 Require.js 配置参数

require.config({
    baseUrl: "/scripts",
    paths: {
        "a": "a",
        "b": "b",
    }
  });

其中,require.config()支持的配置项有:

baseUrl:
    所有模块的查找根路径。所以上面的示例中,a.js 和 b.js 都是在scripts目录下。如未显式设置baseUrl,则默认值是加载require.js的HTML所处的位置。如果用了data-main属性,则该路径就变成baseUrl。

paths:
    path映射那些不直接放置于baseUrl下的模块名。设置path时起始位置是相对于baseUrl的,除非该path设置以"/"开头或含有URL协议(如http:)。

shim: 
    为那些没有使用define()来声明依赖关系、设置模块的"浏览器全局变量注入"型脚本做依赖和导出配置。例如:backbone.js、underscore.js 等。

map: 
    对于给定的模块前缀,使用一个不同的模块ID来加载该模块。该手段对于某些大型项目很重要:如有两类模块需要使用不同版本的"jquery",但它们之间仍需要一定的协同。 在那些基于上下文的多版本实现中很难做到这一点。而且,paths配置仅用于为模块ID设置root paths,而不是为了将一个模块ID映射到另一个。

config:
    常常需要将配置信息传给一个模块。这些配置往往是application级别的信息,需要一个手段将它们向下传递给模块。在RequireJS中,基于requirejs.config()的config配置项来实现。要获取这些信息的模块可以加载特殊的依赖“module”,并调用module.config()。

packages: 
    从CommonJS包(package)中加载模块。

nodeIdCompat: 
    对于节点来说,模块ID example.js 和 example 是一样的。但是默认情况下,在require.js中这是两个不同的模块ID。所以如果你使用模块管理工具npm来install的话,你需要设置此项为true,来避免解析错误。此项仅适用于处理“.js”后缀不同的问题。

waitSeconds: 
    在放弃加载一个脚本之前等待的秒数。设为0禁用等待超时。默认为7秒。

context: 
    命名一个加载上下文。这允许require.js在同一页面上加载模块的多个版本,如果每个顶层require调用都指定了一个唯一的上下文字符串。
deps: 
    指定要加载的一个依赖数组。当将require设置为一个config object在加载require.js之前使用时很有用。一旦require.js被定义,这些依赖就已加载。使用deps就像调用require([]),但它在loader处理配置完毕之后就立即生效。它并不阻塞其他的require()调用,它仅是指定某些模块作为config块的一部分而异步加载的手段而已。

callback:
     在deps加载完毕后执行的函数。当将require设置为一个config object在加载require.js之前使用时很有用,其作为配置的deps数组加载完毕后为require指定的函数。

enforceDefine: 
    如果设置为true,则当一个脚本不是通过define()定义且不具备可供检查的shim导出字串值时,就会抛出错误。参考在IE中捕获加载错误一节。

xhtml: 
     如果设置为true,则使用document.createElementNS()去创建script元素。

urlArgs: 
    RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。

4、 模块定义

5、 一些注意事项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值