Прочитав эту статью, вы узнаете, как использовать плагин DefinePlugin, чтобы сделать интерфейсные проекты более инженерными. эффективность фронтенд-разработки.
Правильное использование DefinePlugin
Как с помощью DefinePlugin добавить конфигурационные файлы для автоматического определения изменений среды во время сборки, то есть как ввести конфигурационные файлы на основе NODE_ENV?
Правильное использование DefinePlugin
Каждый ключ в DefinePlugin является идентификатором или.как несколько идентификаторов.
Если значение является строкой, оно будет рассматриваться как фрагмент кода.
Если значение не является строкой, оно будет преобразовано в строку (включая функции)
Если значение является объектом, все ключи определяются одинаково.
если у ключа естьtypeofпрефикс, который определяется только типом вызова.
Эти значения будут встроены в код, сжаты для уменьшения избыточности.
плагин не является прямой заменой текстового значения, его значение должно включаться в строкуфактическая цитата. Типичным случаем является заключение в двойные кавычки или JSON.stringify(), '"production"', JSON.stringify('production').
Основные моменты:В проекте, созданном vue-cli, все файлы в src могут получить доступ к переменной VERSION, например main.js, App.vue и т. д.
Давайте теперь посмотрим на вывод приведенных выше нескольких типов значений ключа в коде.
оценивать:Очень плохо, он перезапишет весь объект процесса, сохранит только новый NODE_ENV и уничтожит процесс.Исходный объект процесса содержит следующее содержимое, которое содержит много информации о текущем процессе.
оценивать:Нехорошо, это перезапишет весь объект process.env, разрушит среду процесса и нанесет ущерб совместимости.Исходный объект process.env содержит следующее содержимое, которое содержит много информации о текущем процессе.
оценивать:Хорошо. Потому что только изменение значения NODE_ENV не нарушит весь процесс и не нарушит совместимость.
Как с помощью DefinePlugin добавить конфигурационные файлы для автоматического определения изменений среды во время сборки, то есть как ввести конфигурационные файлы на основе NODE_ENV?
Сценарий: адрес интерфейса на этапе разработки часто не соответствует адресу интерфейса на этапе производства. Например, для разработки используется development.foo.com, а для продакшена — production.foo.com.Если вам нужно упаковать и выпустить, вам нужно вручную заменить доменное имя или поддерживать специальный файл конфигурации в ветке. Эти два метода очень громоздки.
ручная замена
Эффективность файла низкая, каждый раз, когда вы переключаетесь между разработкой и производством, вам нужно обновлять файл конфигурации, который подвержен ошибкам.
конфигурационный файл
По сравнению с заменой вручную, она является более продвинутой, но не может просматривать всю информацию о конфигурации разработки и производства одновременно, необходимо переключаться между ветвями, что неэффективно и не подходит для настройки нескольких сред.
webpack.DefinePlugin()
Глобальный файл конфигурации, автоматическое обнаружение изменений окружающей среды, эффективное и действенное.
DefinePlugin веб-пакета решает эту проблему за нас, он поддерживает глобальный файл конфигурации, автоматически определяет process.env.NODE_ENV во время компиляции и заменяет доменное имя нашего интерфейса в соответствии с текущими переменными среды.
Ниже я буду использовать пример, чтобы показать, как правильно использовать webpack.DefinePlugin.
Вышеуказанное просто применимо к возрасту Vue-CLI2.0, Vue-Cli3.0 представила цепочку WeepPack, в основном различных конфигураций, приведен пример.
Как с помощью DefinePlugin добавить конфигурационные файлы в vue.config.js для автоматического определения изменений окружения во время сборки, то есть как ввести конфигурационные файлы на основе NODE_ENV?
Следует отметить, что в vue-cli3.0 мы не можем напрямую SET NODE_ENV=production или EXPORT NODE_ENV=production.
Поскольку vue-cli-servive имеет 3 режима, serve по умолчанию — это разработка, а build — это production.Если вы хотите изменить NODE_ENV в пакете vue-cli-service, вам нужно переключиться через vue-cli-service serve --mode производство.
Как следующее:
Примечание. Мы можем переключаться только между тремя режимами разработки, производства или тестирования, и мы не можем вводить пользовательские среды узлов, такие как предварительная подготовка, но на самом деле этих трех сред достаточно для большинства ситуаций разработки.
Почему DefinePlugin в vue-cli 3.0 можно изменить с помощью config.plugin('define')?
Это критично!config.plugin('define'), который мы получили в vue.config.js, на самом деле является ссылкой на экземпляр webpack.DefinePlugin, созданный внутри vue-service!Чтобы прояснить этот момент, когда мы будем улучшать конфигурацию плагина по умолчанию для веб-пакета в будущем, нам нужно найти исходный код vue-service, чтобы увидеть, есть ли ссылка на соответствующий плагин.Если есть, это должно быть напрямую ссылаются в соответствии с именем, определенным vue-service, в противном случае модификация завершится ошибкой.
Я с нетерпением жду возможности пообщаться с вами и вместе добиться прогресса. Приглашаем вас присоединиться к созданной мной технической дискуссионной группе, тесно связанной с фронтенд-разработкой: