В последнее время исследования конфигурации веб-пакетов раздражают, и инструмент упаковки может быть заменен в один прекрасный день. Нелегко вручную создать сложную структуру веб-пакета для приложения.Взгляните на файлы конфигурации веб-пакета vue-cli, там более 8 файлов конфигурации веб-пакета, используется более 14 плагинов и более 800 строк кода. Вы должны понять так много «правил», прежде чем начать писать код, лучше потратить больше времени на изучение ядра js, и однажды вы сможете придумать свои собственные инструменты. Чтобы неоднократно наступать на яму, или записывать процесс адаптации к этим правилам, обычно в инструментальных документах это содержание обычно не освещается. Не будьте инженером по сборке инструментов, а используйте инструменты.
1. Подготовка среды (автор - среда windows)
1.1. Установить узел
Чтобы установить узел, перейдите кОфициальный сайт, узел поставляется с npm. После завершения установки откройте cmd и введите следующую команду, чтобы проверить, прошла ли установка успешно:
node -v
npm -v
error1:node
Команда не отвечает
решить:удалятьnpm
в каталогеnpmrc
документ.
1.2. Инициализировать проект
бегатьnpm init
Инициализируйте проект в соответствии с подсказкой, сгенерируйтеpackage.json
документ
Уведомление: имя папки корневого каталога проекта не может использовать пробелы, иначе проект сообщит об ошибке.
error1:npm
Команда не отвечает
решить:удалятьnpm
в каталогеnpmrc
документ.
error2: Глобальная ошибка установки: нет разрешения или команда npm не отвечает
решить:
Обрати внимание наnodePATH
Измените его на место с разрешением, иначе могут возникнуть проблемы с разрешением при использовании командной строки для глобальной установки пакета.
- Проверьте переменные среды и node_path
- Просмотрите глобальный путь установки по умолчанию:
npm config get prefix
- Добавлено в путь установки узла
node_global
а такжеnode_cache
2 папки - Измените глобальный путь установки по умолчанию:
npm config set prefix
'C:\Users\Administrator\node\node_global'
npm config set cache
'C:\Users\Administrator\node\node_cache'
- Еще раз проверьте глобальный путь установки по умолчанию.
- Изменить переменные среды
- Пользовательские переменные -
NODE PATH
а такжеPATH
Добавить в: C:\Users\Administrator\node\node_global - Системные переменные -
PATH
Добавить: C:\Пользователи\Администратор\узел\node_global
- Пользовательские переменные -
- Перезапустите cmd, путь вступит в силу
error3:неожиданный токен {} в json на позиции 403
решить: удалить файл package.json.lock.
2. Управление пакетами
2.1. Установите пряжу
Рекомендуемая установкаyarn
Для контроля версий установите пряжуофициальная документация. Инструкции по установке:
yarn init // 初始化项目,生成yarn.lock文件
yarn add [pakeage] --dev // --dev 只在开发环境下使用的插件
yarn (install) // 安装lock文件中所有的依赖
error1: установленыyarn
, бегатьyarn install
Отчет об ошибках не может быть использован!
решить:Пучокyarn
в папке установкиbin
Добавьте папки в переменную среды.
2.2. Установкаcnpm
, домашнее зеркало нпм (опционально)
npm install -g cnpm --registry=https://registry.npm.taobao.org
3. Леса
3.1 Быстро строятся леса vue-cli
- Установить глобально:
npm install -g vue-cli
; - Проверяем успешность установки:
vue -V
; - Инициализируйте проект:
vue init webpack my-project
; - Не используйте его
night watch
, демонстрационные зависимости внутриgoogle
Ресурсы недоступны в Китае, и при запуске проекта будет сообщено об ошибке Описание официального веб-сайта: приведенный ниже тест переходит на google.com и ищет «rembrandt van rijn», а затем проверяет, является ли термин первым результатом на странице Википедии. Рембрандта.
3.2 Простота создания проекта веб-пакета без использования vue-cli для справки
Официальный сайт webpack собирает проект webpack за 5 секунд.
-
установить вебпак,
npm install --save-dev webpack
-
настроить
webpack.config.js
документ
const path = require('path');
module.exports = {
entry: './src/app.js',(主文件自己定义)
output: {
path: path.resolve(__dirname, 'bin'),
filename: 'app.bundle.js'
}
};
-
Настроить локальную службу Установить клиентский сервер
npm install webpack-dev-server
;Начало проекта
webpack-dev-server --content-base build/
;
В-четвертых, установите различные необходимые пакеты
4.1. Общий пакетный портал
4.2. Инструкция по установке
Только в использовании пакета среды разработки используется: - Save-devnpm install --save-dev 包名
Пакеты для использования в продакшене: --savenpm install --save 包名
4.3. Скомпилируйте ES6 или выше, используйте babel
- cnpm install --save-dev babel-cli babel-preset-env
- cnpm install --save-dev babel-loader
- npm install --save-dev babel-polyfill
Официальный сайт объясняет причину установки babel-polyfill: Babel компилирует только синтаксис ES6, такой как стрелочные функции, с помощью babel-polyfill можно компилировать некоторые глобальные переменные, такие как Promise, и некоторые новые нативные функции, такие как String.padStar.Since Babel only transforms syntax (like arrow functions), you can use babel-polyfill in order to support new globals such as Promise or new native methods like String.padStart (left-pad). It uses core-js and regenerator. Check out our babel-polyfill docs for more info.
4.4 создайте файл .babelrc (если он уже создан, создавать его не нужно)
{
"presets": [["env",]
}
5. Некоторые полезные настройки
5.1 Переадресация интерфейсаproxytable
В среде разработки сложные URL-адреса можно упростить, настроив сопоставление адресов, а также решить междоменные проблемы.
// config/index.js
proxyTable: {
'/api': { //将请求路径中包含api全部转发到下面配置的target路径中
target: 'http://127.0.0.1:3000', // 你接口的域名或ip
// secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
pathRewrite: {
'^/api': ''
}
}},
5.2 Конфигурация URL производственной среды (среда разработки, онлайн)
let devUrl = 'api/asset/'; //与上面proxytable中配置的api路径匹配
let proUrl = 'https://node.xxxx.com/asset/';
(curEnv == "production") ? (baseUrl = proUrl) :( baseUrl = devUrl);
5.3 Модули загружаются по запросу
использоватьvue-cli
Построенный проект по умолчанию выполняетсяnpm run build
Весь код js будет упакован как единое целое,
Расположение упаковки — dist/static/js/app.[contenthash].js. Этот файл очень большой, возможно, несколько мегабайт, что серьезно влияет на производительность страницы.
Когда модули вводятся в файл маршрутизации, модули упаковываются, а компоненты, которые мы хотим объединить, упаковываются в один.chunk块
Иди, используй Webpackrequire.ensure
, а в конце добавитьchunk
имя, то же самоеchunk
Именованные модули будут упакованы вместе.
router/index.js
const lotteryIndex = r => require.ensure([], () => r(require('@/pages/lottery/lottery-index.vue')), 'chunk1')
const drawList = r => require.ensure([], () => r(require('@/pages/lottery/draw-list.vue')), 'chunk2')
const drawDetail = r => require.ensure([], () => r(require('@/pages/lottery/draw-detail.vue')), 'chunk3')