生产环境中没有节点的Ember.js预编译器

时间:2015-08-05 07:56:54

标签: node.js ember.js handlebars.js precompile

我尝试按照here所述使用ember预编译器。我只是想在我的开发过程中进行预编译,并将所有内容部署到没有node.js服务器的生产环境中。

当我为所有已编译的模板包含生成的js文件时,我在控制台中收到这些错误:SyntaxError: missing declaration after 'export' keyword

这是我的fu.js文件的一个例子,由fu.hbs编译。



export default Ember.HTMLBars.template((function() {
  return {
    meta: {
      "revision": "Ember@1.13.3",
      "loc": {
        "source": null,
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 10
        }
      }
    },
    arity: 0,
    cachedFragment: null,
    hasRendered: false,
    buildFragment: function buildFragment(dom) {
      var el0 = dom.createDocumentFragment();
      var el1 = dom.createTextNode("Hello Fufu");
      dom.appendChild(el0, el1);
      return el0;
    },
    buildRenderNodes: function buildRenderNodes() { return []; },
    statements: [

    ],
    locals: [],
    templates: []
  };
}()));




我的hbs不应该有标识符吗?喜欢" fu.hbs",如何将预编译模板添加到我的ember应用程序中?我只需要引用index.html中的js文件,并使用与模板相同的名称吗?

如果一切正常,我还需要将以下内容放入index.html吗?



<script type="text/x-handlebars" data-template-name="fu" id="fu">
      Hello Fufu
</script>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我现在找到了解决方案,没有文档...

在预编译模板后,我必须将每个模板添加到Ember.TEMPLATES[]数组,因此代码现在看起来像:

Ember.TEMPLATES["fu"] = Ember.HTMLBars.template((function() {
  return {
    meta: {
      "revision": "Ember@1.13.3",
      "loc": {
        "source": null,
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 10
        }
      }
    },
    arity: 0,
    cachedFragment: null,
    hasRendered: false,
    buildFragment: function buildFragment(dom) {
      var el0 = dom.createDocumentFragment();
      var el1 = dom.createTextNode("Hello Fufu");
      dom.appendChild(el0, el1);
      return el0;
    },
    buildRenderNodes: function buildRenderNodes() { return []; },
    statements: [

    ],
    locals: [],
    templates: []
  };
}()));

可以删除<script type="text/x-handlebars" data-template-name="fu" id="fu"> - 索引中的元素 - 文件。