Фреймворки: перехід з Yii2 на Laravel. Інтерв’ю з back-end розробником – Web-systems
Технології
29 Жовтня 2019

Фреймворки: перехід з Yii2 на Laravel. Інтерв’ю з back-end розробником

Фреймворки: перехід з Yii2 на Laravel. Інтерв’ю з back-end розробником

Про особливості фреймворків Yii2 та Laravel та чому було вирішено здійснити перехід з одного на інший - говоримо з тімлідом нашої команди back-end розробників - Олександром.

– Олександре, чому було вирішено переходити з Yii2 на Laravel? Яка різниця між ними?

Порівнювати фреймворки досить холіварна тема, результат якої зазвичай свідчить, що кожен з них – має свої переваги. Я працював з обома, спробую роз’яснити свій підхід до вибору фреймворка.

Відразу попереджаю про те, чому ми не розглядаємо Symfony.

Symfony – більш низькорівневий фреймворк, який частіше беруть за основу у великих проектах. Наприклад: написання власного фреймворка для розробки. Його в принципі не можна порівнювати з Laravel і Yii2, бо вони використовують його компоненти в своїх реалізаціях. 

Symfony – потужний продукт, що дозволяє гнучко налаштовувати практично будь-яку систему під потреби. Але в ньому мало що можна використовувати в якості готових рішень для дрібних, типових задач. На GitHub можна зустріти безліч бібліотек або розширень написаних для того ж Yii2 або Laravel якраз на Symfony.

Yii2

Почнемо з Yii2, так як це – мій перший фреймворк, який я вивчив. До речі, вивчається даний фреймворк дуже легко, при мінімальних знаннях ООП (об’єктно-орієнтоване програмування – прим. ред.).

Переваги Yii2 

  • Легко вивчається, низький старт розробки
  • Має безліч вбудованих рішень для інтерфейсів
  • Відмінний генератор моделей, контролерів І CRUD

Недоліки Yii2 

  • Монолітність фреймворку
  • Погано розвивається (вихід нових версій)
  • Занадто “склеєні” бібліотеки для frontend’а з backend’ом

– А можна більш детально по кожному з пунктів?

  • Легко вивчається. Це дійсно так. Посидівши день-два, над невеликим проєктом, ви вже починаєте спокійно кодити на ньому. Зовсім нещодавно, вони оновили свій сайт з гайдами і документацією.
  • Вбудовані рішення для інтерфейсів можна описувати дууу-уже довго, але я постараюсь коротко. У систему вбудований Bootstrap, на жаль поки третій… і купка власних модулів, які з ним пов’язані.
    Можна навіть погано володіти версткою на Bootstrap, і при цьому – за допомогою вбудованих в Yii2 методів зробити спливаючі модальні діалоги, віконця, що випадають списки, спойлери і т.д.
  • Генератор моделей, контролерів – окремий момент, але частково пов’язаний з попереднім. У Yii2, є якась GUI область, для вибору різних генерацій. Зверніть увагу, у інших фреймів, якщо і є генератори – то, як правило, лише консольні. Тут є і інтерфейс? і дуже зручно користуватися, називається ця краса – gii.

Моделі генеруються не як в Laravel. В інтерфейсі вказується таблиця, назва і розташування класу для моделі. З урахуванням простору імен, програма сама підтягує всі залежності (можна відключити, якщо не потрібні), якщо розставлені foreign key, і «викочує» модель, зі всіма властивостями взятими по колонках таблиці і методами для зв’язки з іншими (якщо вони є).

CRUD генерує готові інтерфейси, контролери до них, для управліннями даних у зазначеній йому моделі. Тобто, спочатку потрібно створити модель, а потім робити CRUD генерацію. На виході, ви отримаєте відразу готовий інтерфейс з певною адресою, в якому можна заводити нові записи таблиці, редагувати і видаляти їх.

Дуже зручно використовувати для створення панелей адміністраторів або дашбордів. Швидко генерується готовий інтерфейс, який потім можна відредагувати, і користуватися, призначивши захист роутам шляхом авторизації, або інакше. Сам інтерфейс використовує безліч вбудованих віджетів, які теж можна переналаштовувати на свій розсуд. 

Це – дійсно швидка розробка систем з інтерфейсами управління даних. Можна досить швидко зробити окрему CMS для потреб конкретного проєкту. Як на мене, це – головний плюс Yii2 в порівнянні з іншими фреймворками. 

Тепер – більш детально про недоліки. 

  • Фреймворк є монолітним. Вся розробка в сучасних реаліях зводиться до боротьби з ним. Велика “зв’язаність” частин фреймворку, що робить важким використання сторонніх компонентів.
    Невідповідність solid принципам, велике змішування зон відповідальності. Повсюдне використання сервіс-локатора. Фреймворк ідеально підходить для швидкого прототипування, щось серйозніше на ньому писати дуже боляче. 
  • Повільно розвивається – рішення в ком’юніті приймаються дуже повільно.

Слід звернути увагу, що Yii2 досі використовує Bootstrap-3, і нового за останній час в ньому додалося досить мало.

  • Ну і останній пункт – це завелика “склеєність” фронтенда з бекендом. Безліч віджетів та ін., відразу роблять генерацію готових рішень в представленнях (views). Це – добре і швидко. Але багато хто з них, викидають скрипти прямо в тіло сторінки, в коді цих віджетів перемішаний php і html, що не дуже добре виглядає. Підтримувати такий код є досить проблематичним.

Такий метод розробки не дозволяє використовувати збирачі, типу WebPack, Gulp або ін. Тобто, використовувати можна… Але доведеться відмовитися від основної переваги Yii2 – не користуватися генераторами і готовими рішеннями для інтерфейсу. Не застосовувати класи, які дозволяють збирати скрипти і css в assets і тому подібне. А якщо відмовитися від них, що тоді залишиться?..

У сучасній розробці все йде до того, щоб якомога далі відокремити frontend від backend, і в цьому плані Yii2 застарів. 

– А як щодо Laravel?

Так, оскільки ми досить детально познайомилися з Yii2, давайте порівняємо його з Laravel.

Переваги Laravel 

  • Компонентна архітектура
  • Має вбудований білдер скриптів і scss
  • Вбудований шаблонізатор Blade
  • Гнучке формування роутів
  • Гнучкі можливості для написання REST API
  • Швидко розвивається

Недоліки Laravel

  • Великий функціонал працює через фасади
  • Вивчається трохи складніше Yii2
  • Немає офіційної документації російською мовою
  • Немає вбудованих генераторів інтерфейсів
  • Вищий поріг входження
    Компонентна архітектура дозволяє проектувати систему дуже гнучко. Можливість легкого використання сторонніх пакетів. Слідування solid принципам, часті оновлення та дотримання/впровадження нових стандартів psr. Фреймворку дорікають за його фасади, але по-суті він дозволяє їх і не використовувати. Вся архітектура – в твоїх руках.

Вбудований білдер заснований на WebPack, фактично це – надбудова над ним. Вона дозволяє легко почати роботу і збирати frontend НЕ копаючись в великих мануалах по WebPack і його налаштуваннях.

В системі він зветься Laravel mix, і це по-суті WebPack, вже налаштований під більшість завдань, де ми просто вказуємо звідки беремо вихідні, і куди кладемо результат.

Приклад mix’a

У прикладі стандартна конфігурація, яка у вас з’являється відразу після інсталяції фреймворка. Таких міксів там можна створювати скільки завгодно багато, якщо у вас є поділ декількох frontend додатків.

Мікс відразу вміє збирати scss, однофайлові компоненти Vue, а так само в нових версіях Laravel, Vue.js йде відразу в постачанні фреймворка.

Отже, на 2019 рік – фреймворк Yii2 застарів. І це – об’єктивно. Нові проекти на ньому, переважно, вже не починають робити. Вивчаючи Yii2 в 2019 році – ви прирікаєте себе на підтримку відносно не нових проектів з кодом не кращої якості. Що буде з Yii3 – важко сказати.

Тому, було прийнято рішення рухатись в напрямку нових технологій. Зважено плюси і мінуси, час переходу. Ми у Web-Systems Solutions обрали Laravel – з його величезною еко-системою, яку реально розвивають.

– Які труднощі виникали в процесі переходу?

Серйозних труднощів не було, є багато матеріалів для вивчення + хороша документація і гайди на офіційному сайті. Та й не тільки. Головне бажання – і все вийде!

– Які поради можна дати тим, хто здійснює такий перехід? І що це дасть у результаті?
Не сумніватись у вибраному рішенні, не зупинятись на півдорозі. В результаті ви отримаєте сучасну технологію, якою приємно користуватись і розвиватись разом з нею.

– Що, на твою думку, є найцікавішою частиною роботи back-end розробника?
Постійний рух і вивчення нових технологій. Проєктування архітектури веб-додатку, впровадження нових підходів. Бекенд тісно пов’язаний зі сферою devops – тому постійно доводиться розширювати кругозір й світогляд. Постійний пошук кращих рішень. Велика кількість нестандартних задач, які змушують добряче помізкувати.

Перегляди : 199

Також рекомендуємо:

В інтернеті можна знайти величезну кількість статей про те, як ефективно продавати через онлайн майданчики і їх переваги перед індивідуально розробленими веб-сайтами. У цій статті ми не будемо сперечатися, адже багато торговців дійсно успішно реалізують свої товари на торговельних майданчиках. Ми спробуємо розібратися, на якому етапі розвитку бізнесу підприємцю знадобиться власний веб-сайт.
20 Квітня 2017
Код завжди повинен працювати коректно. Це головне правило розробника. Коли працюєш у великій команді, де кожен робить свою частину спільного проекту, важливо забезпечити узгодженість дій. Для цього ми і пишемо Автотест. Мета автотестування: забезпечити якість продукту, а також переконається в тому, що твій код не поламають. У цій статті Front-end розробник Віталій розповідає про автотестування на одному з його проектів.
16 Березня 2018
Після 6 місяців розробки 19 січня 2017 року світові постала нова версія Docker 1.13. З релізом версії 1.13 розробникам стало доступно безліч нових функцій, поліпшень і виправлень. Детальна інформація про оновлення ПЗ, в перекладі статті з офіційного Блогу компанії docker.com.
01 Лютого 2017
Web-Systems Solutions використовує cookie для персоналізації сервісів і аналітики користувачів. Продовжуючи використовувати даний сайт, ви підтверджуєте свою згоду на використання файлів cookie. Ми серйозно відносимось до захисту персональних даних - ознайомтеся з умовами та принципами їх обробки.
Я погоджуюсь