# Установка
Vue.js изначально разрабатывался быть инкрементально адаптируемым. Это значит, что он может быть интегрирован в проект несколькими способами, в зависимости от требований.
Есть четыре основных способа добавления Vue.js в проект:
- Импорт CDN пакета на странице
- Скачивание файлов JavaScript и их самостоятельный хостинг
- Установка с использованием npm
- Использование официального CLI для развёртывания проекта, предоставляющего продвинутые инструменты для создания современного рабочего процесса разработки фронтенда (например, горячая перезагрузка, линтинг при сохранении и многое другое).
# История изменений
Последняя версия:
Подробная история изменений для каждой версии доступна на GitHub (opens new window).
# Инструменты разработчика
На данный момент в бета-тестировании — интеграция с Vuex и Router в разработке
При использовании Vue рекомендуем установить расширение Vue Devtools (opens new window) для браузера, которое позволит легче проверять и отлаживать приложения на Vue в удобном интерфейсе.
Расширение для Chrome (opens new window)
Расширение для Firefox (opens new window)
Автономное Electron-приложение (opens new window)
# CDN
Для прототипов и в обучающих целях можно использовать последнюю версию с CDN:
<script src="https://unpkg.com/vue@next"></script>
Для production рекомендуется указывать конкретную версию и сборку, чтобы избежать неожиданных поломок при выходе новых версий.
# Скачивание и самостоятельный хостинг
Если нужно избежать использования систем сборки, но нет возможности использовать CDN в production — в таком случае можно скачать соответствующий .js
файл и разместить его на собственном веб-сервере. После чего подключать его, с помощью тега <script>
, точно также, как и при подключении с CDN.
Можно просматривать и скачивать файлы с CDN, например unpkg (opens new window) или jsDelivr (opens new window). Различия файлов сборок подробнее объясняются ниже, но обычно потребуется загрузить обе сборки: для разработки и для production.
# npm
npm — рекомендованный способ установки при создании больших приложений на Vue. Он прекрасно сочетается с системами сборки, такими как webpack (opens new window) или Rollup (opens new window).
# установка последней стабильной версии
$ npm install vue@next
2
Также Vue предоставляет инструменты для создания однофайловых компонентов (также именуемых как SFC). Если хотите их использовать, то также потребуется установить @vue/compiler-sfc
:
$ npm install -D @vue/compiler-sfc
Обратите внимание, если выполняете миграцию с Vue 2, то @vue/compiler-sfc
заменяет используемый ранее vue-template-compiler
.
Кроме @vue/compiler-sfc
также понадобится подходящий загрузчик SFC или плагин для системы сборки. Более подробную информацию можно найти в разделе про однофайловые компоненты.
В большинстве случаев предпочтительным способом создания сборки с webpack и минимальной конфигурацией будет использование Vue CLI.
# CLI
Vue предоставляет официальный CLI (opens new window) для быстрого создания каркаса одностраничных приложений (SPA). Предлагаемые шаблоны содержат всё необходимое для организации современной фронтенд-разработки. За несколько минут можно получить работающую конфигурацию с горячей перезагрузкой модулей, линтингом кода при сохранении и настроенной конфигурацией production-сборки.
Совет
Использование CLI предполагает наличие знаний о Node.js и связанных с ней инструментов сборки. Новичкам во Vue или в инструментах сборки фронтенда настоятельно рекомендуем сначала прочитать руководство без применения каких-либо систем сборки прежде чем начинать использовать CLI.
Для Vue 3 требуется использовать Vue CLI v4.5, доступная в npm
по имени @vue/cli
. Для обновления необходимо переустановить последнюю версию @vue/cli
глобально:
yarn global add @vue/cli
# ИЛИ
npm install -g @vue/cli
2
3
После установки в проекте Vue необходимо выполнить:
vue upgrade --next
# Vite
Vite (opens new window) — инструмент для сборки веб-приложений, предлагающий исключительно быструю обработку кода, благодаря применяемому подходу по использованию нативных импортов ES-модулей.
Быстро развернуть проект на Vue используя Vite можно с помощью следующих команд.
Используя npm:
# npm 6.x
$ npm init vite@latest <project-name> --template vue
# npm 7+, НУЖНО дополнительное двойное тире:
$ npm init vite@latest <project-name> -- --template vue
$ cd <project-name>
$ npm install
$ npm run dev
2
3
4
5
6
7
8
9
или используя Yarn:
$ yarn create vite <project-name> --template vue
$ cd <project-name>
$ yarn
$ yarn dev
2
3
4
или с помощью pnpm:
$ pnpm create vite <project-name> -- --template vue
$ cd <project-name>
$ pnpm install
$ pnpm dev
2
3
4
# Объяснение различий сборок
В папке dist/
npm-пакета (opens new window) можно обнаружить несколько различных сборок Vue.js. Рассмотрим подробнее какой файл из dist
для каких случаев должен использоваться.
# Из CDN или без системы сборки
# vue(.runtime).global(.prod).js
:
- Для использования напрямую, через
<script src="...">
в браузере, предоставляет глобальный доступ к Vue. - Компиляция шаблонов в браузере:
vue.global.js
— «полная» сборка, которая включает в себя и компилятор шаблонов и runtime, поэтому поддерживает компиляцию шаблонов «на лету».vue.runtime.global.js
— содержит только runtime и требует чтобы шаблоны были предварительно скомпилированы на этапе сборки.
- Содержит в себе все внутренние зависимости Vue — т.е. это один файл без зависимостей от других файлов. Это означает, что необходимо импортировать всё из этого файла и этот файл только для того, чтобы убедиться в получении того же самого экземпляра кода.
- Содержит подготовленные варианты для production/разработки, кроме того сборка для production предварительно минифицирована. Используйте в production файлы
*.prod.js
.
Примечание
Глобальные сборки не являются UMD (opens new window) сборками. Они собраны как IIFE (opens new window) и предназначаются только для использования напрямую через <script src="...">
.
# vue(.runtime).esm-browser(.prod).js
:
- Для использования в нативных импортах ES-модулей (в браузере через
<script type="module">
). - Предоставляет ту же компиляцию в runtime, содержит все внутренние зависимости и жёстко заданное поведение для production/разработки глобальной сборки.
# С использованием системы сборки
# vue(.runtime).esm-bundler.js
:
- Для использования с системами сборки, такими как
webpack
,rollup
иparcel
. - Определение поведения для production/разработки условиями с
process.env.NODE_ENV
(значение будет подменяться системой сборки) - Нет готовых минифицированных сборок (минификация должна выполняться системой сборки, как и для всего остального кода)
- Импорт зависимостей (например,
@vue/runtime-core
,@vue/runtime-compiler
)- Импортируемые зависимости также являются esm-сборками и, в свою очередь, будут импортировать свои зависимости (например,
@vue/runtime-core
импортирует@vue/reactivity
) - Это означает, что можно устанавливать/импортировать зависимости по-отдельности и не оказаться в ситуации с разными экземплярами этих зависимостей, но всё равно следует убедиться, что все они разрешаются одной и той же версией.
- Импортируемые зависимости также являются esm-сборками и, в свою очередь, будут импортировать свои зависимости (например,
- Компиляция шаблонов в браузере:
vue.runtime.esm-bundler.js
(по умолчанию) — содержит только runtime и требует чтобы все шаблоны были предварительно скомпилированы. По умолчанию это точка входа для систем сборки (через полеmodule
вpackage.json
), потому что обычно при их применении шаблоны компилируются на этапе сборки (например, в файлах*.vue
).vue.esm-bundler.js
— содержит компилятор шаблонов. Следует использовать когда есть система сборки, но всё равно нужна компиляция шаблонов «на лету» (например, шаблоны в DOM или в виде инлайн-строк JavaScript). Потребуется настроить систему сборки, чтобы псевдонимvue
вёл к этому файлу.
# Для отрисовки на стороне сервера (SSR)
# vue.cjs(.prod).js
:
- Для использования отрисовки на стороне сервера в Node.js через
require()
. - При сборке приложения с помощью webpack с опцией
target: 'node'
и корректной экстернализациейvue
— это та сборка, которая будет загружена. - Есть предварительно собранные файлы для разработки/production, но соответствующий файл будет автоматически выбираться на основе значения
process.env.NODE_ENV
.
# Runtime + Компилятор vs. Runtime-only
При необходимости компилировать шаблоны на клиенте (например, если передаёте строку в опцию template
или монтируетесь к элементу DOM, используя его HTML в качестве шаблона) потребуется компилятор шаблонов, а с ним и подключение полной сборки:
// нужен компилятор шаблонов
Vue.createApp({
template: '<div>{{ hi }}</div>'
})
// можно обойтись без него
Vue.createApp({
render() {
return Vue.h('div', {}, this.hi)
}
})
2
3
4
5
6
7
8
9
10
11
При использовании vue-loader
шаблоны внутри файлов *.vue
будут предварительно компилироваться в JavaScript на этапе сборки. Поэтому в итоговой сборке компилятор шаблонов уже не будет нужен и можно использовать более лёгкую runtime-only сборку.
Введение →