Закрывающий компилятор - сохраняйте неиспользуемые функции и не переименовывайте неопределенные
Таким образом, компилятор замыкания - это хорошо, но экспорт функций и определение внешних элементов кажется слишком большой ручной работой. Есть ли способ сказать компилятору, что он не должен удалять какие-либо функции и не должен переименовывать какие-либо неопределенные функции?
У меня есть две основные причины этого:
Если функция или свойство не определены в области видимости документа javascript, то они, вероятно, определены во внешнем файле. Поэтому я не хотел бы, чтобы они были переименованы.
Если функция определена в данной области, но не вызывается в той же области, то она, вероятно, вызывается во внешнем коде. Поэтому я хотел бы сохранить эту функцию в файле без переименования.
Таким образом, мы могли бы просто скомпилировать файлы JavaScript, не беспокоясь о внешних библиотеках и экспортируя функции, которые вызываются из HTML-страниц.
2 ответа
Очень похоже, что вы должны запустить компилятор с уровнем оптимизации SIMPLE_OPTIMIZATIONS. Не обманывайте себя именем, поскольку оно все еще полностью компилирует ваш код. Основное отличие состоит в том, что SIMPLE_OPTIMIZATION не будет переименовывать или удалять мертвый код в глобальной области видимости. Это означает, что внешние требования и экспорт больше не присутствуют.
Чтобы избежать этого, я запускаю компилятор замыкания для полного сценария, который является объединением всех сценариев моего приложения. Итак, это двухэтапный процесс:
1 - объединить все
2 - запустить компилятор замыкания
Кроме того, вы можете захотеть (как я часто это делаю из-за проблем с jquery до v1.8) запустить компилятор с compilationLevel="simple".
Конкатенация очень важна, так как в целом медлительность связана не с общим размером, а главным образом с количеством запросов.
РЕДАКТИРОВАТЬ: конечно, вы должны автоматизировать все это. Я могу дать вам определение задачи муравья, если вы используете муравья.