Улучшенный процесс сборки JavaScript

Я использую игровую среду только со статическими активами, поэтому я пишу свои файлы Javascript и CSS напрямую и тестирую их в браузере (консоль firebug). Из-за того, что большую часть времени я возился с опечатками, я хотел бы использовать инструменты качества кода JavaScript и/или компиляторы.

  • Друг посоветовал мне использовать JSLint, который предупреждает меня о проблемах с кодом. Мне кажется, что мне нужно установить node.js для запуска JSLint на моих ресурсах Javascript, и тогда я понятия не имею, как интегрировать это в процесс сборки play sbt. Итак, прежде чем я взгляну на это, я хотел бы спросить: это достойно? Когда я использую компилятор javascript, дает ли JSLint дополнительные преимущества?
  • CoffeeScript: -поддержка должна быть очень простой в игре. Мне это нравится, потому что на стороне coffeescript должно быть еще меньше того, что нужно писать. Но выполняет ли он также проверку синтаксиса, оптимизацию и минимизацию? Могу ли я внедрить простой JavaScript, если хочу оптимизировать часть для себя, сохраняя при этом все на своих местах?
  • Google Closure Compiler: Хорошо, этот делает Javascript для Javascript, так что я могу связать его с Coffeescript? Тогда у меня должно быть все (Code less, Syntax check, Optimization, Minify), или Closure вообще может все это делать сам? Оптимизирует ли он также фрагменты jquery?

Последний вопрос: есть ли поддержка eclipse IDE для Coffeescript?


person Jürgen Zornig    schedule 06.05.2013    source источник


Ответы (2)


  1. Раньше JsLint был действительно мощным инструментом, но, насколько я понимаю, он довольно устарел. Он не улавливает множество паттернов и новых практик, а также много сахара ES5. У него плохое понимание семантики, и с правильным jsDoc вы можете сделать ту же работу с компилятором Closure. Использование обоих немного излишне и бессмысленно.

  2. CoffeeScript — действительно хороший выбор. Он компилируется в JavaScript, и в целом это действительно приятный опыт.

    Пакет TextMate очень хорош, когда дело доходит до CoffeeScript.

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

    Вы можете найти другие интересные интеграции IDE на официальной странице CoffeeScript:

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

  3. Компилятор Closure действительно является JS для JS, но CoffeeScript компилируется в JavaScript, и вы можете использовать его для минимизации вывода скомпилированного CoffeeScript. Это должно дать вам хороший прирост производительности. Вам нужно добавить jsDoc @annotations в CoffeeScript, если вы хотите воспользоваться всеми возможностями Closure Compiler. здесь подробнее об этом.

person flavian    schedule 06.05.2013
comment
Вау, отлично ответил на все мои вопросы! Я был немного озадачен тем, как JS Lint и CoffeeScript сочетаются друг с другом. И ваш последний совет также очень ценен, потому что я не ожидал, что уже есть требования для объединения этих компиляторов. Большое спасибо! - person Jürgen Zornig; 06.05.2013
comment
Чтобы вы могли использовать jQuery с компилятором закрытия, вам нужен файл externs, вызовы jQuery не вызовут ошибок компиляции, но сам jQuery не будет скомпилирован. Вы можете использовать библиотеку закрытия вместо jQuery, тогда все будет скомпилировано. code.google.com/p/closure-compiler/source /browse/contrib/ Я обнаружил, что использование замыкания с библиотекой замыканий требует крутой кривой обучения, и сначала может быть полезно получить электронную книгу, чтобы прочитать об этом. - person HMR; 06.05.2013

Мы будем улучшать поддержку JS в Play для версии 2.3. В частности, мы рассмотрим поддержку JSLint, Closure и/или других. Принятый подход, скорее всего, будет основан на SBT, так что его можно будет применить даже за пределами Play.

person Christopher Hunt    schedule 07.05.2013
comment
я думаю, что поддержка coffeescript и закрытия Google на данный момент довольно хороша с игрой 2.1.1. Все, что я не знал, это то, как инструменты качества js, такие как JSLint, вписываются в этот подход компилятора js. Также на веб-сайте CoffeeScript упоминается, что... Скомпилированный вывод удобочитаем и красиво напечатан, проходит через JavaScript Lint без предупреждений... поэтому я думаю, что дополнительная поддержка JS Lint на самом деле не нужна. - person Jürgen Zornig; 09.05.2013
comment
Да, но нам также нужно иметь дело с ситуациями, не связанными с CoffeeScript. - person Christopher Hunt; 09.05.2013