Немного (надеюсь) о себе

Всем привет! После учебы попал на ферросплавный завод в 2005 году, сначала "киповцем" в цех КИПиА, а позже меня перевели в службу АСУТП. Там относительная свобода в сравнении с цехом АСУП, потому что у них там были разные корпоративные стандарты безопасности, Active Directory и другие ограничения на разработку. В нашем же цехе, хоть и была проблема с Интернет, все сервера были на тот момент ограничены внутренней сетью, но на тот момент дома почти у всех был ADSL и дома можно было искать информацию, а потом на работе ее использовать.

В итоге практика написания скриптов на VBScriptSCADA 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)


  1. divinity2000
    28.10.2024 21:50

    Какой-то странный пост. Прочитав заголовок мне стало интересно какую аналогию проводят, например, .Net разработчики, сравнивая Razor с React (пример из воздуха). Ну или опыт подключения того же Angular в MVC, какие трудности преодолевали и т.д.

    А тут просто набор фрейморков и описание из википедии (утрирую).


    1. gmtd
      28.10.2024 21:50

      Страдает подача материала, но если задуматься, то статья именно о том, что и заголовок - аналитика выбора фронтенда человеком с бэкенд опытом. Она отлична от опыта, например, чистого вкатуна во фронт. Человек тут уже прошел ООП, прошел MVC и другое, и делает вывод с тех позиций. Я был примерно в такой-же ситуации, так же сравнивал фреймы по прошлому опыту.

      Но подано это не четко, согласен. Не прослеживается главная сюжетная линия


      1. vajarkov Автор
        28.10.2024 21:50

        Согласен, это мой первый опыт написания технической статьи, до этого только приходилось мануалы писать, поэтому жанр для меня новый, ну и порой нехватка времени. Написать очень хотелось что-то и выбрал тему о наболевшем, хотел более длинно написать с примерами, но понимал, что не могу вспомнить даже названия того фреймворка, на чем изначально написан клиент. Ну я теперь работаю в другом месте, поэтому примеры здесь насколько бы были уместны пока не знаю.


        1. savostin
          28.10.2024 21:50

          Это не техническая статья, а мемуары


          1. vajarkov Автор
            28.10.2024 21:50

            Ну и так на решение проблемы для меня ушло не очень много времени, а опыт нужен для того, чтобы понять почему для меня это был сложный выбор. А так да, можно было уместить в одно предложение, ну типа: "Я бекенд-разработчик, надо было написать фронт, посмотрел Angulat, React и наткнулся на Vue, посмотрел всё и выбрал Vue - она проще".... Как-то так))) Но суть хабра, что все деляться СВОИМ ЛИЧНЫМ ОПЫТОМ, как я понимаю, и на первой статье, вряд ли кто-то пойдет смотреть мой профиль и резюме и не поймет, почему именно эта проблема у меня возникла.


    1. vajarkov Автор
      28.10.2024 21:50

      Википедию я не читал, по крайней мере именно сейчас, уверен, что там больше технических деталей, ну и сама википедия тоже чей-то опыт, причем думаю не только одного человека. А здесь приведен именно мой опыт и мои сложности при выборе. Все детали не смог привести, потому что, во-первых, первый раз пишу, во-вторых, это писалось поздно ночью, уже из себя информацию просто выдавливал, чтобы дописать наконец. Спасибо за критику, надо на себя взглянуть со стороны


    1. vajarkov Автор
      28.10.2024 21:50

      Википедию я не читал, по крайней мере именно сейчас, уверен, что там больше технических деталей, ну и сама википедия тоже чей-то опыт, причем думаю не только одного человека. А здесь приведен именно мой опыт и мои сложности при выборе. Все детали не смог привести, потому что, во-первых, первый раз пишу, во-вторых, это писалось поздно ночью, уже из себя информацию просто выдавливал, чтобы дописать наконец. Спасибо за критику, надо на себя взглянуть со стороны


  1. artptr86
    28.10.2024 21:50

    Из тройки Angular, React, Vue концептуально ближе всего к Knockout именно Vue, поэтому разобраться с Knockout после него должно быть несложно.


    1. vajarkov Автор
      28.10.2024 21:50

      Спасибо! Уже почитал мануалы, посмотрел видео, что-то попробовал пописать, действительно близки, хотя мне лично кажется, что ближе к React, но это личное восприятие. Сама проблема, с которой столкнулся, как оказалось позже не в Knockout, а с зависимостями модулей, которую не могу пока до конца разрешить... Но ничего, думаю все получится!))


  1. 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


    1. vajarkov Автор
      28.10.2024 21:50

      С переходом со 2-го на 3-ю версию столкнулся, изначально был только версии 2, 3-й только появился и ничего на нем не было, потом повернулось всё в другую сторону и пришлось переписывать.

      Angular хотел, но по времени было критично, но там и не было смысла, так как проект изначально был не очень сложный. Там в принципе, видеть кол-во выполненых работ, сколько кто выполнил и где выполнил, ну и отчеты, где одним запросом к базе решается, а там потом выгрузить в нужном формате.

      А вот какую использовал библиотеку или фреймворк первоначальный разработчик - я вспомню и сюда добавлю ради интереса...


  1. Metotron0
    28.10.2024 21:50

    Всегда эти трое. А где Svelte, Lit, Alpine, Riotjs? Или в них слишком мало возможностей?


    1. gmtd
      28.10.2024 21:50

      Какой процент рынка по сравнению с этими тремя они занимают?


      1. Metotron0
        28.10.2024 21:50

        Никакой и не займут, если ими не будут пользоваться.


        1. gmtd
          28.10.2024 21:50

          Пользуйтесь
          Мне ни один точно не подходит


    1. vajarkov Автор
      28.10.2024 21:50

      Потому что я все таки разработчик бек, поэтому надо с чего-то было начать, потому что они больше документированы. Это потом можно уже другие изучать, когда хоть какой-то появился опыт... Все же просто...


  1. BloodyEagle
    28.10.2024 21:50

    Сам так-же выбирал недавно. И тоже выбрал Vue. Провода про ангуляр я как то вообще не знал )))

    Но жизнь внесла коррективы и по прошествии 4 месяцев - я ангулярщик...