Одной из ключевых особенностей Vite является встроенная система
шаблонов проектов. При создании нового приложения через
create-vite разработчик может выбрать готовую архитектурную
основу для конкретного фреймворка или подхода разработки. Эти шаблоны
позволяют быстро развернуть проект с уже настроенной структурой
директорий, конфигурацией сборки, поддержкой TypeScript и базовыми
сценариями разработки.
Система шаблонов Vite ориентирована на современные frontend-технологии и охватывает как классические приложения на чистом JavaScript, так и полноценные SPA-фреймворки.
Основные поддерживаемые шаблоны:
vanillavuereactpreactlitsveltesolidКаждый шаблон существует в нескольких вариантах:
Например:
npm create vite@latest
После запуска появится выбор:
Sel ect a framework:
> Vanilla
Vue
React
Preact
Lit
Svelte
Solid
Затем выбирается вариант языка:
Sel ect a variant:
> JavaScript
TypeScript
Шаблон vanilla предназначен для разработки приложений
без использования frontend-фреймворков. Он представляет собой
минималистичную структуру проекта с поддержкой:
Этот шаблон часто используется:
Типичная структура vanilla-проекта:
project/
├── public/
├── src/
│ ├── counter.js
│ ├── javascript.svg
│ ├── main.js
│ └── style.css
├── index.html
├── package.json
└── vite.config.js
Главная особенность — index.html выступает точкой входа
приложения.
Внутри main.js используются обычные импорты:
import './style.css'
import { setupCounter } fr om './counter.js'
Vite обрабатывает их напрямую через dev-сервер без предварительной сборки.
Отсутствуют:
Код практически полностью состоит из нативного JavaScript.
Шаблон удобен для:
При росте приложения становится сложнее:
Поэтому для крупных проектов обычно используются фреймворки.
Шаблон vue предназначен для разработки приложений на
базе фреймворка Vue.js.
Vite является официально рекомендуемым инструментом сборки для Vue 3.
src/
├── assets/
├── components/
├── App.vue
└── main.js
Главный файл запуска:
import { createApp } fr om 'vue'
import App from './App.vue'
createApp(App).mount('#app')
Одной из главных особенностей Vue является формат
.vue.
Пример:
<template>
<h1>{{ title }}</h1>
</template>
<script setup>
const title = 'Vite + Vue'
</script>
<style scoped>
h1 {
color: green;
}
</style>
Vite через специальный плагин обрабатывает:
Для поддержки Vue используется пакет:
@vitejs/plugin-vue
Конфигурация:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()]
})
Vite обновляет Vue-компоненты практически мгновенно:
Это значительно ускоряет разработку.
Шаблон изначально ориентирован на Vue 3 и Composition API:
import { ref } from 'vue'
const count = ref(0)
Чаще всего:
Шаблон react используется для приложений на базе
React.
Vite обеспечивает React-проектам:
src/
├── App.jsx
├── main.jsx
└── assets/
Файл запуска:
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
ReactDOM.createRoot(document.getElementById('root')).render(
<App />
)
Подключается официальный плагин:
@vitejs/plugin-react
Конфигурация:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()]
})
Vite использует Fast Refresh для React.
Это позволяет:
Vite поддерживает:
function Button() {
return <button>Click</button>
}
А также TypeScript-вариант:
type Props = {
title: string
}
function Header({ title }: Props) {
return <h1>{title}</h1>
}
В современных версиях React-шаблонов может использоваться:
SWC обеспечивает значительно более быструю трансформацию кода.
Даже большие React-проекты запускаются очень быстро.
Легко подключаются:
TypeScript работает практически без дополнительной настройки.
Шаблон preact предназначен для разработки приложений на
базе Preact.
Preact представляет собой облегчённую альтернативу React.
Цель библиотеки:
Размер Preact существенно меньше React.
Очень похожа на React:
src/
├── app.jsx
├── main.jsx
└── assets/
export function App() {
return (
<h1>Preact App</h1>
)
}
Используется:
@preact/preset-vite
Конфигурация:
import { defineConfig } from 'vite'
import preact from '@preact/preset-vite'
export default defineConfig({
plugins: [preact()]
})
Preact поддерживает:
Во многих случаях React-приложение можно адаптировать под Preact с минимальными изменениями.
Основные сценарии:
Шаблон lit предназначен для разработки Web Components
через библиотеку Lit.
Lit ориентирован на:
Компоненты работают независимо от фреймворков.
Можно использовать:
import { LitElement, html, css } from 'lit'
class MyElement extends LitElement {
static styles = css`
h1 {
color: blue;
}
`
render() {
return html`
<h1>Hello Lit</h1>
`
}
}
customElements.define('my-element', MyElement)
Lit активно использует Shadow DOM для изоляции:
Это предотвращает конфликты стилей.
Используются нативные механизмы браузера.
Компоненты могут использоваться практически в любом окружении.
Lit часто применяется при создании:
Шаблон svelte предназначен для приложений на базе
Svelte.
Главная особенность Svelte — перенос значительной части работы из runtime в compile-time.
В отличие от React и Vue, Svelte:
Это даёт:
<script>
let count = 0
</script>
<button on:click={() => count++}>
{count}
</button>
Используется:
@sveltejs/vite-plugin-svelte
Vite обеспечивает очень быстрый HMR:
Svelte использует встроенную реактивность:
$: doubled = count * 2
Без hooks и сложных API.
Svelte хорошо подходит для:
Шаблон solid предназначен для разработки приложений на
базе SolidJS.
Solid сочетает:
Вместо полного повторного рендера Solid обновляет только конкретные DOM-узлы, которые изменились.
Это обеспечивает:
import { createSignal } from 'solid-js'
function Counter() {
const [count, setCount] = createSignal(0)
return (
<button onCl ick={() => setCount(count() + 1)}>
{count()}
</button>
)
}
Используется:
vite-plugin-solid
Конфигурация:
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
export default defineConfig({
plugins: [solid()]
})
Solid использует сигналы:
const [value, setValue] = createSignal(10)
Изменения обновляют только зависимые участки DOM.
Хотя используется JSX, архитектурно Solid сильно отличается:
| React | Solid |
|---|---|
| Virtual DOM | Fine-grained DOM updates |
| Повторный render | Точечные обновления |
| Hooks | Signals |
| Runtime diffing | Компиляция зависимостей |
Практически каждый шаблон имеет TypeScript-версию:
vanilla-ts
vue-ts
react-ts
preact-ts
lit-ts
svelte-ts
solid-ts
Добавляются:
tsconfig.json;.ts и .tsx файлы;type ButtonProps = {
text: string
}
export function Button({ text }: ButtonProps) {
return <button>{text}</button>
}
| Шаблон | Размер runtime | Virtual DOM | Подходит для |
|---|---|---|---|
| vanilla | минимальный | нет | простые приложения |
| vue | средний | да | универсальные SPA |
| react | средний | да | крупные frontend-системы |
| preact | маленький | да | lightweight SPA |
| lit | маленький | нет | web components |
| svelte | очень маленький | нет | быстрые интерфейсы |
| solid | маленький | нет | высокопроизводительные UI |
Оптимален для:
Часто выбирается для:
Используется в:
Полезен при:
Эффективен для:
Подходит для:
Используется там, где важны: