Веб-разработка - это быстро развивающаяся и постоянно меняющаяся отрасль. С началом нового года я подумал, что попытаюсь понять, какие тенденции появятся в этом году, и, хотя в Интернете есть много таких списков, вот мой список некоторых вещей, которые я считаю крутыми и интересно на 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 год определенно будет захватывающим. Я хотел бы знать, что думают другие люди. Ударь меня, если ты думаешь, что я ошибаюсь или я что-то упустил;)