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

Угловой, чтобы реагировать

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

ES5 to ES 2015

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

ООП в функциональное программирование

Каким-то образом React и ES2015 применяли функциональное программирование, и мы начали думать о пользовательском интерфейсе как о функции текущего состояния приложения, мы начали писать небольшие чистые функции как компоненты, пытаясь изолировать побочные эффекты и использовать неизменяемые структуры данных. ES2015 принес классы, но также и стрелочные функции; мы предпочитаем составлять функции вместо расширения классов.

От MV * к компонентам и Redux

Как я уже упоминал ранее, React представил массовым пользователям архитектуру компонентов вместе с функциональным программированием и однонаправленным потоком данных. Redux также изменил наше представление о состоянии приложения. Вместо разных сервисов Angular с данными обработчиков у нас есть единый источник истины. Redux сделал все намного проще, проще в обслуживании и отладке. Этот шаблон настолько мощный, что мы можем увидеть его в других JS-фреймворках и даже в языках и платформах, таких как Swift и Java.

Новые языки

Поскольку Интернет стал крупнейшей и самой влиятельной платформой в мире, все больше и больше разработчиков начали создавать для нее. И все мы знаем, что единственный язык в Интернете - это JavaScript, который стал целевым языком.

Многие новые языки были рождены, чтобы улучшить опыт разработчиков, поскольку не всем разработчикам, по понятным причинам, нравится JavaScript. Microsoft создала TypeScript; Facebook представил FlowType и ReasonML, а также привлекли внимание такие хипстерские языки, как Elm и PureScript. Это привело нас к яркому и разнообразному опыту разработчиков, включая типизированные и чистые функциональные языки, которые компилируются в JavaScript.

От Gulp к Webpack

В 2015 году мы использовали gulp для автоматизации некоторых распространенных задач, таких как компиляция Sass, но в 2018 году с такими инструментами, как webpack, мы сделали гораздо больше: js-транспилеры, расщепление кода, встряхивание деревьев, оптимизацию ресурсов и даже машинное обучение для эффективной оптимизации разделения кода. . У нас так много возможностей, поэтому код, который мы пишем, и код, который мы выводим, иногда не идентичны.

И вернемся к моему проекту 2015 года, который:

  • нет транспайлера;
  • gulp только минимизирует мой JS и компилирует файлы SCSS;
  • все мои данные поступают из разных сервисов, и я не могу использовать потрясающие redux-devtools для их отладки, когда что-то пойдет не так;
  • я должен напомнить себе, что нельзя использовать константные и стрелочные функции, иначе пользователи IE11 пострадают, потому что нет babel.

Всего 36 месяцев, но сегодня кажется, что живешь в совершенно другом мире. Я даже не хочу упоминать обо всех API веб-платформ, появившихся в этот период. И для сравнения, Google Chrome выпустил за это время 23 версии, Firefox 21, Edge все еще находился в стадии бета-тестирования.

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

Двенадцать лет спустя Интернет продолжает волновать меня