ember.js和require.js

时间:2012-04-30 16:07:05

标签: ember.js requirejs

我一直在尝试修改我尚未完成的使用require.js的ember应用程序

这主要是为了感兴趣的价值,为了方便起见,当我想为我的车把模板使用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是否值得的辩论,我的问题是具体说明需要遵循哪些规则来充分利用带有require js的ember。虽然如果没有使用带有需求的余烬有很好的具体原因,那么这将是有趣的。

我认为我有点絮絮叨叨,冒着把它锁定为“非生产性”的风险但是如果你能理解我的问题以及我想要理解的东西(或者我是否完全吠叫了错误的树)那么请发表回复

4 个答案:

答案 0 :(得分:5)

尚未表达我自己的观点,但这就是Ember.js的开发人员Tom Dale在此事上所说的。

http://tomdale.net/2012/01/amd-is-not-the-answer/

答案 1 :(得分:3)

如果您仍想使用EmberJS和RequireJS,

我刚刚上传到github的EmberJS + RequireJS入门套件,您可以查看https://github.com/fernandogmar/Emberjs-RequireJS

这是我对足够大的项目的特别建议......

任何好的建议都将受到高度赞赏。玩得开心!

答案 2 :(得分:2)

没有什么能使emberjs / requirejs关系变得特别,它们是正交的。 Ember是否解决了脚本文件之间的依赖关系?不,需要一个MVC框架吗?不,那有什么问题?使用带有emberjs的requirejs与使用任何不提供AMD的库的requirejs没有什么不同。所以没什么特别的。你想要AMD吗?使用requirejs定义自己的模块并解决它们之间的依赖关系,这就是重点。

唯一的问题是,你有没有问题需要解决?

答案 3 :(得分:1)

正如@mpm所写,Ember.js + RequireJS或其他没有AMD框架+ RequireJS没什么特别的。

良好的起点是RequireJS文档和Ember.js + RequireJS TodoMVC项目示例: