我一直在尝试重新设计我尚未完成的 ember 应用程序以使用 require.js
它主要是为了兴趣价值,当我想为我的车把模板使用 require-text 时,为了方便起见,我开始研究它。所以我还没有发现自己正在研究它以获得任何与 AMD 相关的性能胜利或类似的东西。但是现在我已经开始通过定义模块来设置我的模块了,我发现它更容易阅读并愿意坚持下去。
有一个关于堆栈溢出的问题,被问到的人回来并发布了他们的发现Ember.js 和 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 一起使用,那将会很有趣。
我想我有点啰嗦,冒着把它锁定为“非生产性”的风险,但如果你能理解我的问题以及我想要理解的内容(或者如果我完全找错了树),那么请发布回答