我已经开始使用ember应用程序套件,并阅读了它的指南。然而,我很难理解常规应用程序和Ember app Kit使用ES6模块构建各种位的方式之间的差异,而不是将所有内容都填充到用作命名空间的全局变量中(例如,应用程序)。
我发现这方面的解释不是很清楚:
- Ember如何在自动生成模型、视图、路线和控制器中应用其魔力
- 它希望在哪里找到它们
- 我应该遵循哪些命名约定
- 如果我已经创建了一个模板、路由或控制器,而Ember没有找到/检测它,只是在它的位置生成一个默认的,我该如何找到它的位置;或者在这种情况下进行调试
- 与使用Ember应用套件的开发相比,标准Ember应用程序开发中的这些有什么不同
非常感谢!
EDIT(20140506):
这些资源很好地解释了ES6模块和EAK:
- 简介:evitrout:开始使用ES6
- 一系列的帖子:[toranb:http://toranbillups.com/blog/archive/2014/04/06/Building-your-own-ember-app-kit-lite/),带有ES6模块专用
实际上,就在几周前,我还写了一个关于这个主题的博客系列。我从一个基本的(全局)成员应用程序开始,并将其转换为8个不同的帖子。
- 第1部分-简介
- 第2部分-连接(介绍Grunt)
- 第3部分-Handlebars模板预编译
- 第4部分-ES6模块
- 第5部分-JSHint
- 第6部分-Watch+Live Reload
- 第7部分-测试
- 第8部分-部署
最后,你有了一个Gruntfile w/tasks,就像EAK一样(但你都是手工构建的,一步一个脚印)
Stefan Penner在解释Ember App Kit网站上的模块方面做得很好,但总结一下:
Ember应用套件使用ES6模块转换器将应用程序的所有Ember类转换为AMD模块。在"正常"Ember开发中,您将类分配为应用程序的属性。。。
App.IndexController = Ember.Controller.extend(...);
但是使用EAK,您可以用ES6语法编写模块:
export default Ember.Controller.extend(...);
转发器将使用文件名作为其模块名称的基础(假设它保存在app/controllers/index.js
:
define('controllers/index', Ember.Controller.extend(...));
Ember应用套件然后使用自定义解析器来查找使用AMD的模块,而不是将它们作为应用程序的骆驼壳属性来查找。(我没有代表发布另一个链接,所以谷歌搜索ember jj abrams解析器。)
如果Ember查找模块但没有找到,它的行为与EAK之外的行为相同。