Quasar Framework предоставляет мощный инструмент для разработки SPA (Single Page Application) на базе Vue.js. Перед деплоем приложения необходимо правильно сконфигурировать проект, чтобы обеспечить стабильность, производительность и корректную работу на сервере.
1. Настройка конфигурации для продакшн-сборки
Конфигурационный файл Quasar quasar.config.js содержит
раздел build, где задаются параметры для
продакшн-сборки:
build: {
vueRouterMode: 'history',
publicPath: '/',
distDir: 'dist/spa',
minify: true,
analyze: false,
gzip: true
}
'history' для SPA, чтобы URL выглядели красиво без
#.'/'.dist/spa.2. Генерация продакшн-сборки
Для создания готового к деплою SPA выполняется команда:
quasar build
Процесс сборки создает оптимизированные HTML, JS и CSS файлы в
директории dist/spa. В продакшн-сборке включены:
index.html с корректными ссылками на
бандлы3. Настройка сервера для SPA
SPA приложения требуют корректной обработки маршрутов на сервере. В
режиме history все запросы, которые не соответствуют
существующим файлам, должны перенаправляться на index.html.
Примеры конфигурации:
server {
listen 80;
server_name example.com;
root /var/www/myapp/dist/spa;
location / {
try_files $uri $uri/ /index.html;
}
location /assets/ {
expires 30d;
}
}
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Эти настройки гарантируют, что при прямом заходе на любой маршрут SPA приложение корректно подгружает компоненты.
4. Деплой на статические хостинги
SPA Quasar можно развернуть на любом статическом хостинге:
dist/spa в корень проекта. Настройки маршрутизации для SPA
задаются в _redirects:/* /index.html 200
dist/spa.gh-pages:npm install --save-dev gh-pages
npx gh-pages -d dist/spa
5. Управление переменными окружения
Для корректной работы приложения в разных средах следует использовать
.env файлы:
.env.production – значения для продакшн.env.development – значения для разработкиВ quasar.config.js подключение переменных через
env:
build: {
env: {
API_URL: process.env.API_URL
}
}
Использование:
axios.get(`${process.env.API_URL}/users`)
6. Оптимизация загрузки SPA
const Dashboard = () => import('pages/Dashboard.vue');
7. Контроль версий и CI/CD
Для больших проектов рекомендуется настроить автоматический деплой через CI/CD:
Пример GitHub Actions для SPA:
name: Deploy SPA
on:
push:
branches:
- main
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20
- run: npm ci
- run: npx quasar build
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist/spa
8. Мониторинг и логирование
Даже после успешного деплоя необходимо отслеживать:
Эта последовательность действий обеспечивает стабильный деплой SPA приложения на Quasar с высокой производительностью и минимальными рисками ошибок на продакшн-сервере.