8

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 を使用してこの問題に遭遇したので、私だけではありません。

4

1 に答える 1