Закрывающий компилятор - сохраняйте неиспользуемые функции и не переименовывайте неопределенные

Таким образом, компилятор замыкания - это хорошо, но экспорт функций и определение внешних элементов кажется слишком большой ручной работой. Есть ли способ сказать компилятору, что он не должен удалять какие-либо функции и не должен переименовывать какие-либо неопределенные функции?

У меня есть две основные причины этого:

  1. Если функция или свойство не определены в области видимости документа javascript, то они, вероятно, определены во внешнем файле. Поэтому я не хотел бы, чтобы они были переименованы.

  2. Если функция определена в данной области, но не вызывается в той же области, то она, вероятно, вызывается во внешнем коде. Поэтому я хотел бы сохранить эту функцию в файле без переименования.

Таким образом, мы могли бы просто скомпилировать файлы JavaScript, не беспокоясь о внешних библиотеках и экспортируя функции, которые вызываются из HTML-страниц.

2 ответа

Очень похоже, что вы должны запустить компилятор с уровнем оптимизации SIMPLE_OPTIMIZATIONS. Не обманывайте себя именем, поскольку оно все еще полностью компилирует ваш код. Основное отличие состоит в том, что SIMPLE_OPTIMIZATION не будет переименовывать или удалять мертвый код в глобальной области видимости. Это означает, что внешние требования и экспорт больше не присутствуют.

Чтобы избежать этого, я запускаю компилятор замыкания для полного сценария, который является объединением всех сценариев моего приложения. Итак, это двухэтапный процесс:

1 - объединить все

2 - запустить компилятор замыкания

Кроме того, вы можете захотеть (как я часто это делаю из-за проблем с jquery до v1.8) запустить компилятор с compilationLevel="simple".

Конкатенация очень важна, так как в целом медлительность связана не с общим размером, а главным образом с количеством запросов.

РЕДАКТИРОВАТЬ: конечно, вы должны автоматизировать все это. Я могу дать вам определение задачи муравья, если вы используете муравья.

Другие вопросы по тегам