ember.js的指南假设一个人拥有完整的ES6支持,例如: http://guides.emberjs.com/v2.2.0/routing/specifying-a-routes-model/显示使用export default
构造,并未指定任何替代方法来实现目标。但是,在ember支持的所有浏览器中都没有实现模块功能。
如何在不支持模块的浏览器中使用这些功能?这些示例中的代码将如何转换为ES5?
答案 0 :(得分:3)
文档假设您使用的是转换工具,因为推荐的工具ember-cli
可以使用。除非你有充分的理由不使用它,否则你一定要研究它。
controller:posts.index
映射到App.PostsIndexController
。所以这适用于您链接的示例:
App.Router.map(function() {
this.route('favorite-posts');
});
App.FavoritePostsRoute = Ember.Route.extend({
model() {
return this.store.query('post', { favorite: true });
}
});
您也可以使用Ember和您自己的模块支持。我成功地根据rollup建立了一个Ember项目。它需要更多的工作,让resolver找到你的类(解析器链接也记录了ember与名称映射的关系)。没什么难的,但你必须建立一个简短的脚本来生成注册。
<小时/> 编辑blessenm: Ember with rollup
不幸的是我无法共享此代码,但它的工作原理如下:
脚本扫描项目目录并通过在遇到的每个ember-template-compiler.js
文件上调用.hbs
来编译模板。
脚本(实际上是同一个脚本)扫描项目目录并生成主入口点。它非常简单,如果它看到gallery/models/collection.js
和`gallery / routes / picture.js&#39;,它将生成一个如下所示的主文件:
import r1 from 'gallery/models/collection.js';
import r2 from 'gallery/routes/picture/index.js';
// ...
Ember.Application.initializer({
name: 'registrations',
initialize: function (app) {
app.register("model:collection", r1);
app.register("route:picture.index", r2);
// ...
}
});
它应该只将您的文件名映射到解析器名称。作为奖励,您可以控制目录的组织方式。
在生成的文件上调用汇总。它将把所有东西拉到一起。我使用IIFE导出格式,跳过所有运行时分辨率混乱。我建议您设置rollup to work with babel,以便使用ES6语法。
我没有使用任何特定于ember的模块,但它不应该太难添加。我的猜测主要是正确设置汇总导入分辨率。据我所知,它可以开箱即用。
答案 1 :(得分:2)
您应该考虑使用Ember CLI http://ember-cli.com/
您在ES6中编写代码并将其转换为ES5。