ember预编译、ember.js和handlers.js的版本兼容问题

Version compatible issue with ember-precompile, ember.js and handlebars.js

本文关键字:js ember 版本 问题 编译 handlers      更新时间:2023-09-26

我无法读取html中的预编译模板。这是由于ember预编译与ember.js和handlers.js.的版本兼容问题

我的代码是这样的:

包括以下文件。

<script src="../js/libs/jquery-1.10.2.js"></script>
<script src="../js/libs/handlebars-v1.3.0.js"></script>
<script src="../js/libs/ember-1.2.0.js"></script>
<script src="js/precompile.js"></script>
<script src="js/precompile.app.js"></script>

正在阅读我在body标记中编译的模板。

<div id="tempdiv">haii</div>
<script type="text/javascript">
    var compiledTemplate = Em.TEMPLATES["precompile"];
    var temp_html = compiledTemplate({ name: 'World' });
    console.log(temp_html);  //Uncaught TypeError: Cannot read property 'push' of undefined 
    $("#tempdiv").html(temp_html);
</script>

我已经在命令提示符下下载了npm手柄编译器版本:

npm install handlebars@1.3.0 -g

控制台中的车把COMPILER_REVISION为4

Handlebars.COMPILER_REVISION  -- 4

使用以上版本,我可以使用Handlebars作为读取模板

Handlebars.templates['test_temp'];

然后我从下面的包安装了ember预编译-

https://www.npmjs.org/package/ember-precompile

在命令提示符下安装为:

npm install ember-precompile

现在我无法使用Em.TEMPLATE["TEMPLATE_name"].读取编译后的模板

我已经包含并安装了ember、手柄和ember预编译的版本,存在兼容性问题。

每个模板的哪个版本匹配并可以读取编译后的模板。

我总是遇到ember-precompile没有更新的问题。幸运的是,您可以自己更新库。只需转到安装ember-precompile的文件夹(对我来说,它全局位于/usr/local/share/npm/lib/node_modules/ember-precompile(,然后替换vendor文件夹中的库。最新版本使用Ember 1.2.0和Handlebars 1.1.2。只需将其替换为您需要的版本即可。(你可能需要保持相同的名字,但我真的记不起来了。(

此外,为什么要在页面中包含预编译的Javascript文件?这违背了预编译的全部目的。