Обновление ссылок на JavaScript после свертывания в процессе сборки - PullRequest
1 голос
/ 11 февраля 2009

Каковы наилучшие способы обновления ссылок javascript после их минимизации (я использую YUI Compressor)?

Я использую ASP.NET mvc и у меня есть связка или ссылки на JavaScript в каждом файле во время разработки. Во время сборки (используя MSBuild) я минимизирую все файлы в один файл. В то же время я хочу заменить все ссылки на одну ссылку. Это должно быть довольно распространенным явлением, и все же я не могу найти хороший чистый автоматизированный способ сделать это.

У кого-нибудь есть идеи? Спасибо

Ответы [ 2 ]

4 голосов
/ 11 февраля 2009

Мы используем собственный скрипт-менеджер. В нашем процессе msbuild YUI Compressor используется для создания минимизированных версий, а также для объединения нескольких небольших файлов .js в один больший. Это уменьшает количество запросов и, следовательно, время загрузки. Минимизированные и комбинированные версии создаются параллельно с отлаживаемыми версиями.

Во время выполнения управляющий сценарием вызывается элементами управления для регистрации определенных сценариев, на которые ссылается их неограниченное имя. Затем диспетчер сценариев просто включит эти сценарии в режиме отладки (хотя мы выполняем трюк, включающий сценарии в HEAD, а не тело, как это делает ClientScriptManager). В режиме RELEASE менеджер сценариев заменит определенные сценарии, известные ему, их уменьшенными аналогами. В случае сценариев, которые объединены в один файл, менеджер вызывается несколько раз, каждый раз регистрируя один и тот же объединенный минимизированный файл. Некоторые файлы размещаются извне: это также обрабатывается менеджером сценариев.

Недостатки:

  • знание того, какие файлы минимизированы, дублируется: и скрипт-менеджер, и скрипт сборки должны быть синхронизированы.
  • Когда добавляются новые сценарии, они не будут автоматически минимизированы (лично я считаю это хорошим моментом; я хочу, чтобы минификация была выбором)

Кстати: мы не используем порт C # для запуска в MSBuild. Было слишком много ошибок, когда я впервые попробовал. Мы просто вызываем YUI Compressor с задачей Exec.

2 голосов
/ 11 февраля 2009

На ум приходит пара идей:

1) Воспользуйтесь выпущенным исправлением, чтобы разрешить отладочные / intellisense версии файлов .js: KB958502

Это позволит вам написать (хотя и один) большой, полностью читаемый js-файл, но обратитесь к полной версии вашего скрипта src, которая может быть сгенерирована во время сборки. Hofix позволяет VS находить файлы с именами «-vsdoc.js» или «.debug.js» вместо файлов, на которые есть ссылки (поэтому вы ссылаетесь на «/scripts/myscript.js» в атрибуте src, но сначала IDE будет выглядеть для "/scripts/myscript-vsdoc.js", затем "/scripts/myscript.debug.js", и, наконец, он будет искать "/scripts/myscript.js" - немного больше информации можно найти в Блог команды разработчиков Visual Web .

2) Другие опубликовали пользовательских диспетчеров сценариев , которые они написали, которые будут ссылаться на основную версию во время отладки, но в режиме выпуска будет запрашиваться свернутая версия.

3) Я уверен, что где-то читал, хотя сейчас не могу найти информацию о ком-то, кто написал свой собственный метод расширения HTML-помощника, который генерировал бы вызов сценария соответствующим образом в зависимости от режима buid - аналогично процесс к идее Рика, но позволяющий вам работать более «обычным» образом, хотя я не уверен, насколько хорошо он работал с intellisense.

В данный момент я склоняюсь к 1 - используя процесс, подобный тому, что здесь сделал Ник Берарди: Как создать YBI Compressor MSBuild Task , чтобы сгенерировать свернутый js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...