Почему я перешел на Flutter в качестве веб-разработчика [RU]

В этой статье я не хочу объяснять, что такое Flutter. Скорее я объясню, почему я, как веб-разработчик, выбрал именно Flutter в качестве своей технологии. Если у вас не так много времени, вы также можете пропустить раздел «Мой фон». Спасибо за чтение!

Мой фон

Для веб-разработчика на самом деле очевидно, что нужно программировать приложения с помощью веб-технологий, поскольку ноу-хау и опыт уже прочно закреплены. Тем не менее, я выбрал Flutter для разработки приложений для iOS и Android.

Когда разработка приложений действительно началась (2010 год), двумя языками программирования, которые можно было выбрать, были Objective-C и Java. Но я быстро понял, что не очень эффективно изучать два очень разных языка программирования, чтобы иметь возможность экономично предлагать их нашим клиентам. Поэтому я быстро узнал о PhoneGap, революционном подходе веб-разработчика к разработке «нативных» приложений. Конечно, это были просто приложения в веб-представлении, которые больше походили на плохой веб-сайт без пользовательского интерфейса браузера и со значком приложения — и это именно то, что было.

Однако производительность и воспроизведение специфичных для системы элементов пользовательского интерфейса быстро стали очень громоздкими, и производительность, к сожалению, никогда не была действительно хорошей. Впоследствии я открыл для себя Titanium Appcelerator и был в восторге от него. Здесь в качестве языка программирования использовался JavaScript, с которым я, конечно, уже был хорошо знаком. Поэтому в последующие годы я разрабатывал все свои приложения с помощью Titanium и был впечатлен реальной нативной производительностью, потому что код JavaScript был скомпилирован для соответствующего родного языка. Производительность была отличной, и я мог очень экономно программировать отличные приложения. Но была одна проблема: спрос на приложение рос, но Titanium Appcelerator был слишком «простым», чтобы реализовать очень сложные и новые пользовательские интерфейсы.

Тем временем PhoneGap был лицензирован Adobe, а Cordova использовалась как проект с открытым исходным кодом. Пришло время снова взглянуть на «старый» PhoneGap, который за это время сделал себя сам. Преимущество заключалось в том, что вы могли реализовать любую идею с помощью HTML, CSS и JavaScript в WebView, гибкость была намного лучше. Конечно, оставалась проблема с производительностью, которая с годами стала намного лучше, и были также плагины, которые были интегрированы для компиляции в реальный нативный код в фоновом режиме. Таким образом, PhoneGap / Cordova была возможностью разработать собственное приложение, которое могло бы иметь компоненты одновременно (например, заголовок или панель вкладок), которые работали изначально. Было круто снова иметь больше свободы.

Параллельно был выпущен новый фреймворк под названием Ionic, который меня снова вдохновил. Тем временем также был выпущен фронтенд-фреймворк от Google, который ругал Angular (v1). Поскольку я использовал jQuery для придания динамики веб-сайту, 2-Way-Binding Angular стал для меня следующей важной вехой в веб-разработке. С тех пор я создавал веб-сайты только с Angular, которые на самом деле были SPA и больше походили на настоящую программу. Проблема: SEO, конечно, не было моей сильной стороной, потому что Google в то время тоже не запускал JavaScript, и поэтому мне всегда приходилось кэшировать страницы как HTML — неважно, технология была великолепна. Поскольку Ionic также был основан на Angular (v1), мне было ясно, что все новые приложения должны быть реализованы с помощью Ionic. Здорово! Это сделало все лучше: архитектура была великолепной, приложения были быстрыми и, благодаря плагинам, встроенной поддержке и, следовательно, приложениям Ionic / Angular было очень хорошо. На самом деле, в конце концов, это был просто еще один WebView, но он работал намного лучше, чем тогда (2010). Я был очень доволен этой комбинацией, пока не вышел Angular v2 — я не ожидал этого. Все было по-другому, все было как-то глупо. Я быстро отказался от Angular, потому что меня очень раздражало это изменение.

Затем последовал React от Facebook, а затем Vue.js. Я никогда не был в восторге от React, потому что просто не разбирался в JSX. Хотя React-Native был бы отличным способом создания приложений, я так и не зацепился за него. Vue.js, с другой стороны, был правильным решением для моих проектов. Я мог использовать его, почти как jQuery, для небольших отдельных модулей, но я также мог создавать с его помощью целые приложения / SPA. С появлением PWA, которые, к сожалению, все еще сдерживаются Apple, я вижу будущее приложений здесь. Кто все еще хочет устанавливать родные приложения на свой смартфон и быть привязанным к магазинам? Если вся сеть действительно может быть магазином, но, к сожалению, мы еще не там. Нативные приложения будут продолжать сопровождать нас до тех пор, пока производительность JavaScript значительно не улучшится и у нас не появится больше стандартов для доступа к оборудованию устройств. Этот путь уже начался и будет продолжаться еще какое-то время.

Пока мы ждем появления PWA (мой прогноз), нам нужны другие средства разработки современных приложений, и это, безусловно, включает использование ionic, который в своей последней версии также предлагает Vue.js и React в качестве альтернативы Angular — так что это был бы хороший способ для меня пойти? Да да… но!

Почему Flutter мой первый выбор?

Flutter для меня как Titanium Appcelerator 2.0, предлагающий мне возможность использовать язык программирования для размещения виджетов, которые позже преобразуются в собственный код и, следовательно, обеспечивают отличную производительность! Очень просто сказано.

Конечно, Flutter делает многие вещи совершенно иначе, чем: например. во Flutter все является виджетом. Если мне нужен текст, я использую виджет. Если я хочу, чтобы текст располагался по центру, я вставляю его в центральный виджет и так далее. Каждый элемент является виджетом, и возможна (почти) любая вложенность. Он предлагает мне почти столько же возможностей, сколько HTML, CSS и JavaScript, и автоматически заботится о соответствующем пользовательском интерфейсе. На самом деле, мне нужно только заполнить виджеты и правильно их вложить, и мое приложение готово.

Язык программирования в фоновом режиме, конечно же, не JavaScript, а Dart. Dart — это что-то вроде Java и что-то вроде JavaScript, и поэтому мне известно. У тех, кто уже знает JavaScript с Typescript, не будет проблем с Dart. Все типизировано и помогает создавать лучший код. Также существует фреймворк (dart2js), позволяющий выполнять код дротика во время выполнения в браузере. Flutter — это, так сказать, фреймворк, который основан на Dart и включает в себя все инструменты разработчика и отладки для создания нативного приложения для iOS и Android из кода Dart через Flutter.

Flutter убедил меня не только в простоте языка программирования Dart или великолепной структуре виджетов, но и в рабочем процессе. Flutter интегрирован непосредственно в VSCode в виде плагина и поставляется со всеми удобными функциями, такими как HotReload. В настоящее время вы разрабатываете приложение, запускаете приложение на симуляторе или устройстве через Flutter и можете видеть свои изменения в приложении в режиме реального времени, если вы измените что-то в коде. Существует также инструмент отладки, аналогичный инструменту веб-разработчика в браузере. Это позволяет мне видеть все виджеты, как они вложены и какой контент они поддерживают в актуальном состоянии. Разработка приложений никогда не была для меня такой простой, как с Flutter, и в итоге получается исключительно высокая производительность, и я бы сказал, что никто больше не заметит разницы.

Поскольку Flutter (и Dart) были разработаны Google и также имеют открытый исходный код, у нас есть много возможностей в фоновом режиме, и мы можем положиться на большое сообщество. Есть дискрод-каналы, форумы, книги, курсы Udemy и суперофициальная документация. Так что все, что нужно разработчику :)

Здесь вы найдете список ссылок, которые помогли мне учиться и развиваться с помощью Flutter:













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