Flask & Vue. Використання систем збірки проекта. Webpack. Приклад№ 2.8
Що таке системи збірки? Навіщо вони потрібні?
Написаний ручками код містить багато символів, які покращують читання коду людиною, але абсолютно зайві для інтерпретатора, збільшують розмір файлів, подовжують час завантаження і т.п. Те саме стосується CSS. Крім того, існує така проблема, як сумісність з різними версіями браузерів. Або Ви розв'язуєте ці проблеми самостійно, або це за вас зроблять елементи системи збірки проекта. Мені більше подобається другий варіант :) Зібрані проект, зазвичай, менші за розміром, завантажуються та стартують швидше. Системи збірки під час розробки аналізують Ваш код і попереджують про помилки. Це реально допомагає писати чистіше. Фрагменти CSS коду для різних компонент не будуть перетинатися. А в фінальний код не будуть потрапляти коментарі, які користувачам не потрібно бачити взагалі.Які є системи збірки для Vue
Webpack, Browserify, Rollup.
Чому Webpack?
Vue використовує Webpack за замовчуванням. Я завжди використовував Webpack, інші не використовував, порівняти не можу. Якщо в когось є такий досвід - пишіть в коментарях. Буду вдячний.Які відмінності для розробника
- одно-файлові компоненти VUE
- все розкладено по окремим директоріям, файлам
- контроль залежностей в вашому проекті
- легше різати на чанки великі проекти
- простіша групова розробка, коли колектив розробників великий
Як розробляти проект з сервером розробки
Встановлюємо vue, vue-cli
npm install vue
npm install -g @vue/cli
Створюємо проект:
vue create frontend
Запускаємо проект з сервером розробки:
cd frontend
npm run serve
Збираємо проект:
npm run build
В прикладі використовуються пакети, які потрібно буде встановити.
Встановлення пакетів:
npm install vue-lodash --save
npm install vuex --save
npm install vue-router
npm install vue-material --save
npm install vuejs-dialog --save
npm install fingerprintjs2
npm install vue bootstrap bootstrap-vue
Як розробляти проект з бекендом (на локальній машині)
- запускаємо бекенд: python3 ./run.py
- dataset.js - URL до бекенду. Обов'язково з портом
- запускаємо сервер розробки фронтенда: npm run serve
Публікація проекта в певну папку
Коли ми працюємо з сервером розробки, посилання в браузері звертаються до кореня, наприклад localhost:8080/. Але на проді може знадобитися, щоб фронтенд був розташований в іншій директорії. Це можна описати в файлі конфігурації:vue.config.js:
...
publicPath: process.env.NODE_ENV === 'production'
? '/frontend/'
: '/',
...
Як використовувати чанки (Webpack Chunk Name)?
В попередніх прикладах ми ручками розкладали компоненти по файликам, довантажували необхідні в beforeEnter (дивись як писали роути):
{ path: '/product/prm/:prm',
component: { template: ' ' },
beforeEnter (to, from, next) { loadComponents("product.js"); next() }
},
Це КАПЕЦЬ як не зручно в великих проектах! Завжди провтикуєш, що потрібно вантажити додаткові файли. На щастя тепер такою фігньою страждати не потрібно.
Роут описується так:
const Product = () => import(
/* webpackChunkName: "product" */ '@/components/Product.vue'
);
Все. Цей шмат (webpackChunk обізваний нами "product") буде завантажуватися тільки тоді, коли буде потрібен. ми не мусимо згадувати: а які ще компоненти треба завантажити, бо зараз система збірки сама знає, які компоненти використовує: в такому випадку, Product.vue і включить їх в цей чанк.
Як юзати фронтенд з бекендом з попередніх прикладів
Збираємо проект:
npm run build
потім, після збірки, копіюємо файли з папочки dist в папку frontend прикладу з бекендом. Все. Далі це можна бути автоматизувати.
Що нам дала система збірки проекта?
Використання системи збірки проекта спростило повторне використання компонент, мінімізувало всі скрипти, зменшило вірогідність помилок в коді, розширило підтримку браузерів.Висновки. Що далі?
Коли можна НЕ юзати збірку? В деяких, дуже дрібних проектах, збірка проекта може заважати і бути взагалі не потрібною. Не треба страждати, можна відмовитись від неї. Також, в окремих випадках, коли Ви використовуєте специфічні бібліотеки JS, які ну дуже важко прикрутити, - теж доводиться робити проект без збірки. Коли Ви працюєте над проектом один, це не проблема взагалі. Але, якщо розробників декілька, тоді значно складніше організувати їх роботу і без систем збірки проектів не обійтися.Це фінальна стаття цієї серії прикладів. Цими прикладами я намагався пояснити основи і принципи побудови web-додатків (фронтенда) і те, як вони працюють з бекендом. Подальші приклади, якщо будуть, то - виключно спеціалізовані з якоїсь теми, але на базі цього останнього прикладу.
Як зібрати і запустити приклад?
- створюємо директорію vue_projects - cd vue_projects - встановлюємо vue:
npm install vue
npm install -g @vue/cli
- копіюємо директорію frontend (з архіву)
- заходимо в директорію frontend, встановлюємо потрібні пакети:
npm install
npm install vue-lodash --save
npm install vuex --save
npm install vue-router
npm install vue-material --save
npm install vuejs-dialog --save
npm install fingerprintjs2
npm install vue bootstrap bootstrap-vue
Далі запускаємо сервер розробки або збираємо проект:
npm run serve
npm run build
Або скачати архів з усім барахлом, розпакувати і вперед.
Дивись також:
- Flask & Vue. Приклад# 2.1
- Flask & Vue. Приклад# 2.2 Frontend - Зручна навігація
- Flask & Vue. Приклад# 2.3 Серверна пагінація, пошук, сортування даних
- Flask & Vue. Приклад# 2.4 Проста аутентифікація
- Flask & Vue. Приклад# 2.5 Авторизація
- Flask & Vue. Приклад# 2.6 Кастомні компоненти
- Flask & Vue. Приклад# 2.7 SQLAlchemy, Migrate, Marshmallow, JWT
- Flask & Vue. Використання систем збірки проекту. Webpack
- Flask & Vue. OAuth. Facebook / Google Account
- Flask & Vue. Завантаження файлів
Tags
bme280 bmp280 gps mpu-6050 options stm32 ssd1331 ssd1306 eb-500 3d-printer soldering tim mpu-9250 dma watchdog piezo exti web raspberry-pi docker ngnix solar bluetooth foc html css brushless flask dc-dc capture gpio avr rs-232 mpx4115a atmega mongodb st-link barometer pwm nvic git java-script programmator dht11 hih-4000 pmsm encoder max1674 smd sensors rtc adc lcd motor timer meteo examples i2c usb flash sms rfid python esp8266 servo books bldc remap eeprom bkp battery ethernet uart usart displays led websocket nodemcu wifi
Архіви