Технології
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 – тому постійно доводиться розширювати кругозір й світогляд. Постійний пошук кращих рішень. Велика кількість нестандартних задач, які змушують добряче помізкувати.

Перегляди : 645

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

Не залежно від того, в якій сфері ви працюєте, якщо це робота з командою, необхідно культивувати і підтримувати корпоративну культуру. Існує безліч різних способів налагодити відносини в команді, а отже сформувати хорошу корпоративну культуру.
04 Липня 2017
В статті описані основні види сайтів з конкретними прикладами нашої компанії. Різні варіанти для різного бізнесу. Кожен зможе обрати найкращий варіант для себе.
22 Липня 2019
Хочете продавати через інтернет більше? Підкреслити всі особливості товару допоможе правильно підібраний дизайн сайту і якісні фото. У даній статті ми розглянемо 5 альтернатив білому тлу для фотографії товарів, які допоможуть виділиться і привернути увагу покупців саме до вашої продукції.
19 Січня 2017
Web-Systems Solutions використовує cookie для персоналізації сервісів і аналітики користувачів. Продовжуючи використовувати даний сайт, ви підтверджуєте свою згоду на використання файлів cookie. Ми серйозно відносимось до захисту персональних даних - ознайомтеся з умовами та принципами їх обробки.
Я погоджуюсь