【发布时间】:2012-04-30 16:07:05
【问题描述】:
我一直在尝试修改我尚未完成的 ember 应用以使用 require.js
它主要是为了兴趣价值,当我想为我的车把模板使用 require-text 时,我开始研究它,以方便起见。所以我还没有发现自己正在研究它以获得任何与 AMD 相关的性能胜利或类似的东西。但是现在我已经开始通过定义模块来设置我的模块了,我发现它更容易阅读并愿意坚持下去。
有一个关于堆栈溢出的问题,被问到的人已经回来并发布了他们的发现Ember.js and RequireJS,但没有其他示例,例如 todo MVC 上的示例,可以在有关如何优化结构和引用文件的参考资料中找到在更复杂的应用中。
所以无论如何,我的问题是:正确使用 require JS 需要遵循哪些规则。它实现了什么(除了访问 AMD)?对于一个不需要它的测试项目,我很难理解它,但我想学习正确的 ember 相关原理,以便将来使用它。
我从示例代码中看到,这个想法可能是从模块中删除对全局命名空间的所有引用。那是对的吗?周围没有足够的例子让我发现一个模式。
目前,我结构顶层的文件中可能包含类似这样的内容
<script>
define(['jquery',
'app/controllers/mailshotlist',
'app/controllers/sites',
'ember'],
function($, MailShotList, Sites) {
var App = Em.Application.create({
Views: Em.Namespace.create(),
Models: Em.Namespace.create(),
Controllers: Em.Namespace.create(),
init: function() {
this._super();
this.Controllers.set('Sites',Sites.create());
this.Controllers.set('MailShotList',MailShotList.create({
sitesControllerBinding: 'App.Controllers.Sites'
}));
}
});
return window.App = App;
});
</script>
因此,尝试在应用初始化时将显式 app.x 引用拼接在一起。因为我猜如果您的模块都在代码中显式地相互引用,那么它的模块化不正确。我目前还没有到想要重用模块的阶段,但我认为这是目标之一
我不希望这变成关于 AMD 是否值得的辩论,我的问题是关于需要遵循哪些规则才能充分利用 ember 和 require js。虽然如果有充分的具体原因不使用 ember 和 require 那么那会很有趣。
我想我有点啰嗦,冒着将其锁定为“非生产性”的风险,但如果您能理解我的问题以及我想要理解的内容(或者如果我完全找错了树)那么请回复
【问题讨论】:
-
您现在有任何示例/链接想要分享吗?
-
恐怕我实际上最终使用骨干构建了那个特定项目。你对具体哪一点感兴趣?