8

我想将我的应用程序逻辑分成多个 Javascript 文件,以保持理智和开发人员的友好性,存储在 /src 文件夹中。在构建过程中,这些文件应该被检查并连接到 /dist/app.js 中。我在构建过程中使用 grunt,因为它已经带有方便的 lint 和 concat 任务。

    +
    |- grunt.js
    |- 自述文件
    |-供应商
       |-backbone.js
    |- 源
       |- 核心.js
       |- 用户.js
    |- 分布
       |-app.js

我遇到了一个烦人的问题。我使用backbone.js 作为应用程序结构,我的大部分源文件都是从通过扩展Backbone.Model来定义模型开始的。在检查这些文件时,JSHint 抱怨没有定义 Backbone,这是正确的 - 主干位于其自己的目录之外。我认为以正确的顺序包含所有必要的脚本是在 html 中完成的。每个单独的源文件应该只知道自己。

我知道我可以通过将grunt.js 中的 lint 的undef标志设置为false来抑制这些未定义的警告,但我想将其设置为true以便在我的应用程序中收到有关其他未定义变量的警告,因为它是指向错别字的常见指针. 有没有一种干净的方法来告诉 grunt(或 lint)在 lint 之前要包含哪些文件?我的构建过程或应用程序架构有问题吗?或者这只是我必须忍受的东西?

4

2 回答 2

11

这些jshint选项允许您在 grunt.js 文件中指定来自您正在使用的其他库的全局变量列表:



    jshint: {
      options: {
        curly: true,
        eqeqeq: true,
        immed: false,
        latedef: true,
        newcap: true,
        noarg: true,
        sub: true,
        undef: true,
        boss: true,
        eqnull: true,
        browser: true
      },

      globals: {
        jQuery: true,
        Backbone: true,
        _: true
      }
    },

注意globals底部的设置。这允许 JSHint 忽略这些变量,但仍然运行您的undef: true设置(如上所示)。

于 2012-08-15T01:09:51.517 回答
0

另一种方法(不依赖于 grunt)是将 jshint 注释添加到您的 js 文件中:

/* global Backbone, jQuery, _ */
于 2013-04-23T18:55:37.807 回答