【问题标题】:ember.js and require.jsember.js 和 require.js
【发布时间】: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 那么那会很有趣。

我想我有点啰嗦,冒着将其锁定为“非生产性”的风险,但如果您能理解我的问题以及我想要理解的内容(或者如果我完全找错了树)那么请回复

【问题讨论】:

  • 您现在有任何示例/链接想要分享吗?
  • 恐怕我实际上最终使用骨干构建了那个特定项目。你对具体哪一点感兴趣?

标签: ember.js requirejs


【解决方案1】:

我还没有做出自己的看法,但这就是 Ember.js 开发人员 Tom Dale 对此事的看法。

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

【讨论】:

  • 为链接欢呼。我认为问题在于试图在没有真正理由的情况下使用新的东西,这就是为什么我很难提出一个实际的问题。有点与汤姆的帖子一致。谢谢
  • define('amd-is-not-the-answer', ['app/weakArguments', 'app/experience'], function(weakArgs, experience){ /* TODO: use var expr = experience;*/ var weakArgs = weakArgs; return require('/js/excuses'); });
【解决方案2】:

如果你还想使用 EmberJS 和 RequireJS,

我刚刚上传了一个用于 EmberJS+RequireJS 的入门工具包到 github,你可以查看它https://github.com/fernandogmar/Emberjs-RequireJS

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

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

【讨论】:

  • 不错!节省了我很多时间。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 2013-06-09
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多