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

Posted

技术标签:

【中文标题】生产环境中没有节点的 Ember.js 预编译器【英文标题】:Ember.js precompiler without node on production environment 【发布时间】:2015-08-05 07:56:54 【问题描述】:

我尝试使用 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>

【问题讨论】:

【参考方案1】:

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

在预编译模板后,我必须将每个模板添加到 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: []
  ;
()));

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

【讨论】:

以上是关于生产环境中没有节点的 Ember.js 预编译器的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4 - 在生产服务器上预编译资产后没有 manifest.json

ember.js快速构建一个应用项目

rails4 rake assets 在生产环境中预编译生成错误的javascript文件

如何刷新Rails / Sprockets以在资产之后了解生产服务器上的新清单:预编译

Rails 3.1 资产管道 - 为啥我的图像没有为生产进行预编译?

为生产预编译资产时,没有方法错误,[ ] 未定义 nil 类