# πŸš€ ПолноС руководство ## πŸ“‹ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ установкС ### БистСмныС трСбования - **Node.js** 16.0+ - **npm** 7.0+ ΠΈΠ»ΠΈ **yarn** 1.22+ - **Git** (для клонирования) ### ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вСрсий ```bash node --version # v16.0+ npm --version # 7.0+ git --version # любая Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ``` ## πŸš€ ВозмоТности - **⚑ Vite + Vituum** - МолниСносная сборка ΠΈ HMR - **🎨 Π¨Π°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹** - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Pug ΠΈ Twig - **πŸ’… SCSS** - Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ прСпроцСссор CSS - **πŸ” Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³** - ESLint + Prettier + Stylelint - **πŸ“± ΠΠ΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ** - Mobile-first ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ - **πŸ–ΌοΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ** - АвтоматичСскоС сТатиС - **πŸ”’ HTTPS** - БСзопасная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° - **πŸ“Š JSON Π΄Π°Π½Π½Ρ‹Π΅** - ДинамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° - **🎯 Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ JS** - ES6+ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ## πŸ“¦ Установка ```bash # ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория git clone cd modern-frontend-builder # Установка зависимостСй npm install ``` ## πŸ› οΈ ИспользованиС ```bash # Запуск сСрвСра Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ npm run dev # Π‘Π±ΠΎΡ€ΠΊΠ° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° npm run build # ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр сборки npm run preview # Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ npm run lint # ESLint npm run format # Prettier npm run lint:style # Stylelint # HTTPS сСрвСр npm run serve ``` ## πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ``` src/ β”œβ”€β”€ pages/ # Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ (HTML/PUG/TWIG) β”œβ”€β”€ layouts/ # ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹ шаблонов β”œβ”€β”€ components/ # ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ β”œβ”€β”€ styles/ # SCSS стили β”œβ”€β”€ js/ # JavaScript ΠΌΠΎΠ΄ΡƒΠ»ΠΈ β”œβ”€β”€ images/ # Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ β”œβ”€β”€ fonts/ # Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ β”œβ”€β”€ data/ # JSON Π΄Π°Π½Π½Ρ‹Π΅ └── public/ # БтатичСскиС Ρ„Π°ΠΉΠ»Ρ‹ ``` ## 🎨 Π Π°Π±ΠΎΡ‚Π° с шаблонами ### Pug ```pug extends ../layouts/base block content .hero h1= data.content.hero.title p= data.content.hero.subtitle ``` ### Twig ```twig {% extends 'layouts/main.twig' %} {% block content %}

{{ data.content.hero.title }}

{{ data.content.hero.subtitle }}

{% endblock %} ``` ## πŸ’… БистСма стилСй - **vars** - Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ - **Mixins** - ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ стили - **Components** - ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ - **Utilities** - Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы - **BEM мСтодология** - Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ## πŸ–ΌοΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ АвтоматичСская оптимизация: - **JPEG** - mozjpeg сТатиС - **PNG** - pngquant оптимизация - **SVG** - SVGO минификация - **WebP** - Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ## πŸ“Š Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ JSON Ρ„Π°ΠΉΠ»Ρ‹ автоматичСски доступны Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…: ```javascript // Π’ JavaScript import { loadData } from './utils/dataLoader.js'; const data = await loadData('/src/data/content.json'); ``` ## πŸ”§ Настройка ### Vite конфигурация ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ настройки Π² `vite.config.js`: - Алиасы ΠΏΡƒΡ‚Π΅ΠΉ - ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ - Настройки сборки - HTTPS сСртификаты ### Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ - **ESLint** - JavaScript ΠΊΠΎΠ΄ - **Stylelint** - CSS/SCSS стили - **Prettier** - Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ## πŸš€ Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ### Π‘Π±ΠΎΡ€ΠΊΠ° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° ```bash npm run build ``` Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ `dist/` - Π³ΠΎΡ‚ΠΎΠ² для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° хостинг. ### Настройка для хостинга Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ хостингов ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ `dist/`. Для **Netlify/Vercel**: - ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ - Команда сборки: `npm run build` - Папка ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ: `dist` Для **GitHub Pages**: ```bash # УстановитС gh-pages npm install --save-dev gh-pages # Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² package.json "scripts": { "deploy": "npm run build && gh-pages -d dist" } # Π”Π΅ΠΏΠ»ΠΎΠΉ npm run deploy ``` ## πŸ”„ Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ### ЕТСднСвная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° 1. **Запуск:** `npm run dev` 2. **Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°:** Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² `src/` 3. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°:** `npm run lint` 4. **ΠšΠΎΠΌΠΌΠΈΡ‚:** Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Git ### ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ 1. **ВСстированиС:** `npm run build && npm run preview` 2. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° качСства:** ```bash npm run lint npm run format npm run lint:style ``` 3. **Π‘Π±ΠΎΡ€ΠΊΠ°:** `npm run build` 4. **Π”Π΅ΠΏΠ»ΠΎΠΉ:** Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° `dist/` Π½Π° хостинг ## πŸ“š Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ### Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π’ `vite.config.js` ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… шаблонов: ```javascript import handlebars from '@vituum/vite-plugin-handlebars'; // Π’ plugins handlebars({ root: './src' }); ``` ### Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с CMS Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Headless CMS: ```javascript // src/js/utils/cms.js export const fetchContent = async endpoint => { const response = await fetch(`https://api.your-cms.com/${endpoint}`); return response.json(); }; ``` ### Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ PWA ```bash npm install --save-dev vite-plugin-pwa # Π’ vite.config.js import { VitePWA } from 'vite-plugin-pwa'; // Π’ plugins VitePWA({ registerType: 'autoUpdate', workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg}'] } }) ``` ### Анализ Π±Π°Π½Π΄Π»Π° ```bash npm install --save-dev rollup-plugin-visualizer # Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² vite.config.js import { visualizer } from 'rollup-plugin-visualizer'; // Π’ plugins visualizer({ filename: 'dist/stats.html', open: true }) ``` ## πŸ“– ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки - **Vite докумСнтация:** https://vitejs.dev/ - **Vituum докумСнтация:** https://vituum.dev/ - **Pug докумСнтация:** https://pugjs.org/ - **Twig докумСнтация:** https://twig.symfony.com/ - **SCSS докумСнтация:** https://sass-lang.com/ - **ESLint ΠΏΡ€Π°Π²ΠΈΠ»Π°:** https://eslint.org/docs/rules/ - **Prettier ΠΎΠΏΡ†ΠΈΠΈ:** https://prettier.io/docs/en/options.html