我使用 Yeoman 和backbone.js 编写了一个应用程序。在我指定的每个 js 文件的顶部,'use strict';
当我运行我的 grunt 任务时,jshint 没有遇到任何错误。
我可以毫无问题地使用 grunt 构建我的应用程序,但是当我尝试运行 uglified js 时,我收到以下错误:
Uncaught SyntaxError: Strict mode code may not include a with statement
我搜索了代码库,唯一使用 with 语句的东西是下划线。
我是严格模式的新手,所以我不确定如何解决这个问题。我不能在使用 underscorejs 函数的任何地方使用严格模式吗?
谢谢。
编辑:
给定下面的代码示例(为简洁而缩短)。我怎么能改变它来解决这个问题。
'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:
在下面使用@mu 太短的答案我发现解决对 _.template 的调用让我感到悲伤的最佳方法是更改我的 grunt-JST 任务,如下所示:
jst: {
compile: {
options:
{
templateSettings:
{
variable: 'data'
}
},
files: {
'.tmp/scripts/templates.js': ['<%= yeoman.app %>/scripts/templates/*.ejs']
}
}
},
然后更改我的每个模板以使用该<%= data.templateVariable %>
格式。
可能不适用于其他人,但我在使用带有 Grunt 和 Backbone 生成器的 Yeoman 时遇到了这个问题,所以我不能成为唯一的人。