- PVSM.RU - https://www.pvsm.ru -

Front-end глазами back-end разработчика

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

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

В итоге практика написания скриптов на VBScript [5]SCADA [6] Cimplicity [7] был на тот момент только этот язык для написания сценариев, как и во многих других пакетах), с использованием Win32API [8], проект на Delphi [9] с использованием Mutex [10] и Semaphore [11], первый проект и вроде даже не один на Visual C++ [12] MFC [13], поддержка и отладка проектов на Borland C++ [14] и С++ Builder [15], с нуля созданный портал на PHP [16] (спасибо коллеге Антону - это была его идея, чтобы не дописывать проект на умирающем уже на тот момент Delphi [9], хотя он вроде функционирует до сих пор), ну и самое главное, что появился опыт работы с MS SQL [17] (почему-то нам его даже в университете не преподавали).

На следующем месте работы было более глубокое погружение в MS SQL [17], так как вся бизнес-логика была реализована на нём, и знакомство с Visual C# [18] и .NET Framework [19], так как на нем был клиент написан на WinForms [20]. Так же не первый опыт работы с OPC [21].

Но проект заканчивался, а новых пока там не планировалось, поэтому в следующей организации было знакомство с ASP.NET WebForms [22] и, помимо MS SQL [17], уже и с Oracle DB [23]. Всё было на примитивном уровне, опять сбор данных, хранение, отображение. Там было реализовано своеобразное хранение и отображение данных по сменам рабочих с помощью рекурсий на T-SQL [24].

В следующем проекте мне пришлось познакомиться со стеком Oracle посредством продуктов Oracle BI [25] и сопутствующих ему продуктов, таких как Publisher [26], APEX [27], PL/SQL [28], JAVA [29] и прочего.

Но Oracle BI [25] мне быстро надоел, и я решил заняться чем-то другим. Сначала попрограммировал PLC [30], немного кода .NET [31], попробовал .NET Core [32], Signal R [33], но так и не удалось найти место, где заниматься надо только одним, может это и к лучшему.

Постановка задачи

Помимо, всего вышеперечисленного, кроме PLC [30] занимаюсь до сих пор, но возникают внезапные задачи. На тот момент стек был такой: backend [34] - Yii [35] и Node.js [36]; frontend [37] - десктопный клиент на WPF [38], мобильный клиент на Flutter [39] и веб-клиент на непонятно чем без исходников.

Веб-клиенту надо было расширять функционал, который появлялся в других клиентах и на сервере, но без исходников это проблематично. Немного посовещались с руководством и определились, что писать надо заново, так как нашел на чем написано и оказалось, что это ангуляроподобный [40] китайский фреймворк [41], причём все описание его было тоже на китайском, чтобы его понять, тем более опыт фронтенда у меня был либо на PHP [16], либо на ASP.NET [42], но в этом варианте многое на сервере надо было переделывать, так как все висело на разных портах [43] и на Linux [44]. Какой-то функционал уже был, что-то подобное надо было реализовать на подобных технологиях, тем более как раз хотелось попробовать хотя бы поработать с чем-то новым на frontend [37].

Начал изучать существующие библиотеки и фреймворки. Так как был он ангуляроподобный [40], то первое, что начал смотреть - это Angular [45].

Front-end глазами back-end разработчика - 1

/Сразу понравился, но очень много проблем из его преимуществ.

  • Очень много подробной документации. Как я понял такое было не всегда, но конкуренция сделала свое дело. Но соразмерно и увеличивается время на изучение документации.

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

  • Очень много обучающего видео и туториалов в сети, но требуется базовое понимание разработки на нём.

Изначально писать хотел именно на нём, но очень оттолкнула сложность и время, ну и на тот момент, как и сейчас нет хорошего материала изучения его "с нуля", поэтому его отложил и приступил к следющему знакомому мне и распространенному React [46].

Front-end глазами back-end разработчика - 2

За него почему-то не хотелось браться не смотря на все его плюсы.

  • Есть готовый пример на сайте с крестиками-ноликами, но после неё нет понимания, что кроме копи-паста [47] ты что-то сделал.

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

  • Очень гибкий, один и тот же функционал можно сделать разными способами... Что в свою очередь, как по мне, ведет ко множеству ошибок и неоднозначности, что вообще свойственно JS [48], об этом очень много написано на Хабре и не только.

Вроде всё есть, а как к нему подступиться так и не понимал. Но во время поиска информации по вышеперечисленным наткнулся на Vue.js [49].

Front-end глазами back-end разработчика - 3

Так как о нём ничего не слышал - решил просто посмотреть про него и сразу наткнулся на:

  • Хорошую документацию. Но это как и у всех, но структура и язык описания оказались более удобочитаемыми. К чему стоит добавить, что была документация в том числе и на русском языке.

  • Наткнулся на очень много видео на изучение именно "с нуля", что говорило не о его популярности, а как раз о наборе популярности и популяризации.

  • Очень низкий порог вхождения. Что обусловлено хорошей документацией и популяризацией.

Понравился тем, что как раз был рассчитан на небольшие проекты и прост для изучения даже с элементарными знаниями HTML [50]/CSS [51]/JS [48], тем более по времени был ограничен.

Выводы

Думаю, что мой выбор уже очевиден, но нисколько не умиляю преимущество других библиотек/фреймворков, как перечисленных здесь, так и не перечисленных, каждому свое, тем более, что после приобретения опыта Vue.js [49] перейти на что-то другое не будет проблематично, тем более сейчас мне надо раширить функционал для проекта на knockout.js [52], и несмотря на то, что с ним никогда не работал, но думаю, что уже могу разобраться. Кроме того, мне сейчас приходиться работать с проектом на React [46]. Просто именно в моем личном опыте сыграл важную роль именно Vue.js [49].

P.S. Тут поступало предложение всё сделать с примерами и замерами, но тут до этого далеко мне было, но по поводу такой статьи я задумался. Как будет время что-нибудь придумаю.

Front-end глазами back-end разработчика - 4

Автор: vajarkov

Источник [53]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/frontend/400861

Ссылки в тексте:

[1] АСУТП: https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%BC

[2] АСУП: https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B5%D0%BC

[3] Active Directory: https://ru.wikipedia.org/wiki/Active_Directory

[4] ADSL: https://ru.wikipedia.org/wiki/ADSL

[5] VBScript: https://ru.wikipedia.org/wiki/VBScript

[6] SCADA: https://ru.wikipedia.org/wiki/SCADA

[7] Cimplicity: http://proscada.ru/cimplicity/

[8] Win32API: https://ru.wikipedia.org/wiki/Windows_API

[9] Delphi: https://ru.wikipedia.org/wiki/Delphi_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

[10] Mutex: https://ru.wikipedia.org/wiki/%D0%9C%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81

[11] Semaphore: https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B0%D1%84%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

[12] Visual C++: https://ru.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B

[13] MFC: https://ru.wikipedia.org/wiki/Microsoft_Foundation_Classes

[14] Borland C++: https://ru.wikipedia.org/wiki/Borland_C%2B%2B

[15] С++ Builder: https://ru.wikipedia.org/wiki/C%2B%2B_Builder

[16] PHP: https://ru.wikipedia.org/wiki/PHP

[17] MS SQL: https://ru.wikipedia.org/wiki/Microsoft_SQL_Server

[18] Visual C#: https://ru.wikipedia.org/wiki/C_Sharp

[19] .NET Framework: https://ru.wikipedia.org/wiki/.NET_Framework

[20] WinForms: https://learn.microsoft.com/ru-ru/dotnet/desktop/winforms/windows-forms-overview?view=netframeworkdesktop-4.8

[21] OPC: https://ru.wikipedia.org/wiki/OPC

[22] ASP.NET WebForms: https://learn.microsoft.com/ru-ru/aspnet/web-forms/what-is-web-forms

[23] Oracle DB: https://ru.wikipedia.org/wiki/Oracle_Database

[24] T-SQL: https://ru.wikipedia.org/wiki/Transact-SQL

[25] Oracle BI: https://habr.com/ru/articles/207926/

[26] Publisher: https://www.oracle.com/middleware/technologies/analytics-publisher.html

[27] APEX: https://ru.wikipedia.org/wiki/Oracle_Application_Express

[28] PL/SQL: https://ru.wikipedia.org/wiki/PL/SQL

[29] JAVA: https://ru.wikipedia.org/wiki/Java

[30] PLC: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80

[31] .NET: https://ru.wikipedia.org/wiki/.NET

[32] .NET Core: https://habr.com/ru/companies/microsoft/articles/245901/

[33] Signal R: https://learn.microsoft.com/ru-ru/aspnet/signalr/overview/getting-started/introduction-to-signalr

[34] backend: https://drozd.red/glossary/backend/

[35] Yii: https://ru.wikipedia.org/wiki/Yii

[36] Node.js: https://ru.wikipedia.org/wiki/Node.js

[37] frontend: https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4

[38] WPF: https://ru.wikipedia.org/wiki/Windows_Presentation_Foundation

[39] Flutter: https://ru.wikipedia.org/wiki/Flutter

[40] ангуляроподобный: https://ru.wikipedia.org/wiki/Angular_(%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA)

[41] фреймворк: https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA

[42] ASP.NET: https://learn-microsoft-com.translate.goog/en-us/aspnet/overview?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=rq

[43] портах: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%82_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8)

[44] Linux: https://ru.wikipedia.org/wiki/Linux

[45] Angular: https://angular.dev/

[46] React: https://react.dev/

[47] копи-паста: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8

[48] JS: https://ru.wikipedia.org/wiki/JavaScript

[49] Vue.js: https://ru.vuejs.org/

[50] HTML: https://ru.wikipedia.org/wiki/HTML

[51] CSS: https://ru.wikipedia.org/wiki/CSS

[52] knockout.js: https://knockoutjs.com/

[53] Источник: https://habr.com/ru/articles/854150/?utm_source=habrahabr&utm_medium=rss&utm_campaign=854150