定义的模块包装在一个function内 define(function () {
//Do setup work here
return {
color: "black",
size: "unisize“
}
});
Definition Functions with Dependencies
定义一个有模块依赖关系的模块 //module in the same directory as shirt.js
define(["./cart", "./inventory"], function(cart, inventory) {
//return an object to define the "my/shirt" module.
return {
color: "blue",
size: "large",
addToCart: function() {
inventory.decrement(this);
cart.add(this);
}
}
} );
那么,执行了这个模块的初始化会依次的加载顺序为
my/cart.js
my/inventory.js
my/shirt.js
Define a Module as a Function
定义的模块为返回一个function define(["my/cart", "my/inventory"], function(cart, inventory) {
//return a function to define "foo/title".
//It gets or sets the window title.
return function(title) {
return title ? (window.title = title) : inventory.storeName + ' ' + cart.name;
}
} );
Define a Module with Simplified CommonJS Wrapper
定义一个简单的commonjs包装 define(function(require, exports, module) {
var a = require('a'),
b = require('b');
//Return the module value
return function () {};
} );
这个定义就可以把模块内部的任何变量暴露给exports来作为模块的属性提供。比如:
内有个定义
var name=‘nickli’;
这个就仅仅是模块的内部私有变量,但是要想作为这个模块的属性提供就可以
Exports.name=“nickli”;
然后在require这个模块的时候 就可以访问到name这个属性了
最后一点,也是比较重要的一点
Define a Module with a Name 给一个模块设置一个名字,这个在多个模块压缩成一个文件的时候是必要的,因为否则模块系统就找不到你压缩的文件里面哪个模块是哪个。而且这个name的定义 在你的开发环境中也要符合模块文件的路径,比如你的m模块在a文件夹下,那么你的name 的定义也要是 a/m
//Explicitly defines the "foo/title" module:
define("foo/title",
["my/cart", "my/inventory"],
function(cart, inventory) {
//Define foo/title object in here.
}
); 模块化后的加载