Yeoman と backbone.js を使用してアプリを作成しました。指定したすべての js ファイルの先頭で'use strict';
、grunt タスクを実行すると、jshint でエラーが発生しません。
問題なく grunt でアプリをビルドできますが、醜い js を実行しようとすると、次のエラーが発生します。
Uncaught SyntaxError: Strict mode code may not include a with statement
コードベースを検索しましたが、 with ステートメントを使用しているのはアンダースコアだけです。
私は厳密モードを初めて使用するので、この問題をどのように解決できるかわかりません。underscorejs 関数を使用する場所では、strict モードを使用できませんか?
ありがとう。
編集:
以下のコードサンプルを考えてみましょう (簡潔にするために短縮されています)。この問題を解決するにはどうすれば変更できますか。
'use strict';
/*global, Backbone, JST*/
var MyView = Backbone.View.extend({
template: JST['app/scripts/templates/MyView.ejs'],
initialize: function()
{
this.render();
},
render : function()
{
this.$el.html(this.template(this.templateVariables()));
return this;
},
templateVariables: function()
{
return {var1 : 'Hello', var2 : 'World'};
}
});
MyView.ejs で
<p><%= var1 %><%= var2 %>!</p> //<p>Hello World!</p>
編集2:
Using @mu is too shorts's answer below:
jst: {
compile: {
options:
{
templateSettings:
{
variable: 'data'
}
},
files: {
'.tmp/scripts/templates.js': ['<%= yeoman.app %>/scripts/templates/*.ejs']
}
}
},
次に、各テンプレートを変更して、その<%= data.templateVariable %>
形式を使用します。
他の人には当てはまらないかもしれませんが、Grunt とバックボーン ジェネレーターを使用して Yeoman を使用してこの問題に遭遇したので、私だけではありません。