【问题标题】:Workflow for using precompiled ember/handlebars templates使用预编译的 ember/车把模板的工作流程
【发布时间】:2013-12-11 06:27:10
【问题描述】:

所以,我已将 Ember 视图设置为使用外部模板文件 (.handlebars)。一般机制是这样的。我正在使用 requirejs 模块格式:

define([
    "ember",
    "text!templates/drawer-menu.handlebars"
], 
function(Ember, drawerMenu) {
    var DrawerMenu = Ember.View.extend({
        template: Ember.Handlebars.compile(drawerMenu),
    });

    return DrawerMenu;
});

现在,我已经设置了我的项目,所以我可以使用 GruntJS 来处理诸如捆绑、uglify、缩小和打包所有 css 和 js 文件之类的事情。

我还想预编译我的模板。所以我设置了grunt-ember-templates,它将我所有的模板很好地打包到一个js文件中。生成的js文件如下所示:

define(["ember"], function(Ember){
    Ember.TEMPLATES["drawer-menu"] = Ember.Handlebars.template(
        function anonymous(Handlebars,depth0,helpers,partials,data) {
           ....
           return buffer;
        });
);

我不明白,我现在应该在需要模板数据时使用Ember.TEMPLATES["drawer-menu"] 而不是Ember.Handlebars.compile(drawerMenu)

我的问题是我应该如何设置开发工作流程?我是说

  1. 我是否应该更改我的代码以始终使用预编译的模板,在 在这种情况下,我总是必须在我的开发中进行预编译 环境也是。

  2. 如果我不执行上述操作,那么每次为生产构建时,我 必须手动编辑所有视图文件才能使用预编译模板。容易出错。

是否有自动设置的机制?

【问题讨论】:

    标签: ember.js handlebars.js ember.js-view


    【解决方案1】:

    我会切换到延迟加载模板并始终进行预编译。它们得到编译的客户端,并且它们对于调试客户端的用处并没有减少。

    var DrawerMenu = Ember.View.extend({
        templateName: 'drawer-menu',
    });
    

    【讨论】:

    • 如果您正在预编译,它们仍然在客户端编译吗?在此示例中,“抽屉菜单”模板是从 Ember.TEMPLATES 还是从您的模板文件夹解析的?
    • 我使用“grunt watch”来完成模板编译任务。这样可以节省很多时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多