Ember.js 包括预编译的余烬把手模板

Ember.js 包括预编译的余烬把手模板,ember.js,gruntjs,handlebars.js,Ember.js,Gruntjs,Handlebars.js,我已经使用grunt ember模板成功地将Handlebar预编译到一个文件中,但是,在html文件中包含源代码时: <script src="templates/app/compiledTemplates.js" type="text/javascript"></script> 包含预编译车把模板的正确方法是什么?我在应用程序中就是这样做的: <script type="text/javascript" charset="utf-8" src="dist/te

我已经使用grunt ember模板成功地将Handlebar预编译到一个文件中,但是,在html文件中包含源代码时:

<script src="templates/app/compiledTemplates.js" type="text/javascript"></script>

包含预编译车把模板的正确方法是什么?

我在应用程序中就是这样做的:

<script type="text/javascript" charset="utf-8" src="dist/templates.js"></script>

您可以在此处看到整个index.html文件:

事实上,我今天在Ember.js上的一次实时编码演示中写了这段代码。该演讲被录制为一个屏幕广播,可从


本讲座将为您提供正确设置一切所需的指针:)

我使用grunt将编译好的模板与我的其他脚本(jQuery/ember/ember data/my app code)结合起来。然后在我的index.html中,我只包含一个js脚本(也有助于减少http请求的数量)

我目前正在使用grunt,一个简单的“构建”步骤可能如下所示。要使用它,您需要安装nodejs。接下来,您将安装以下npm

grunt
grunt-cli
grunt-ember-template-compiler
grunt-contrib-concat
一旦安装了这些,如果将js放入名为“Gruntfile.js”的文件中,就可以从根目录运行下面的构建,然后只需执行“grunt”,它就会输出一个deps.min.js(结合脚本和模板)


是否确实要将模板编译到templates目录中?我通常会把汇编好的代码放在一个“dist”文件夹中,这样它就不会干扰到我项目中可能有的任何其他实际源代码;这似乎是有用的信息。我似乎正在编译的模板非常类似于你。唯一不同的是,我的模板文件中包含脚本标记()。我想我需要删除这些以便预编译正常工作?如果是这样,如果我不能使用标记,我如何将我需要的信息(id、数据模板名称等)添加到这些模板中?您应该将模板放在单独的模板目录中。子目录和模板文件的名称将告诉grunt ember tempaltes模板的id,并将所有模板编译成单个JavaScript文件。在这个文件中不应该有任何脚本标记,在任何.hbs文件中也不应该有脚本标记。本要点给出了预编译输出的示例:从这里查看.hbs文件:
grunt
grunt-cli
grunt-ember-template-compiler
grunt-contrib-concat
module.exports = function(grunt) {
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-ember-template-compiler');

  grunt.initConfig({
    concat: {
      dist: {
          src: [
            'website/static/website/script/vendor/handlebars-v1.2.1.js',
            'website/static/website/script/vendor/ember.min.js',
            'website/static/website/script/my-app.js’,
            'website/static/website/script/dist/tmpl.min.js'],
          dest: 'website/static/website/script/dist/deps.min.js'
      }
    },
    emberhandlebars: {
        compile: {
            options: {
                templateName: function(sourceFile) {
                    var newSource = sourceFile.replace('website/static/website/script/app/templates/', '');
                    return newSource.replace('.handlebars', '');
                }
            },
            files: ['website/static/website/script/app/templates/**/*.handlebars'],
            dest: 'website/static/website/script/dist/tmpl.min.js'
        }
    }
  });

  grunt.task.registerTask('default', ['emberhandlebars', 'concat:dist']);
};