【发布时间】:2014-06-23 08:11:07
【问题描述】:
从日志中,Backbone 现在从 v1.1.1 开始为 AMD (Require.js) 注册自己。
太好了,所以我尝试对一个模块做同样的事情,但有些东西我不明白。
如果我们查看 section 4 of annotated sources 的来源,该模块不会返回全局 Backbone。
不需要 shim 和 window.Backbone 可用。但是 Backbone 怎么不能被 undefined 呢?
// 定义主干模块
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
root.Backbone = factory(root, exports, _, $);
});
// 需要主干模块
require(['backbone'], function (Backbone) {
Backbone // is not undefined ?
});
//模态模块定义
define(['jquery'], function ($) {
root.Modal = factory(root, {}, $);
});
// 需要模态模块
require(['modal'], function (Modal) {
Modal // undefined
});
进入我的模块(使用相同的结构),当我需要我的模块时,如果我没有返回任何东西,我会得到undefined。
我必须返回 root.Modal 才能使其工作。 return root.Modal = factory(root, {}, $);
主要问题是“如何在模块不返回任何内容的情况下需要模块?”
我在 requireJS 上遗漏了一些东西,但我没有找到。
【问题讨论】:
-
永远,永远不要使用 window.Backbone,如果它像 AMD 模块一样注册,您不需要“shim”,您的文件命名为“backbone.js”?
-
我不使用 window.Backbone :) 你说的是我的模块文件吗?我有具有相同文件结构的 modal.js。
-
如果您在模块中调用“backbone”,则必须拥有“backbone.js”文件,除非您在此名称之前进行了映射...
标签: javascript backbone.js requirejs amd