Ember.js:HtmlBars 和 Handlebars.compile 命令
Ember.js: HtmlBars and the Handlebars.compile command
我在 运行 我的应用程序时收到以下错误:
Uncaught Error: Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.
与这段代码相关:
var CarouselView = Ember.View.extend({
template: Ember.Handlebars.compile('{{view view.itemsView}}'),
elementId: 'carousel',
contentBinding: 'content',
...
ember.js github 上已经有一个与此问题相关的问题:https://github.com/emberjs/ember.js/issues/10265
但是我将 ember-template-compiler
添加到我的 package.json 并再次遇到相同的错误。
我做了:
npm install --save-dev ember-template-compiler
这是我的 package.json devDependencies:
"ember-cli": "0.1.10",
"ember-cli-app-version": "0.3.0",
"ember-cli-content-security-policy": "0.3.0",
"ember-cli-dependency-checker": "0.0.7",
"ember-cli-htmlbars": "^0.6.0",
"ember-cli-ic-ajax": "0.1.1",
"ember-cli-inject-live-reload": "^1.3.0",
"ember-cli-qunit": "0.3.0",
"ember-cli-simple-auth": "^0.7.2",
"ember-cli-simple-auth-cookie-store": "^0.7.2",
"ember-cli-simple-auth-oauth2": "^0.7.2",
"ember-cli-uglify": "1.0.1",
"ember-data": "1.0.0-beta.12",
"ember-export-application-global": "^1.0.0",
"ember-template-compiler": "^1.8.0",
"express": "^4.8.5",
"glob": "^4.0.5"
参考:ember-template-compiler
github page
有人对 HtmlBars 和编译命令有经验吗?
您正在尝试在客户端编译 HTMLBars 模板,但是在 package.json
中添加 ember-template-compiler
只会启用 HTMLBars 模板服务器端的预编译。
要启用客户端编译,您应该将ember-template-compiler
添加到bower.json
,例如(使用合适的版本)
"ember-template-compiler": "http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"
然后将其包含在Brocfile.js
、
中
app.import('bower_components/ember-template-compiler/index.js');
由于 Ember.js 1.10 模板编译器是 Ember 的一部分,因此在客户端编译模板所需要做的就是在 Brocfile 中添加以下行:
app.import('bower_components/ember/ember-template-compiler.js');
对于我的观点,我刚刚为他们创建了模板文件。以您的案例为例,我将创建 app/templates/views/carousel.hbs:
{{view view.itemsView}}
那么CarouselView就变成了:
var CarouselView = Ember.View.extend({
templateName: 'views/carousel',
elementId: 'carousel',
contentBinding: 'content',
...
这样你就不用给客户模板编译器了。应该会带来更好的性能和更小的客户端下载负载。
我在 运行 我的应用程序时收到以下错误:
Uncaught Error: Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.
与这段代码相关:
var CarouselView = Ember.View.extend({
template: Ember.Handlebars.compile('{{view view.itemsView}}'),
elementId: 'carousel',
contentBinding: 'content',
...
ember.js github 上已经有一个与此问题相关的问题:https://github.com/emberjs/ember.js/issues/10265
但是我将 ember-template-compiler
添加到我的 package.json 并再次遇到相同的错误。
我做了:
npm install --save-dev ember-template-compiler
这是我的 package.json devDependencies:
"ember-cli": "0.1.10",
"ember-cli-app-version": "0.3.0",
"ember-cli-content-security-policy": "0.3.0",
"ember-cli-dependency-checker": "0.0.7",
"ember-cli-htmlbars": "^0.6.0",
"ember-cli-ic-ajax": "0.1.1",
"ember-cli-inject-live-reload": "^1.3.0",
"ember-cli-qunit": "0.3.0",
"ember-cli-simple-auth": "^0.7.2",
"ember-cli-simple-auth-cookie-store": "^0.7.2",
"ember-cli-simple-auth-oauth2": "^0.7.2",
"ember-cli-uglify": "1.0.1",
"ember-data": "1.0.0-beta.12",
"ember-export-application-global": "^1.0.0",
"ember-template-compiler": "^1.8.0",
"express": "^4.8.5",
"glob": "^4.0.5"
参考:ember-template-compiler
github page
有人对 HtmlBars 和编译命令有经验吗?
您正在尝试在客户端编译 HTMLBars 模板,但是在 package.json
中添加 ember-template-compiler
只会启用 HTMLBars 模板服务器端的预编译。
要启用客户端编译,您应该将ember-template-compiler
添加到bower.json
,例如(使用合适的版本)
"ember-template-compiler": "http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"
然后将其包含在Brocfile.js
、
app.import('bower_components/ember-template-compiler/index.js');
由于 Ember.js 1.10 模板编译器是 Ember 的一部分,因此在客户端编译模板所需要做的就是在 Brocfile 中添加以下行:
app.import('bower_components/ember/ember-template-compiler.js');
对于我的观点,我刚刚为他们创建了模板文件。以您的案例为例,我将创建 app/templates/views/carousel.hbs:
{{view view.itemsView}}
那么CarouselView就变成了:
var CarouselView = Ember.View.extend({
templateName: 'views/carousel',
elementId: 'carousel',
contentBinding: 'content',
...
这样你就不用给客户模板编译器了。应该会带来更好的性能和更小的客户端下载负载。