在bootstrap.js.coffee中,有一些代码:
define [], ->
App =
Models: {}
Collections: {}
Routers: {}
Helpers: {}
Views: {
Posts: {}
Common: {}
Sessions: {}
Tokens: {}
Passwords: {}
Confirmations: {}
}
我不明白为什么"定义"方法是在js代码? 而且,在其他代码中,这个"定义"方法无处不在!
资产/ Javascript角/模型/ post.js.coffee
define ['backbone', 'bootstrap'], (Backbone, App) ->
class App.Models.Post extends Backbone.Model
paramRoot: 'post'
urlRoot: '/posts'
defaults:
title: null
content: null
我想知道方法---"定义" ,该方法做了什么,为什么我无法找到方法细节写在哪里?
谢谢!
答案 0 :(得分:0)
我不是JavaScript人,但我相信这是RequireJS的一部分。
根据the docs,它似乎是定义具有依赖关系的函数:
如果模块具有依赖关系,则第一个参数应该是数组 依赖项名称,第二个参数应该是一个定义 功能。将调用该函数以一次性定义模块 依赖项已加载。该函数应该返回一个对象 定义模块。依赖项将传递给定义 作为函数参数运行,以与订单相同的顺序列出 在依赖项数组中:
//my/shirt.js now has some dependencies, a cart and inventory
//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 / shirt模块。这取决于我的/购物车 和我/库存。在磁盘上,文件的结构如下:
- 我/ cart.js
- 我/ inventory.js
- 我/ shirt.js
上面的函数调用指定了两个参数,“cart”和 “库存”。这些是由“./cart”表示的模块 “./inoryory”模块名称。
直到my / cart和my / inventory模块才会调用该函数 已加载,该功能接收模块作为“购物车” 和“库存”参数。
明确不鼓励定义全局变量的模块 一次可以在页面中存在多个版本的模块(参见 高级用法)。此外,函数参数的顺序应该 匹配依赖项的顺序。
函数调用的返回对象定义了“my / shirt” 模块。通过以这种方式定义模块,“my / shirt”不存在 一个全球性的对象。