Немного (надеюсь) о себе
Всем привет! После учебы попал на ферросплавный завод в 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. Тут поступало предложение всё сделать с примерами и замерами, но тут до этого далеко мне было, но по поводу такой статьи я задумался. Как будет время что-нибудь придумаю.
Комментарии (17)
artptr86
28.10.2024 21:50Из тройки Angular, React, Vue концептуально ближе всего к Knockout именно Vue, поэтому разобраться с Knockout после него должно быть несложно.
vajarkov Автор
28.10.2024 21:50Спасибо! Уже почитал мануалы, посмотрел видео, что-то попробовал пописать, действительно близки, хотя мне лично кажется, что ближе к React, но это личное восприятие. Сама проблема, с которой столкнулся, как оказалось позже не в Knockout, а с зависимостями модулей, которую не могу пока до конца разрешить... Но ничего, думаю все получится!))
hardtop
28.10.2024 21:50Сам старый бек-ендер (ну, или фулл-стек), и проходил путь выбора js-front-framework пару лет назад.
Реакт, при своём названии не имеет из коробки реактивности (mobx vs redux). Путь развития хаотичный - то классы, то хуки, то usestate не так используем. Теперь еще серверные компоненты внутри клиентских компонентов - "такое удовольствие" это будет отлаживать. Плюс в jsx мы смешивает код, и стили, и логику (пусть и не много её). Словно на перле писали какой-нить wwwboard.pl в 1997 году. И туча пакетных менеджеров, сборщиков, конкурирующих библиотек. И ведь всё тащит за собой зависимости. Короче, это как играть в Драконий Покер (где очень много правил). Зато самый популярный, и сбоку там ещё react-native есть.
Ангуляр самый продуманный, и должен зайти java и net программерам. Расвесистый и основательный. Как по мне - хорошо подходит именно для больших и долгих проектов. Но сложный. Видел код, где функция возвращала тип, состоящий из пары строк разных типов с пересечением и объединением. Сложно.
Вю, поскольку появился позже всех, сразу из коробки предлагает разделение на код-шаблоны-стили, и он html-first - т.е. написал условный калькулятор, встроил в часть страницы, подключил vue.min.js и всё. Зато можно наткнуться на библиотеку с документацией только на китайском языке. Переход со 2-й на 3-ю версию (с приходом Composition API) тоже добавило чехарды.
Не нашёл идеального решения. Сам использую из-за простоты Vue, но иногда тупо генерирую код на сервере + htmx.js
vajarkov Автор
28.10.2024 21:50С переходом со 2-го на 3-ю версию столкнулся, изначально был только версии 2, 3-й только появился и ничего на нем не было, потом повернулось всё в другую сторону и пришлось переписывать.
Angular хотел, но по времени было критично, но там и не было смысла, так как проект изначально был не очень сложный. Там в принципе, видеть кол-во выполненых работ, сколько кто выполнил и где выполнил, ну и отчеты, где одним запросом к базе решается, а там потом выгрузить в нужном формате.
А вот какую использовал библиотеку или фреймворк первоначальный разработчик - я вспомню и сюда добавлю ради интереса...
Metotron0
28.10.2024 21:50Всегда эти трое. А где Svelte, Lit, Alpine, Riotjs? Или в них слишком мало возможностей?
vajarkov Автор
28.10.2024 21:50Потому что я все таки разработчик бек, поэтому надо с чего-то было начать, потому что они больше документированы. Это потом можно уже другие изучать, когда хоть какой-то появился опыт... Все же просто...
BloodyEagle
28.10.2024 21:50Сам так-же выбирал недавно. И тоже выбрал Vue. Провода про ангуляр я как то вообще не знал )))
Но жизнь внесла коррективы и по прошествии 4 месяцев - я ангулярщик...
divinity2000
Какой-то странный пост. Прочитав заголовок мне стало интересно какую аналогию проводят, например, .Net разработчики, сравнивая Razor с React (пример из воздуха). Ну или опыт подключения того же Angular в MVC, какие трудности преодолевали и т.д.
А тут просто набор фрейморков и описание из википедии (утрирую).
gmtd
Страдает подача материала, но если задуматься, то статья именно о том, что и заголовок - аналитика выбора фронтенда человеком с бэкенд опытом. Она отлична от опыта, например, чистого вкатуна во фронт. Человек тут уже прошел ООП, прошел MVC и другое, и делает вывод с тех позиций. Я был примерно в такой-же ситуации, так же сравнивал фреймы по прошлому опыту.
Но подано это не четко, согласен. Не прослеживается главная сюжетная линия
vajarkov Автор
Согласен, это мой первый опыт написания технической статьи, до этого только приходилось мануалы писать, поэтому жанр для меня новый, ну и порой нехватка времени. Написать очень хотелось что-то и выбрал тему о наболевшем, хотел более длинно написать с примерами, но понимал, что не могу вспомнить даже названия того фреймворка, на чем изначально написан клиент. Ну я теперь работаю в другом месте, поэтому примеры здесь насколько бы были уместны пока не знаю.
savostin
Это не техническая статья, а мемуары
vajarkov Автор
Ну и так на решение проблемы для меня ушло не очень много времени, а опыт нужен для того, чтобы понять почему для меня это был сложный выбор. А так да, можно было уместить в одно предложение, ну типа: "Я бекенд-разработчик, надо было написать фронт, посмотрел Angulat, React и наткнулся на Vue, посмотрел всё и выбрал Vue - она проще".... Как-то так))) Но суть хабра, что все деляться СВОИМ ЛИЧНЫМ ОПЫТОМ, как я понимаю, и на первой статье, вряд ли кто-то пойдет смотреть мой профиль и резюме и не поймет, почему именно эта проблема у меня возникла.
vajarkov Автор
Википедию я не читал, по крайней мере именно сейчас, уверен, что там больше технических деталей, ну и сама википедия тоже чей-то опыт, причем думаю не только одного человека. А здесь приведен именно мой опыт и мои сложности при выборе. Все детали не смог привести, потому что, во-первых, первый раз пишу, во-вторых, это писалось поздно ночью, уже из себя информацию просто выдавливал, чтобы дописать наконец. Спасибо за критику, надо на себя взглянуть со стороны
vajarkov Автор
Википедию я не читал, по крайней мере именно сейчас, уверен, что там больше технических деталей, ну и сама википедия тоже чей-то опыт, причем думаю не только одного человека. А здесь приведен именно мой опыт и мои сложности при выборе. Все детали не смог привести, потому что, во-первых, первый раз пишу, во-вторых, это писалось поздно ночью, уже из себя информацию просто выдавливал, чтобы дописать наконец. Спасибо за критику, надо на себя взглянуть со стороны