CodeKit中未定义JSHint主干

JSHint Backbone not defined in CodeKit

本文关键字:主干 JSHint 未定义 CodeKit      更新时间:2024-06-20

一个小型测试应用程序的设置如下:

init.js:

//@codekit-prepend "vendor/jquery-1.7.2.js"
//@codekit-prepend "vendor/underscore.js"
//@codekit-prepend "vendor/backbone.js"
// Setup namespace for the app
window.app = window.app || {};
//@codekit-append "models/Ride.js"

Ride.js:

(function() {
    window.app.Ride = Backbone.Model.extend({
        initialize: function() {
            console.log("Ride initialized");
        }
    });
})();

CodeKit的JSHint检查报告未定义Backboneconsole。我在这里错过了什么?

JSHint不运行您的代码,因此它不知道您在其他文件中包含的任何模块。您必须特别告诉它您计划在Ride.js中使用的所有全局变量。在您的情况下,它将是:/*global Backbone */。默认情况下,console是不允许的,因为运送带有已填充console.log调用的软件不是一个好主意。要删除此警告,可以使用/*jshint devel:true */

所以最后你的文件应该是这样的,以通过JSHint检查:

/*jshint devel:true */
/*global Backbone */
(function() {
    window.app.Ride = Backbone.Model.extend({
        initialize: function() {
            console.log("Ride initialized");
        }
    });
})();

更多信息请点击此处:http://www.jshint.com/options/

Bryan在这里。CodeKit在完整的全局上下文中检查文件。(也就是说,它首先将它们组合在一起,因此在早期文件中声明的变量在后期文件中是有效的。这假设您使用CodeKit来组合文件,可以使用@CodeKit prepend/append语句,也可以使用CodeKit本身设置的拖放导入链接)。如果您以其他方式组合JS文件(例如构建脚本),那么CodeKit不会意识到这些文件是一起的,因此它会分别检查每个文件。

您可以在上面的答案中使用注释标志,也可以直接在CodeKit中配置JSHint的选项。请参见首选项窗口(如果您的项目使用项目级别设置,请参见项目设置区域)。您也可以在那里输入自定义全局变量,这将删除这些警告。

干杯!