2015-12-02 118 views

回答

3

文档假设您使用的是一个转译工具,因为推荐的工具ember-cli的确如此。除非你有充分的理由不使用它,否则你一定要研究它。

但是,如果没有它,它是完美的。例如,没有模块系统,Ember将把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:恩伯,汇总

可惜我不能分享这个代码,但它的工作原理是这样的:

  1. 脚本扫描项目目录,并通过调用编译模板每遇到.hbs文件,该文件就会生成ember-template-compiler.js

  2. 脚本(实际上是同一个脚本)扫描项目目录并生成主入口点。这是很简单的,如果它看到,说gallery/models/collection.js和`图库/路由/ picture.js',它会生成一个主文件看起来像这样:

    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); 
         // ... 
        } 
    }); 
    

    它应该只是你的映射文件名到解析器的名称。作为奖励,你可以控制你的目录是如何组织的。

  3. 调用生成的文件的汇总。它会把所有的东西放在一起我使用IIFE导出格式,跳过所有运行时解决的混乱。我建议你设置rollup to work with babel,这样你就可以使用ES6语法。

我没有使用任何特定于烬的模块,但它不应该太难添加。我的猜测是,这主要是正确设置汇总导入分辨率的问题。就我所知,它可能是开箱即用的。

+0

你有没有在github上的代码?只是想看看你是如何与汇总工作。 – blessenm

+0

@blessenm我编辑了答案,详细说明了它的工作原理。不幸的是,该项目不公开,所以我不能显示代码本身。无论如何,我希望它有帮助。您也可以在Ember论坛上阅读[本文](http://discuss.emberjs.com/t/can-i-use-ember-with-npm-and-webpack/9160/9)。你也可以看看[这个项目](https://github.com/tulios/ember-webpack-example)如何使用webpack集成一个Ember项目。不同的工具,但方法相同。 – spectras

+0

感谢您的回复。将通过他们并弄清楚。我想知道使用汇总有什么明显的好处?与使用ember-cli相比,你是否构建了输出大小? – blessenm

相关问题