Front-end глазами back-end разработчика
Немного (надеюсь) о себе
Всем привет! После учебы попал на ферросплавный завод в 2005 году, сначала «киповцем» в цех КИПиА, а позже меня перевели в службу АСУТП. Там относительная свобода в сравнении с цехом АСУП, потому что у них там были разные корпоративные стандарты безопасности, Active Directory и другие ограничения на разработку. В нашем же цехе, хоть и была проблема с Интернет, все сервера были на тот момент ограничены внутренней сетью, но на тот момент дома почти у всех был ADSL и дома можно было искать информацию, а потом на работе ее использовать.
В итоге практика написания скриптов на VBScript (в SCADA Cimplicity был на тот момент только этот язык для написания сценариев, как и во многих других пакетах), с использованием Win32API, проект на Delphi с использованием Mutex и Semaphore, первый проект и вроде даже не один на Visual C++ MFC, поддержка и отладка проектов на Borland C++ и С++ Builder, с нуля созданный портал на PHP (спасибо коллеге Антону — это была его идея, чтобы не дописывать проект на умирающем уже на тот момент Delphi, хотя он вроде функционирует до сих пор), ну и самое главное, что появился опыт работы с MS SQL (почему-то нам его даже в университете не преподавали).
На следующем месте работы было более глубокое погружение в MS SQL, так как вся бизнес-логика была реализована на нём, и знакомство с Visual C# и .NET Framework, так как на нем был клиент написан на WinForms. Так же не первый опыт работы с OPC.
Но проект заканчивался, а новых пока там не планировалось, поэтому в следующей организации было знакомство с ASP.NET WebForms и, помимо MS SQL, уже и с Oracle DB. Всё было на примитивном уровне, опять сбор данных, хранение, отображение. Там было реализовано своеобразное хранение и отображение данных по сменам рабочих с помощью рекурсий на T-SQL.
В следующем проекте мне пришлось познакомиться со стеком Oracle посредством продуктов Oracle BI и сопутствующих ему продуктов, таких как Publisher, APEX, PL/SQL, JAVA и прочего.
Но Oracle BI мне быстро надоел, и я решил заняться чем-то другим. Сначала попрограммировал PLC, немного кода .NET, попробовал .NET Core, Signal R, но так и не удалось найти место, где заниматься надо только одним, может это и к лучшему.
Постановка задачи
Помимо, всего вышеперечисленного, кроме PLC занимаюсь до сих пор, но возникают внезапные задачи. На тот момент стек был такой: backend — Yii и Node.js; frontend — десктопный клиент на WPF, мобильный клиент на Flutter и веб-клиент на непонятно чем без исходников.
Веб-клиенту надо было расширять функционал, который появлялся в других клиентах и на сервере, но без исходников это проблематично. Немного посовещались с руководством и определились, что писать надо заново, так как нашел на чем написано и оказалось, что это ангуляроподобный китайский фреймворк, причём все описание его было тоже на китайском, чтобы его понять, тем более опыт фронтенда у меня был либо на PHP, либо на ASP.NET, но в этом варианте многое на сервере надо было переделывать, так как все висело на разных портах и на Linux. Какой-то функционал уже был, что-то подобное надо было реализовать на подобных технологиях, тем более как раз хотелось попробовать хотя бы поработать с чем-то новым на frontend.
Начал изучать существующие библиотеки и фреймворки. Так как был он ангуляроподобный, то первое, что начал смотреть — это Angular.
/Сразу понравился, но очень много проблем из его преимуществ.
Очень много подробной документации. Как я понял такое было не всегда, но конкуренция сделала свое дело. Но соразмерно и увеличивается время на изучение документации.
Хорошо структурированный. Как я понимаю, может меня поправят, но все таки, если есть хорошая структура, то что-то сделать неправильно очень сложно, что мне как больше предпочитающему строгую типизацию очень даже близко. Но когда не знаешь как к нему подступиться, то это очень сложно сделать «снаскоку».
Очень много обучающего видео и туториалов в сети, но требуется базовое понимание разработки на нём.
Изначально писать хотел именно на нём, но очень оттолкнула сложность и время, ну и на тот момент, как и сейчас нет хорошего материала изучения его «с нуля», поэтому его отложил и приступил к следющему знакомому мне и распространенному React.
За него почему-то не хотелось браться не смотря на все его плюсы.
Есть готовый пример на сайте с крестиками-ноликами, но после неё нет понимания, что кроме копи-паста ты что-то сделал.
С документацией тоже всё хорошо, опять же нет базиса на что опереться с самого начала, все материалы, которые есть этого сделать не позволяют.
Очень гибкий, один и тот же функционал можно сделать разными способами… Что в свою очередь, как по мне, ведет ко множеству ошибок и неоднозначности, что вообще свойственно JS, об этом очень много написано на Хабре и не только.
Вроде всё есть, а как к нему подступиться так и не понимал. Но во время поиска информации по вышеперечисленным наткнулся на Vue.js.
Так как о нём ничего не слышал — решил просто посмотреть про него и сразу наткнулся на:
Хорошую документацию. Но это как и у всех, но структура и язык описания оказались более удобочитаемыми. К чему стоит добавить, что была документация в том числе и на русском языке.
Наткнулся на очень много видео на изучение именно «с нуля», что говорило не о его популярности, а как раз о наборе популярности и популяризации.
Очень низкий порог вхождения. Что обусловлено хорошей документацией и популяризацией.
Понравился тем, что как раз был рассчитан на небольшие проекты и прост для изучения даже с элементарными знаниями HTML/CSS/JS, тем более по времени был ограничен.
Выводы
Думаю, что мой выбор уже очевиден, но нисколько не умиляю преимущество других библиотек/фреймворков, как перечисленных здесь, так и не перечисленных, каждому свое, тем более, что после приобретения опыта Vue.js перейти на что-то другое не будет проблематично, тем более сейчас мне надо раширить функционал для проекта на knockout.js, и несмотря на то, что с ним никогда не работал, но думаю, что уже могу разобраться. Кроме того, мне сейчас приходиться работать с проектом на React. Просто именно в моем личном опыте сыграл важную роль именно Vue.js.
P.S. Тут поступало предложение всё сделать с примерами и замерами, но тут до этого далеко мне было, но по поводу такой статьи я задумался. Как будет время что-нибудь придумаю.