标签:
RequireJS
异步模块定义
AMD :AMD就是使模块和它的依赖可以被异步的加载,但又按照正确的顺序
RequireJS是一个Javascript 文件和模块框架
RequireJS API 存在于RequireJS载入时创建的命名空间requirejs下。其主要API主要是下面三个函数:
define– 该函数用户创建模块。每个模块拥有一个唯一的模块ID,它被用于RequireJS的运行时函数,
define函数是一个全局函数,不需要使用requirejs命名空间.
require– 该函数用于读取依赖。同样它是一个全局函数,不需要使用requirejs命名空间.
config– 该函数用于配置RequireJS.
加载RequireJS:
data-main属性:给所有的脚本文件设置一个根路径。根据这个根路径,RequireJS将会去加载所有相关的模块
<script src="scripts/require.js" data-main="scripts/app.js"></script>
配置函数
如果你想改变RequireJS的默认配置来使用自己的配置,你可以使用require.configh函数。config函数需要传入一个可选参数对象,这个可选参数对象包括了许多的配置参数选项。下面是一些你可以使用的配置:
baseUrl——用于加载模块的根路径。
paths——用于映射不存在根路径下面的模块路径。
shims——配置在脚本/模块外面并没有使用RequireJS的函数依赖并且初始化函数。假设underscore并没有使用 RequireJS定义,但是你还是想通过RequireJS来使用它,那么你就需要在配置中把它定义为一个shim。
deps——加载依赖关系数组
下面是使用配置的一个例子:
require.config({
//By default load any module IDs from scripts/app
baseUrl: ‘scripts/app‘,
//except, if the module ID starts with "lib"
paths: {
lib: ‘../lib‘
},
// load backbone as a shim
shim: {
‘backbone‘: {
//The underscore script dependency should be loaded before loading backbone.js
deps: [‘underscore‘],
// use the global ‘Backbone‘ as the module name.
exports: ‘Backbone‘
}
}
});
用RequireJS定义模块
模块是进行了内部实现封装、暴露接口和合理限制范围的对象。ReuqireJS提供了define函数用于定义模块。按章惯例每个Javascript文件只应该定义一个模块。define函数接受一个依赖数组和一个包含模块定义的函数。通常模块定义函数会把前面的数组中的依赖模块按顺序做为参数接收。例如,下面是一个简单的模块定义:
define(["logger"], function(logger) {
return {
firstName: “John",
lastName: “Black“,
sayHello: function () {
logger.log(‘hello’);
}
}
}
);
我们看,一个包含了logger的模块依赖数组被传给了define函数,该模块后面会被调用。同样我们看所定义的模块中有一个名为logger的参数,它会被设置为logger模块。每一个模块都应该返回它的API.这个示例中我们有两个属性(firstName和lastName)和一个函数(sayHello)。然后,只要你后面定义的模块通过ID来引用这个模块,你就可以使用其暴露的API。
使用require函数
在RequireJS中另外一个非常有用的函数是require函数。require函数用于加载模块依赖但并不会创建一个模块。例如:下面就是使用require定义了能够使用jQuery的一个函数。
require([‘jquery‘], function ($) {
//jQuery was loaded and can be used now
});
标签:
原文地址:http://www.cnblogs.com/bellow/p/4715422.html