【问题标题】:Improved JavaScript Building process改进的 JavaScript 构建过程
【发布时间】:2013-05-07 11:14:04
【问题描述】:

我只使用带有静态资源的播放框架,所以我直接编写我的 Javascript 和 CSS 文件并在浏览器(萤火控制台)中测试它们。由于我大部分时间都在处理拼写错误,因此我想使用 JavaScript 代码质量工具和/或编译器。

  • 一位朋友告诉我使用 JSLint 来提醒我代码问题。在我看来,我必须安装 node.js 才能在我的 Javascript 资产上运行 JSLint,然后我不知道如何将它集成到我的 play sbt 构建过程中。所以在我看之前,我想问:值得吗?当我使用 javascript 编译器时,JSLint 会带来更多优势吗?
  • CoffeeScript:-support 应该非常简单。我喜欢它,因为在咖啡脚本方面应该写的更少。但它是否也进行语法检查、优化和缩小?如果我想为自己优化一个部分,同时将所有内容放在正确的位置,我可以嵌入纯 JavaScript 吗?
  • Google Closure Compiler:好的,这个是 Javascript to Javascript,所以我可以用 Coffeescript 链接它吗?那么我应该拥有一切(减少代码、语法检查、优化、缩小),或者 Closure 甚至可以自己完成所有这些工作?是否也优化了 jquery sn-ps?

最后一个问题:Coffeescript 是否有 Eclipse IDE 支持?

【问题讨论】:

    标签: javascript coffeescript playframework-2.0 google-closure-compiler


    【解决方案1】:
    1. JsLint 曾经是一个非常强大的工具,但就我而言,它已经过时了。它没有吸收很多模式和更新的实践以及大量的 ES5 糖。它的语义理解很差,并且使用适当的 jsDoc,您可以使用 Closure Compiler 完成相同的工作。两者都使用有点矫枉过正和毫无意义。

    2. CoffeeScript 是一个非常好的选择。它可以编译成 JavaScript,总体来说是一种非常好的体验。

      TextMate 捆绑包在 CoffeeScript 方面非常出色。

      https://github.com/jashkenas/coffee-script-tmbundle

      您可以在 CoffeeScript 官方页面上找到其他一些不错的 IDE 集成:

      http://jashkenas.github.com/coffee-script/#resources

    3. Closure 编译器确实是 JS 到 JS,但 CoffeeScript 编译为 JavaScript,您可以使用它来缩小已编译 CoffeeScript 的输出。它应该会给您带来不错的性能提升。如果您想从 Closure Compiler 的全部功能中受益,您需要将 jsDoc @annotations 添加到 CoffeeScript。 Here's 更多信息。

    【讨论】:

    • 哇,完美回答了我所有的问题!我有点困惑 JS Lint 和 CoffeeScript 如何结合在一起。您的最后一个提示也很有价值,因为我没想到,已经有将这些编译器链接在一起的要求。非常感谢!
    • 为了能够使用 jQuery 和闭包编译器,您需要 externs 文件,调用 jQuery 不会导致编译错误但 jQuery 本身不会被编译。您可以使用闭包库而不是 jQuery,然后一切都将被编译。 code.google.com/p/closure-compiler/source/browse/contrib/…我发现使用闭包和闭包库有一个陡峭的学习曲线,并且首先阅读一本电子书可能会有所帮助。
    【解决方案2】:

    我们将在 Play 2.3 中改进对 JS 的支持。特别是,我们将着眼于支持 JSLint、Closure 和/或其他。所采用的方法可能是基于 SBT 的方法,因此即使在 Play 之外也具有适用性。

    【讨论】:

    • 我认为目前 play 2.1.1 对 coffeescript 和 google 关闭的支持非常好。我不知道的是像 JSLint 这样的 js 质量工具如何适应这种“js 编译器方法”。 CoffeeScript 网站还提到“...编译后的输出可读且打印精美,通过 JavaScript Lint 时没有警告...”所以我认为不需要额外的 JS Lint 支持
    • 是的,但是我们还需要处理非CoffeeScript的情况。
    猜你喜欢
    • 2010-09-06
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2017-05-09
    相关资源
    最近更新 更多