Ваши мысли о предложении по управлению зависимостями JavaScript - PullRequest
3 голосов
/ 22 сентября 2010

Недавно я много занимался программированием на JavaScript в контексте разработки многофункционального интернет-приложения .Моя точка зрения в начале разработки в значительной степени совпадает с тем, что есть сейчас;JS RIA работает, но отсутствуют инструменты разработки.

Один из инструментов, который мне особенно не хватало, был для управления зависимостями.Я обнаружил, что у меня появилось много HTML-страниц, объявляющих все их зависимости от файлов JS, и это стало трудно поддерживать.

Что бы я хотел знать, это ваши мысли о проекте, который яприступил к: Импорт Maven JavaScript .Мое намерение состоит в том, чтобы в конечном итоге выпустить проект как открытый исходный код, но на данный момент я просто возился с ним (хотя многое уже разработано).

Объявление зависимостей

Мои мысли основаны на использовании Maven для объявления файлов JS как зависимостей.Вот как я объявил бы зависимость проекта от jQuery в моем файле pom:

<dependency>
  <groupId>com.jquery</groupId>
  <artifactId>jquery</artifactId>
  <version>1.4.2</version>
  <type>js</type>
</dependency>

Файл, который затем зависит от jQuery, имеет два метода объявления своей зависимости:

  1. через оператор @import в блоке комментариев;или
  2. просто объявляет требуемую глобальную переменную.

Импорт

Явный импорт принимает форму:

/**
 * @import com.jquery:jquery
 */

Как видите, формат импорта - <groupId>:<artifactId>.Преимущество этого подхода заключается в том, что в файле js, который имеет зависимость, нет информации о файле / версии.Эти параметры GAV преобразуются в артефакты, объявленные в файле POM.

Global Vars

Вместо указанного выше @import, если зависимый файл объявляет переменные в глобальной области видимости, топростое объявление любого из этих глобальных символов - это все, что требуется.Например, если для файла требуется jQuery:

var $;

..., поскольку $, конечно, является глобальным, определяемым jQuery.

Не все зависимости объявляют глобальные символы, и поэтому предлагается также @import, но объявление требуемого символа, я думаю, красиво и чисто (и соответствует JSLint!).

В заключение

В конечном итоге HTML-файл, который требует JS-ресурса, просто объявляет тот, который ему необходим, а не все его зависимости.Мой плагин Maven будет проходить через все файлы JS (исходные файлы и зависимости) и строить дерево символов.Любой HTML-файл, включая ресурс, будет иметь элементы сценария, внедренные плагином, чтобы обеспечить включение всех зависимостей.Все это будет происходить магическим образом Maven, когда фазы проекта выполняются, например, перед тестом, или выполняется фаза ресурсов.

Так что вы думаете?Это то, что вы могли бы использовать в своем проекте JS RIA?

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Я согласен с тем, что разработчикам JavaScript не хватает надлежащего управления зависимостями для их проектов. Я не совсем слежу за тем, как HTML-файл импортирует только один файл с зависимостью js, а затем в итоге получает все зависимости. Планируете ли вы фильтровать файлы HTML и заменять импорт сценариев на импорт ваших объединенных классов?

Если вам интересно, я прошел ту же дорогу и в итоге набрал https://github.com/ProggerPete/JavaScript-Tools. Это работает довольно хорошо для меня.

0 голосов
/ 16 сентября 2013

Я думаю, что Bower - забавный и правильный способ управления зависимостями .js.

...