Прежде, чем мы начнем

И с самого начала позвольте мне уточнить. Под революцией я подразумеваю не революцию для разработчика, хотя и для нас, а для всей WEB-индустрии.

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

Вступление

Недавно у меня была возможность провести собеседование с огромным количеством кандидатов, и большинство из тех, кто использует React, Angular или VueJS, больше не знали HTML. И хотя я считаю, что понимание основ необходимо, я понимаю тенденцию.
В наши дни HTML становится просто способом визуализации страницы, инструкциями для ЦП и графического процессора для размещения элементов на экране. Да, есть SEO, но на самом деле, если вы используете, например, тег H1, все, что вы делаете, это добавляете метаданные на свою страницу. Кто сказал, что это должен быть единственный выход?

Подумайте об игровых движках? Сколько времени уйдет на то, чтобы сделать игру ААА-качества, если вы напишете все с нуля? А что будет, если вы будете делать это для каждой игры? Имеет смысл абстрагировать обычные вещи в набор библиотек, которые позволят дизайнерам и разработчикам сосредоточиться на самой игре, не задумываясь о том, как вся эта модная графика будет работать под ней? Вас действительно волнует, использует ли игра DirectX, Vulkan или Metal? Вы больше не мыслите треугольниками! Но по многим причинам, таким как гибкость, производительность, SEO и другие, мы все еще склонны делать что-то в треугольнике для WEB. Вместо этого мы просто используем HTML.

Вернемся к кандидатам, о которых я говорил в самом начале. Если однажды Google изменит рендерер Angular для рендеринга вещей в Canvas или WebGL вместо HTML, они, вероятно, даже не заметят! Можете ли вы их винить? Что ж, с тем, как обстоят дела в WEB прямо сейчас, вы, вероятно, так и поступили бы, но, как и в случае с игровыми движками, когда все станет достаточно сложным, вы захотите, чтобы о вас позаботились низкоуровневые вещи.

И Flutter - первая широко распространенная технология, использующая такой подход. Когда вы пишете приложение, вы используете виджеты Flutter. Вам даже не разрешается трогать HTML. Вы не думаете, запускать ли анимацию вручную или в CSS. CSS нет! Это похоже на игровой движок, в котором все наши треугольники (HTML / CSS / JS) абстрагируются. Все, что вас волнует, - это виджеты! Прямо сейчас Flutter использует сочетание HTML и Canvas для рендеринга невероятной графики, но если однажды они переключатся на что-то более производительное, вам будет все равно, если вы получите эти преимущества.

Где революция?

Теперь, после долгого вступления, позвольте мне написать, почему я думаю, что Flutter для WEB произведет революцию во всей WEB-индустрии:

  1. Флаттер - это только начало. Как только выбранный ими подход начнет приносить свои преимущества, другие компании и частные лица начнут активно внедрять альтернативы, которые будут использовать аналогичный подход к визуализации, но с другими преимуществами. Тебе не нравится Дарт? Вот фреймворк пользовательского интерфейса на основе Kotlin, который также кроссплатформенный и высокопроизводительный.
  2. Когда вы в последний раз писали чистый JS без транспиляторов вроде Babel или TypeScript? С такими технологиями, как Flutter, вам будет все равно, потому что вам все равно, будет ли он скомпилирован в JS или WebAssembly. Можете ли вы получить доступ к DOM из WebAssembly или ваше приложение вообще будет использовать DOM ?!
  3. Поставщики браузеров начнут прилагать больше усилий не только к рендерингу HTML или производительности JavaScript, но и ко всем связанным функциям, таким как производительность / гибкость WebGL (WebGPU), производительность / гибкость рендеринга Canvas, WebAssembly и многие другие. Например, если производительность Flutter с холстом не будет хорошей из-за реализации холста, оптимизированного без использования графического процессора, для конкретного браузера, у поставщика не будет другого выбора, кроме как работать над его улучшением. А учитывая, что Flutter и Chrome были созданы одной и той же компанией, у нас уже есть один браузер (самый популярный), который получит множество улучшений в этой области.
  4. В течение многих лет поисковые системы, включая самый популярный Google, использовали HTML, чтобы понять содержание страницы и важность ее элементов. Я не говорю, что это плохо, но я хочу сказать, что они могут рассмотреть альтернативы. Например, если Flutter захочет отобразить H1, чтобы подчеркнуть важность конкретного элемента пользовательского интерфейса, они могут отобразить сам элемент на холсте, заключенном в тег HTML H1. Поисковая система не понимает содержание холста, поэтому этот тег H1 также будет включать некоторые скрытые теги только для описания значения упакованного холста.

Заключение

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

Конечно, любой новый популярный фреймворк в той или иной степени влияет на отрасль. Думаю об этом. Сколько шума было вокруг Shadow DOM и веб-компонентов до React, но как часто вы слышите эти термины сегодня? С виртуальными или инкрементными DOM вы не должны даже знать внутреннюю реализацию, предполагая, что она будет отличаться для любой платформы, на которую вы нацеливаетесь. Но с такими фреймворками, как Flutter, вы бросаете вызов самому HTML как способу рендеринга страниц.

Веб-приложения становятся все ближе и ближе к нативным. Кто из вас заметил это, когда Apple начала рендерить пользовательский интерфейс UIKit с использованием металла вместо OpenGL? Сколько пользователей заметили? Сколько из них заметили, что iOS 12 стала намного более отзывчивой, и сколько из них интересовались, почему?
То же самое и для других платформ. Если вы являетесь тем, кто разрабатывает эти наборы инструментов, вам, очевидно, следует заботиться о том, какие варианты у вас есть на конкретной платформе для рендеринга сложной графики, но давайте посмотрим правде в глаза. Через десять лет сколько разработчиков смогут рассказать вам, как запрашивать HTML-тег и назначать ему прослушиватель событий «onclick»?