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

Генераторы статических сайтов

Возникла тенденция к созданию веб-сайтов с использованием генераторов статических сайтов, таких как Next.js, Gatsby, Nuxt.js и Jekyll для создания статических клиентских приложений.

Что такое генератор статических сайтов? - Инструмент, который генерирует реактивный интерфейс JavaScript, размещается статически и делает это без какого-либо серверного кода, генерирующего просмотры / страницы. Код на стороне клиента взаимодействует с API, которые используются для источника данных и взаимодействия. Генераторы статических сайтов, такие как Gatsby, могут принимать контент (обычно markdown) и генерировать html-страницы на основе этого контента, включая JS и CSS. Когда эти статические страницы доставляются клиенту, запускается некоторый JS, чтобы приложение функционировало как одностраничное приложение.

Поскольку мы размещаем статические файлы и нет кода на стороне сервера, отображающего страницы, есть некоторые преимущества:

  • Быстрее (потому что мы обслуживаем статические файлы)
  • Оптимизирован для SEO (потому что HTML доступен для поисковых роботов. Обычно у SPA плохое SEO из-за того, что HTML отображается на стороне клиента)
  • Легко настроить (благодаря таким фреймворкам, как Gatsby, Next.js и Jekyll)
  • Более безопасный (плагины CMS, такие как Wordpress, должны обновляться, иначе будут обнаружены уязвимости безопасности)
  • Экономия затрат по сравнению с традиционными CMS, такими как Wordpress.
  • Масштабируемость - поскольку мы обслуживаем статические страницы, если требуется больше ресурсов, нам легко сбалансировать нагрузку трафика между несколькими серверами.

Такие фреймворки, как Gatsby, упрощают создание динамических частей сайта, таких как сообщения в блогах или информация об элементах, с использованием уценки. Уценка анализируется в HTML, а затем обновляются статические файлы. SPA, который создается в браузере, может затем взаимодействовать с API для динамического обновления для пользователя.

CSS в JS

Популярность CSS в JS выросла за последний год и будет продолжать расти в 2019 году. Внедрение компонентной архитектуры, ставшей популярной во интерфейсных фреймворках JS, привело к тенденции инкапсуляции ваших стилей CSS в компонент, который он относится к. В то время как предыдущие реализации должны были хранить CSS в отдельном файле (для четко разделенных задач), компонентная модель принимает методологию, согласно которой HTML, CSS и JS неизбежно будут общими задачами и как таковые могут быть инкапсулированы вместе.

Что такое CSS в JS? - Разнообразные фреймворки (Emotion и Styled Components - два из самых популярных), использующие JS для инкапсуляции CSS-стилей HTML внутри компонента. CSS в JS абстрагирует стиль до уровня компонента и охватывает его внутри этого компонента. Это также дает лучшую возможность составлять стили, будучи способным реагировать на изменения свойств (в случае React).

Почему это стало популярным? CSS в JS решает некоторые проблемы, связанные с CSS:

  • Абстрагирование от наименования классов и сокращение когнитивных накладных расходов при использовании соглашений об именах (BEM, OOCSS и т. Д.)
  • CSS по умолчанию является глобальным, что может стилизовать несвязанные функции в приложении.
  • Возможность удалять стили, не затрагивая другие части приложения.

Языки программирования

Каждый год Github публикует сообщения о состоянии языков в репозиториях Github.

Топ языков программирования по созданным репозиториям

Здесь нет ничего удивительного в связи с ростом Интернета и появлением Node.js, дающего разработчикам возможность использовать JS не только на фронтенде, но и на стороне сервера. Репозиторий JS растет из года в год. Java по-прежнему популярен как серверный язык, а Python популярен как серверный язык, а также в областях анализа данных и машинного обучения.

Лучшие языки программирования по мнению авторов, по состоянию на 30 сентября 2018 г.

JS, Java и Python входят в тройку лидеров в этой области, что имеет смысл, но есть некоторые интересные моменты. Ruby (и Ruby on Rails) находится в упадке. Хотя по Ruby по-прежнему много репозиториев, объем кода сокращается. Из-за популярности микросервисов, контейнеризации и интерфейсных фреймворков JS разработчики не используют Ruby on Rails, некогда популярный фреймворк MVC. Еще одно интересное замечание - появление Typescript. Typescript - это надмножество Javascript, обеспечивающее дополнительную статическую типизацию, вывод типов и доступ к функциям ES6 и ES7. Typescript может быть скомпилирован до ванильного JS, поэтому его можно запускать в любом браузере.

Самые быстрорастущие языки по мнению авторов, по состоянию на 30 сентября 2018 г.

Kotlin был разработан JetBrains для повышения продуктивности написания кода Java, но в то же время они не могли переписать весь свой код на Kotlin, поэтому они сделали Kotlin полностью совместимым с Java. Google объявил Kotlin официальным языком Android в 2017 году, и с тех пор его распространение резко возросло.

HCL (язык конфигурации HashiCorp), язык конфигурации, используемый для настройки сред программирования, программных библиотек и других зависимостей приложений. Преимущество HCL, обычно используемого инженерами DevOps, заключается в том, что он совместим с JSON, поскольку API HCL может принимать JSON в качестве входных данных.

Машинопись растет по причинам, упомянутым ранее.

См. Полную статью здесь https://octoverse.github.com/

JS-фреймворки помогают использовать кроссплатформенность

Сообщество JS постоянно придумывает способы использовать те инструменты, которые уже есть в их арсенале инструментов.

Создание настольных приложений: Electron - это фреймворк с открытым исходным кодом, который позволяет создавать настольные приложения с графическим интерфейсом пользователя с помощью HTML, CSS и JS, поэтому нет необходимости изучать другой язык / фреймворк. Приложения Electron созданы с использованием Chromium и Node.js, они ведут себя так же, как веб-приложения, но имеют доступ к файловой системе компьютера.

Такие приложения, как Slack, VScode и редактор Atom, созданы с помощью Electron.

Создание мобильных приложений: с такими фреймворками, как React Native, Ionic и Native Script, теперь мы также можем создавать собственные приложения для iOS и Android, используя знакомые интерфейсы. Мы обсудим это подробнее в разделе для разработки мобильных приложений.

Веб-компоненты

Веб-компоненты основаны на веб-стандартах, они позволяют создавать компоненты, которые могут быть использованы изначально во всех браузерах как пользовательский элемент HTML. Хотя нет 100% поддержки браузеров, но она очень близка, и такие фреймворки, как Stencil.js, помогают с загрузкой необходимых полифиллов для выполнения работы. Преимущество веб-компонентов заключается в том, что, поскольку они являются элементами HTML, их можно использовать независимо от того, какой фреймворк вы используете, черт возьми, вы даже можете использовать веб-компоненты в обычном JS. Так что создайте средство выбора даты один раз и используйте его, сколько душе угодно!

Разработка мобильных приложений

Гибридные приложения. Как отмечалось ранее, JS-фреймворки выполняют большую часть тяжелой работы в отношении создания кроссплатформенных / гибридных приложений. Использование таких фреймворков, как React Native и Native Script, позволяет нам использовать популярные JS-фреймворки для создания собственных приложений. Основным преимуществом здесь является то, что мы можем использовать одну базу кода для поддержки приложений iOS и Android, что значительно сокращает затраты на разработку.

Google также анонсировал Flutter,

SDK приложения для создания высококачественных нативных приложений для iOS и Android в рекордно короткие сроки. - Google

Flutter позволяет создавать кроссплатформенные мобильные приложения, но отличается тем, что вместо использования JS-фреймворка вы используете язык под названием Dart и фреймворк, вдохновленный React.

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

Бессерверная архитектура

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

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

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

Преимущества:

  • Нет необходимости в настройке и управлении серверами
  • Может быть более рентабельным только запуск кода, когда это необходимо, а не ожидание в режиме ожидания
  • Позволяет использовать архитектуру, управляемую событиями

GraphQL

GraphQL меняет правила обмена данными между вашими сервисами. Поскольку веб-приложения и мобильные приложения продолжают потреблять больше данных, старые методологии проектирования RESTful API часто требуют фильтрации больших объемов данных на стороне клиента. GraphQL смягчает это, позволяя клиенту запрашивать у сервера точные данные, которые ему нужны, и позволяя извлекать множество ресурсов за один запрос.

Эти причины делают GraphQL отличным выбором для многофункциональных клиентских приложений и вызывают рост популярности.

Искусственный интеллект и чат-боты

Несмотря на всю шумиху вокруг ИИ, реализовать машинное обучение в наших приложениях довольно сложно. Именно здесь крупные облачные провайдеры начали предлагать услуги, помогающие использовать возможности ИИ в небольших проектах. Такие сервисы, как AWS Rekognition, дают нам возможность относительно легко добавлять видео и распознавание изображений. Googles Dialog Flow позволяет нам использовать обработку естественного языка для интерпретации и обработки текста. Использование этих платформ позволяет нам относительно легко подключиться к сфере ИИ.

Наряду с этим у нас появляется все больше и больше фреймворков ИИ, которые помогают нам разобраться с ИИ. Такие проекты, как Tensorflow.js, позволяют нам создавать модели машинного обучения с использованием JavaScript. Учитывая, что мы потенциально можем использовать эти модели с помощью JS в браузере, потенциал весьма впечатляющий.

Подводя итог…

Конечно, это намного больше, чем я перечислил здесь. 2019 год определенно будет захватывающим. Я хотел бы знать, что думают другие люди. Ударь меня, если ты думаешь, что я ошибаюсь или я что-то упустил;)