【问题标题】:JSHint with rails asset pipeline requires带有 Rails 资产管道的 JSHint 需要
【发布时间】:2015-12-01 18:09:22
【问题描述】:

在运行 jshint 验证 JS 代码时,我经常会遇到类似的错误

line 264, col 11, 'Cookies' is not defined.

Cookie 来自

//= require js.cookie

作为 Rails 资产管道的一部分编译,所以 JSHint 不知道它。

有没有办法设置它,以便 JSHint 在所有依赖项都到位的文件上运行?或者还有其他选择吗?

【问题讨论】:

    标签: javascript ruby-on-rails asset-pipeline jshint


    【解决方案1】:

    您可以考虑使用globals 选项让 jshint 了解共享全局变量。

    如果以上证明太乏味,那么在通过 sprocket 运行文件后运行 jshint - 即。运行rake assets:precompile,然后在public/assets中生成的文件上运行jshint。

    但我能推荐的最好的做法是不同的:

    您应该考虑使用适当的模块系统,而不是使用 sprockets 进行 javascript 依赖项管理。这将缓解共享全局变量的根本问题(这是一种被广泛认为是糟糕的编程实践)。

    虽然社区提出了 multiple module systems 并获得了不同程度的社区接受 - 现在最好的选择是接受 ES6 modules standard。最终有一个标准化的模块化方法是件好事。我最近写了一篇简短的guide 将 ES6 模块与 rails 集成。

    简而言之,与 AMD、CommonJS 或 Sprockets 指令等解决方案相比,ES6 模块标准是当今组织 javascript 的最佳选择,这些解决方案是在没有模块化 javascript 标准化解决方案可用的时代开发的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 2012-04-18
      • 2012-03-14
      相关资源
      最近更新 更多