RequireJS - AMD 模块



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.
   }
   
);

模块加载

广告