Учебник по Vite
Vite — современный инструмент сборки фронтенда, обеспечивающий быструю разработку благодаря поддержке нативных ES-модулей в современных браузерах.
Vite состоит из двух частей:
Сервер разработки:Основан на нативных ES-модулях, обеспечивает сверхбыстрые горячие обновления.
Команда сборки:Использует Rollup для сборки кода и создания оптимизированных статических ресурсов, подходящих для продакшена.
Vite требует Node.js версии 18+ или 20+. Однако некоторым шаблонам для корректной работы требуется более высокая версия Node. Когда ваш менеджер пакетов выдаёт предупреждение, обновите версию Node.

Проблемы традиционных инструментов сборки
До Vite во фронтенд-разработке обычно использовались инструменты сборки вроде Webpack. Хотя эти инструменты мощные, у них есть некоторые проблемы:
Медленный запуск:Чем больше проект, тем дольше время запуска, что влияет на эффективность разработки.
Медленные горячие обновления:При каждом изменении кода приходится пересобирать весь проект, из-за чего горячие обновления происходят медленно.
Сложная конфигурация:У таких инструментов, как Webpack, сложная конфигурация и высокий порог входа.
Появление Vite решает проблемы традиционных инструментов сборки и даёт следующие преимущества:
Сверхбыстрый запуск:Благодаря нативной поддержке ES-модулей в браузере не требуется сборка в бандл, и запуск происходит чрезвычайно быстро.
Быстрые горячие обновления:Обновляются только изменённые модули, сохраняется состояние приложения и повышается эффективность разработки.
Богатые возможности:Поддерживает TypeScript, JSX, CSS и т. д. из коробки.
Высокая расширяемость:Позволяет легко интегрировать другие инструменты и фреймворки через систему плагинов.
Как работает Vite
Работу Vite можно разделить на режим разработки и режим production:
Режим разработки:
Vite запускает сервер разработки и напрямую загружает исходный код, используя встроенную поддержку ES-модулей браузером.
При изменении кода Vite обновляет только изменённые модули и уведомляет браузер о необходимости выполнить горячее обновление, сохраняя состояние приложения.
Режим production:
Vite использует Rollup для сборки кода и генерирует оптимизированные файлы статических ресурсов.
Эти файлы можно развернуть на любом сервере статических файлов.
Сценарии применения Vite
Vite подходит для различных проектов, особенно:
Одностраничные приложения (SPA):Например, проекты на Vue, React.
Статические сайты:Быстрое создание блогов, документации и т. д.
Разработка библиотек:Используйте возможности сборки Vite для эффективной разработки и сборки библиотек.
Создание проекта Vite
Vite предоставляет несколько способов создания нового проекта, самый простой из которых — инструмент командной строки.
Откройте терминал или инструмент командной строки и выполните следующую команду, чтобы создать новый проект Vite:
npm create vite@latest
Следуйте подсказкам, чтобы ввести имя проекта и выбрать шаблон.
Vite предоставляет несколько шаблонов, включая:
vanilla:Проект на чистом JavaScript
vue:Проект Vue.js
react:Проект React
preact:Проект Preact
lit:Проект Lit
svelte:Проект Svelte

После выбора шаблона Vite автоматически создаст каталог проекта и установит зависимости. В этой главе мы выбрали фреймворк Vue.
Если вы пока не знаете, что выбрать, можно просто нажимать Enter до конца. Выводимая в окне информация будет похожа на следующую:

Проект, созданный с помощью Vite, обычно содержит следующие файлы и папки:

node_modules:Папка для хранения зависимостей проекта.
public:Папка для хранения статических ресурсов, таких как изображения, шрифты и т. д.
src:Папка для хранения исходного кода проекта.
main.js:Входной файл проекта.
App.vue:Корневой компонент проекта Vue.
index.html:Главная страница проекта.
package.json:Файл конфигурации проекта, содержащий информацию о проекте, зависимости и команды скриптов.
vite.config.js:Файл конфигурации Vite, используемый для настройки различных параметров Vite.
Запустите сервер разработки
Перейдите в каталог проекта:
cd example-vite-test
Установите зависимости:
npm installВыполните следующую команду, чтобы запустить сервер разработки:
npm run dev
После выполнения появляется следующая информация:
VITE v6.2.0 ready in 684 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ➜ Vue DevTools: Open http://localhost:5173/__devtools__/ as a separate window ➜ Vue DevTools: Press Option(⌥)+Shift(⇧)+D in App to toggle the Vue DevTools ➜ press h + enter to show help
Vite запустит локальный сервер разработки и выведет адрес доступа, напримерhttp://localhost:5173, порт можно настроить и изменить в vite.config.js.
Откройте браузер и перейдите по адресу, чтобы увидеть ваш проект Vite.

Измените код и просмотрите результат
Откройте файл src/App.vue, измените код и сохраните файл.

Вы увидите, что браузер автоматически обновляется и отображает изменённый результат.

Процесс запуска Vite
Определено в package.json:
"scripts": {
"dev": "vite"
}
Выполнитеnpm run dev. После этой команды npm найдёт локальный исполняемый файл node_modules/.bin/vite, вызовет этот файл и запустит сервер разработки.
Основные шаги процесса запуска Vite:
-
Чтение конфигурации
- По умолчанию считывается из корневого каталога
vite.config.jsилиvite.config.ts。 - Конфигурация включает
root、aliasплагины, порт и т. д.
- По умолчанию считывается из корневого каталога
-
Разрешить зависимости
- Сканирование
src/main.js(илиsrc/main.ts) в качестве входного файла. - Выполнить анализ зависимостей ES-модулей.
- Для путей импорта (таких как
@/components/Hello.vue) выполнить разрешение псевдонимов.
- Сканирование
-
Запустите сервер разработки
- Создать HTTP-сервер, порт по умолчанию
5173。 - Обеспечить возможность горячей замены модулей (HMR).
- Преобразовать файлы Vue, JS/TS, CSS и т. д. в понятный браузеру код с помощью встроенных плагинов Vite.
- Создать HTTP-сервер, порт по умолчанию
Порядок вызова файлов (на примере типичного проекта Vue 3)
npm run dev
↓
vite 命令执行
↓
读取 vite.config.js
↓
扫描入口文件 src/main.js / src/main.ts
↓
main.js 导入 App.vue 和 router/store 等
↓
App.vue -> template + script + style 分别由 Vite Vue 插件处理
↓
浏览器请求资源时,Vite 进行按需编译和模块缓存
↓
页面呈现,支持 HMR 热更新
Ключевые моменты
- Файл точки входа:
main.jsилиmain.ts, отправная точка приложения Vue. - Разрешение модулей: Vite использует
esbuildчтобы быстро обрабатывать JS/TS и обрабатывать однофайловые компоненты Vue. - Разрешение псевдонимов:
@Соответствуетsrc/, вvite.config.jsс помощьюresolve.aliasнастроено. - Горячие обновления: При изменении
.vueфайлов или JS/TS файлов, Vite будет локально обновлять модули без перезагрузки всей страницы.

Общие возможности Vite
Vite предоставляет широкие возможности, которые помогают более эффективно разрабатывать фронтенд-приложения.
1. Использование CSS-препроцессоров
Vite поддерживает CSS-препроцессоры, такие как Sass, Less и Stylus.
Чтобы использовать эти препроцессоры, сначала нужно установить соответствующие зависимости:
Sass:
npm install -D sass
Less:
npm install -D less
Stylus:
npm install -D stylus
После установки вы можете использовать соответствующий CSS-препроцессор в вашем проекте.
Например, в проекте Vue можно использовать<style lang="scss">для написания кода на Sass.
2. Использование TypeScript
Vite поддерживает написание кода на TypeScript.
Чтобы использовать TypeScript, сначала нужно установить TypeScript:
npm install -D typescript
После установки вы можете переименовать файлы .js в файлы .ts и писать код с использованием синтаксиса TypeScript.
Vite автоматически компилирует код TypeScript.
3. Использование статических ресурсов
Vite поддерживает использование статических ресурсов, таких как изображения, шрифты и т. д.
Мы можем разместить эти ресурсы в каталоге public или использовать инструкции import для импорта ресурсов.
Как использовать публичную директорию?
Поместите изображение logo.png в публичную директорию, затем ссылайтесь на изображение, используя /logo.png в вашем коде.
4. Использование инструкций import
Пример
const img = document.createElement('img')
img.src = logo
document.body.appendChild(img)
5. Использование переменных окружения
Vite поддерживает использование переменных окружения для настройки различных окружений.
Вы можете использовать.envфайл для определения переменных окружения.
Создайте файл .env:
VITE_API_URL=https://api.example.com
Используйте переменные окружения в коде:
const apiUrl = import.meta.env.VITE_API_URL
6. Использование плагинов
У Vite богатая экосистема плагинов, которая может помочь вам расширить функциональность Vite.
Мы можем использовать плагины Vite для реализации таких функций, как сжатие кода, оптимизация изображений и анализ кода.
Установите плагин:
npm install -D vite-plugin-xxx
Настройте плагин:
Настройте плагин в файле vite.config.js:
import xxx from 'vite-plugin-xxx'
export default {
plugins: [
xxx()
]
}
vite.config.js — это основной файл конфигурации проекта Vite. Настраивая vite.config.js, вы можете настраивать различные аспекты поведения Vite, такие как сервер разработки, параметры сборки, плагины и т. д.
Ниже приведён пример конфигурации vite.config.js:
Описание конфигурации vite.config.js
import { defineConfig } from 'vite';
// Импорт плагина Vue для поддержки проектов Vue
import vue from '@vitejs/plugin-vue';
// Импорт модуля path для обработки путей
import path from 'path';
// Используйте defineConfig для определения конфигурации Vite
export default defineConfig({
// Корневой каталог проекта, по умолчанию равен текущему рабочему каталогу
root: path.resolve(__dirname, './src'),
// Базовый путь, используется при развёртывании по подпути
base: '/my-app/',
// Конфигурация сервера разработки
server: {
// Укажите порт сервера разработки
port: 3000,
// Следует ли автоматически открывать браузер
open: true,
// Настройте прокси-сервер для решения проблем с кросс-доменными запросами
proxy: {
'/api': {
target: 'http://localhost:8080', // Адрес целевого сервера
changeOrigin: true, // Изменять ли origin запроса
rewrite: (path) => path.replace(/^\/api/, ''), // Переписать путь запроса
},
},
},
// Конфигурация сборки
build: {
// Укажите каталог вывода
outDir: path.resolve(__dirname, '../dist'),
// Укажите каталог статических ресурсов
assetsDir: 'static',
// Генерировать ли файлы sourcemap
sourcemap: true,
// Минифицировать ли код
minify: 'terser', // Использовать terser для минификации кода
// Настроить параметры Rollup
rollupOptions: {
// Настроить внешние зависимости
external: ['lodash'],
// Настроить формат вывода
output: {
manualChunks: {
// Собрать lodash отдельно
lodash: ['lodash'],
},
},
},
},
// Конфигурация плагина
plugins: [
// Использовать плагин Vue
vue(),
],
// Конфигурация разрешения модулей
resolve: {
// Настроить псевдонимы путей
alias: {
'@': path.resolve(__dirname, './src'), // Сопоставить @ с каталогом src
},
},
// Конфигурация CSS
css: {
// Настройка параметров CSS-препроцессора
preprocessorOptions: {
scss: {
// Глобальное внедрение переменных SCSS
additionalData: `@import "@/styles/variables.scss";`,
},
},
},
// Конфигурация переменных окружения
envPrefix: 'VITE_', // Префикс переменных окружения, по умолчанию VITE_
});
root
Задает корневой каталог проекта, по умолчанию используется текущий рабочий каталог. Здесь он установлен на./src, что означает, что исходный код проекта размещается вsrcкаталог.base
Задает базовый путь проекта, подходит, когда проект развернут по подпути. Например, если проект развернут по адресуhttps://example.com/my-app/, то установить его в/my-app/。server
Конфигурация сервера разработки:port: Укажите номер порта сервера разработки.open: Автоматически ли открывать браузер при запуске сервера разработки.proxy: Настройте прокси-сервер для решения проблем с кросс-доменными запросами. Например, проксировать запросы, начинающиеся с/apiвhttp://localhost:8080。
build
Конфигурация сборки:outDir: Укажите каталог для выходных данных сборки.assetsDir: Укажите каталог хранения статических ресурсов (например, изображений, шрифтов).sourcemap: Генерировать ли файлы sourcemap для отладки.minify: Минифицировать ли код,terser— это инструмент минификации по умолчанию.rollupOptions: Настройте параметры сборки Rollup, такие как внешние зависимости и разделение кода.
plugins
Настройте плагины Vite. Здесь@vitejs/plugin-vueплагин используется для поддержки проектов Vue.resolve.alias
Настройте псевдонимы путей. Например, сопоставьте@вsrcкаталог для удобного обращения в коде.css.preprocessorOptions
Настройте параметры CSS-препроцессора. Например, глобально внедряйте SCSS-файлы переменных.envPrefix
Настройте префикс переменных окружения. По умолчанию Vite загружает только переменные окружения, начинающиеся сVITE_префикс.