生产环境中没有节点的 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: []
;
()));
<script type="text/x-handlebars" data-template-name="fu" id="fu">
- 索引中的元素 - 文件可以删除。
【讨论】:
以上是关于生产环境中没有节点的 Ember.js 预编译器的主要内容,如果未能解决你的问题,请参考以下文章
Rails 4 - 在生产服务器上预编译资产后没有 manifest.json
rails4 rake assets 在生产环境中预编译生成错误的javascript文件
如何刷新Rails / Sprockets以在资产之后了解生产服务器上的新清单:预编译