RequireJS的几种define定义方式

来源:互联网 发布:蒋方舟扒皮知乎 编辑:程序博客网 时间:2024/06/05 04:17
定义简单的键值对
[javascript] view plain copy
 print?
  1. define({  
  2.     color: "black",  
  3.     size: "unisize"  
  4. });  

定义不带依赖的函数
[javascript] view plain copy
 print?
  1. define(function () {  
  2.     //Do setup work here  
  3.   
  4.   
  5.     return {  
  6.         color: "black",  
  7.         size: "unisize"  
  8.     }  
  9. });  

存在依赖的函数式定义
如果模块存在依赖:则第一个参数是依赖的名称数组;第二个参数是函数,在模块的所有依赖加载完毕后,该函数会被调用来定义该模块,因此该模块应该返回一个定义了本模块的object。依赖关系会以参数的形式注入到该函数上,参数列表与依赖名称列表一一对应。
[javascript] view plain copy
 print?
  1. define(["./cart""./inventory"], function(cart, inventory) {  
  2.         //return an object to define the "my/shirt" module.  
  3.         return {  
  4.             color: "blue",  
  5.             size: "large",  
  6.             addToCart: function() {  
  7.                 inventory.decrement(this);  
  8.                 cart.add(this);  
  9.             }  
  10.         }  
  11.     }  
  12. );  

将模块定义为一个函数
对模块的返回值类型并没有强制为一定是个object,任何函数的返回值都是允许的。此处是一个返回了函数的模块定义:
[javascript] view plain copy
 print?
  1. define(["my/cart""my/inventory"],  
  2.     function(cart, inventory) {  
  3.         //return a function to define "foo/title".  
  4.         //It gets or sets the window title.  
  5.         return function(title) {  
  6.             return title ? (window.title = title) :  
  7.                    inventory.storeName + ' ' + cart.name;  
  8.         }  
  9.     }  
  10. );  

定义一个命名模块
你可能会看到一些define()中包含了一个模块名称作为首个参数:
[javascript] view plain copy
 print?
  1. define("foo/title",  
  2.     ["my/cart""my/inventory"],  
  3.     function(cart, inventory) {  
  4.         //Define foo/title object in here.  
  5.    }  
  6. );  
原创粉丝点击