RequireJS AMD模块
RequireJS AMD模块
RequireJS中的模块是作用域对象,在全局命名空间中不可用。因此,全局命名空间不会受到污染。RequireJS语法允许更快地加载模块,而不必担心跟踪依赖关系的顺序。您可以在同一页面中加载同一模块的多个版本。
定义模块
模块是使用define()函数定义的;同样的功能也用于加载模块。
简单名称/值对
如果模块只是名称和值对的集合,则可以使用以下语法:
define({ state: "karnataka", city: "bangalore" });
定义函数
模块还可以将函数用于框架,而不具有依赖性。可以使用以下语法执行此操作:
define(function () { //Do setup work here return { state: "karnataka", city: "bangalore" } });
定义具有相依性的函数
如果模块具有依赖项,则定义模块的第一个参数(依赖项名称数组)、第二个参数(定义函数)和return对象的位置如下所示
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("js2/title", ["js1/mnc", "js1/startup"], function(mnc, startup) { //Define js2/title object in here. } );