📅  最后修改于: 2020-10-20 04:59:27             🧑  作者: Mango
RequireJS中的模块是作用域对象,并且在全局名称空间中不可用。因此,全局名称空间将不会受到污染。 RequireJS语法允许更快地加载模块,而不必担心跟踪依赖关系的顺序。您可以在同一页面中加载同一模块的多个版本。
使用define()函数定义模块;同样的函数也用于加载模块。
如果模块只是名称和值对的集合,则可以使用以下语法-
define({
state: "karnataka",
city: "bangalore"
});
模块也可以将函数用于框架,而无需依赖。这可以通过使用以下语法来完成-
define(function () {
//Do setup work here
return {
state: "karnataka",
city: "bangalore"
}
});
如果模块具有依赖项,则以下语法显示第一个参数(依赖项名称数组),第二个参数(定义函数)和定义该模块的返回对象的位置-
define(["./mnc", "./startup"],
function(mnc, startup) {
return {
state: "karnataka",
city: "bangalore",
addCompany: function() {
mnc.decrement(this);
startup.add(this);
}
}
}
);
模块不是必须仅返回对象,也可以返回函数的任何有效值。以下语法用于将模块定义为函数-
define(["./mnc", "./startup"],
function(mnc, startup) {
return function(title) {
return title ? (window.title = title) :
startup.storeName + ' ' + mnc.name;
}
}
);
在某些情况下,您可能必须包含模块名称作为define()的第一个参数。这可以通过使用以下语法来完成-
define("js2/title",
["js1/mnc", "js1/startup"],
function(mnc, startup) {
//Define js2/title object in here.
}
);