Існують тисячі JavaScript фреймворків, але лише два з них — причина запеклих дискусій серед розробників. React проти Vue. Хто виграє цю битву?
- Що таке фреймворки й навіщо вони потрібні?
Нікіта: Колись усі працювали з HTML та CSS, усіх усе влаштовувало, але згодом перестало. Нікому не подобалось використовувати jQuery. Тоді почали розвиватися системні рішення — фреймворки.
Антон: Фреймворки не про single page application. Вони можуть бути як для окремих сторінок, так і для будь-чого іншого. Фреймворки розв'язують стандартні задачі, натомість бібліотеки формують і диктують якусь архітектуру.
- Яка різниця між бібліотекою та фреймворком?
Антон: Фреймворк диктує архітектуру, має сукупність рішень навколо цієї архітектури. Використовуючи бібліотеку, ви можете взяти її складову й піти собі далі.
Нікіта: Часто бібліотека не самостійна, вона вимагає додаткових інструментів, які покривають різні кейси використання. Наприклад, React — це UI бібліотека. Він часто йде зі state manager, який дозволяє збирати логіку для додатка. Зараз state manager дуже багато. Кожен обирає на свій смак. Основна суть у тому, що React не має всіх інструментів для побудови застосунків. Він покриває якусь конкретну задачу, але робить це дуже добре. React рендерить UI. Але для того, щоб покрити інший функціонал, треба використовувати додаткові інструменти, зокрема такі, що інтегруються з React. Фреймворк фокусується на покритті всіх складових застосунку, а бібліотека фокусується на чомусь одному.
Ярослав: Бібліотека вузькоспрямована й потребує інструментів, не диктує архітектуру застосунку, а з іншої сторони фреймворк — це інструмент, який надає рішення, обмежуючи нас у структурі та можливості вибору.
- Чи можна вивчати фреймворки, не знаючи HTML, CSS, JS?
Антон: Звісно, можна вивчити фреймворк і на досить неглибокому рівні розуміти JavaScript. Так само як і не зазирати під капот фреймворку. Але тоді людина буде обмежена стандартними задачами, і, найімовірніше, вирішуватиме їх не якнайкраще. Думаю, що це поганий підхід. Краще спочатку вивчити мову, а потім фреймворк.
Ярослав: Вивчати фреймворки, не вивчивши перед тим HTML, CSS, JS, нераціонально.
- На що треба орієнтуватись під час вибору фреймворку?
Антон: По-перше, чи він оновлюється, по-друге, чи є ком’юніті, по-третє, яка в нього third party.
Нікіта: Я почав би з мотивації. Для чого ви вивчаєте фреймворк? Якщо для роботи, перевірте вакансії — які фреймворки актуальні. Подивіться різні компанії та позиції. Насправді найпопулярніші фреймворки мають хорошу підтримку й ком'юніті. Але вибір між React, Vue, Angular — це питання смаку. Що для вас є базою? Якщо HTML, CSS, JS, можливо, вам буде однаково складно чи легко вивчати будь-який фреймворк. Але якщо маєте досвід backend, може сподобатися, наприклад, Vue. Існує чимало критеріїв вибору.
Поліна: Як компанії обирають технології, коли створюють продукт? Аналізують, які технології дають ті чи інші можливості, потім досліджують ринок праці на наявність спеціалістів, які володіють цією технологією, кількість таких спеціалістів, рівень їхньої зарплатні тощо. Тому популярність фреймворку, наявність ком’юніті, темп розвитку — це ключові критерії, на мій погляд.
Нікіта: Навіть нові фреймворки не намагаються зробити революцію, вони роблять еволюцію. Беруть ті знання та практики, які вже були прийняті як стандарти ком’юніті, й намагаються запакувати їх у зручну обгортку, яка виконує задачі краще. Я вважаю, те, що ви вивчите React, не означатиме, що ви не опануєте якийсь інший фреймворк. Найімовірніше, це будуть ті самі підходи, які використовуються в інших фреймворках, але загорнуті в конкретну ось таку обгортку.
Мені здається, що Vue часто використовують ентузіасти, які усвідомлюють причини свого вибору. Знаючи Vue й пішовши працювати в компанію, яка не використовує цей фреймворк, вам потрібно буде довести, що Vue варто використовувати, попри всі недоліки. Це не найкращий сценарій для першого фреймворку. Мені здається, React кращий у цьому плані, адже це бібліотека, почасти простіша у використанні. Сформований за простою моделлю. До того ж ця модель не є унікальною для React, вона в принципі використовується в багатьох фреймворках. Вивчаючи React, ви познайомитеся насамперед з концепціями фреймворків, з чого складається фреймворк, набір інструментарію. Зрештою, розуміння процесів стане кращим.
- У чому перевага курсу, а не документації?
Нікіта: Мабуть, документація –– один із мінусів React, бо знов-таки React — бібліотека, у якій небагато функцій, їх дуже швидко й коротко можна описати в документації. Існують також різні практики, але це не допоможе зрозуміти, як будувати застосунки за допомогою React. Для свого курсу я спробував акумулювати свої знання та інформацію, щоб пояснити, як будувати застосунки з React. Знати не лише самі складові, а як їх використати, щоб досягти мети.
Спікери:
Антон Немцев — Staffed Engineer в i3D.
Нікіта Попов — Technical Lead в Solidgate.
Поліна Карпенко — Product Manager в Projector Institute.
Модератор — Ярослав Ілляшенко, Front-end Developer в Howly (SKELAR).
Щоб зробити перші кроки у вебпрограмуванні, реєструйтесь на курс Front-end Beginning або JavaScript.
Щоб бути в курсі creative & tech ринку в Україні, підписуйтеся на твіттер Development & Data Science факультету.