require函数
require API 介绍
require是⼀个基于AMD规范实现的函数,它区别于传统的CommonJS require规范。因为它能够异步地加载动态的依赖,所以,我们对基于require的回调⽅式有了更多的需求。
局部require vs 全局require
局部require可以被解析成⼀个合符的require函数。
例如:
1 define(['require'], function (require) {
2//the require in here is a local require.
3 });
4
5 define(function (require, exports, module) {
6//the require in here is a local require.
7 });
局部require也⽀持其他标准实现的API。
全局require函数作⽤于全局,和define()类似。全局require和局部require有着相同的⾏为,包含以下特征:
模块ID应该认为是⼀个绝对的模块名称,⽽不是相对另⼀个模块的ID。
只有在同步的时候,基于require的回调才可以⽴即的运⾏,因为它不可能在顶层通过require(String)的形式同步地加载模块
实际中,我们经常会遇到⼀些阻塞模块加载的依赖,如果交互次数很多,需要⼤量的模块加载,应该采⽤全局依赖的形式去加载顶层模块。
require(String)
基于以下规范.根据参数,同步地返回模块ID所代表的模块。
如果模块没有加载或者执⾏完成,就会抛出错误。特别需要指出的是,在同步加载的回调中,如果模块没有加载完成,禁⽌动态的获取模块,否则,就会抛出异常。
使⽤define()定义模块时,依赖项中可以到⼀个AMD模块:
1 define(function (require) {
2var a = require('a');
3 });
⼯⼚⽅法可以被解析成require('')的调⽤形式(例如,使⽤语法解析器或者使⽤String()或者正则表达式)去到依赖,加载并且执⾏依赖,然后执⾏⼯⼚⽅法内部代码,通过这样的⽅式,就可以获取到模块。
require(Array, Function)
参数Array是⼀个由模块ID组成的数组。当模块ID所以代表的模块加载完成且可⽤时,回调函数Function才开始执⾏,并且只被执⾏⼀次。各个模块按照依赖数组中的位置顺序以参数的形式传⼊到Function⾥。
例如:
1 define(function (require) {
2 require(['a', 'b'], function (a, b) {
3//modules a and b are now available for use.
4 });
5 });
将形如[module ID] + '.extension'这种字符形式转化成URL路径。
例如:
1//cart.js contents:
2 define (function(require) {函数prototype
3// 模块ID名 './templates/a'
4// 扩展名 '.html'
5// 模板路径⼤致以这样的形式结尾 'modules/cart/templates/a.html'
6var templatePath = Url('./templates/a.html');
7 });
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论