Содержание
ключевые технологии и понятия / Хабр
Когда вы гуляете по городу, что вы видите? Взгляд часто останавливается на стильных витринах, созданных с целью привлечь внимание. Вы выбираете самую красивую из них и заходите внутрь.
То же самое происходит и в интернете. Блуждая по интернету в поисках необходимого, вы натыкаетесь на самый подходящий на первый взгляд сайт и заходите на него.
Но если витрины прозрачны и показывают, что находится внутри, приглашают рассмотреть товары поближе, то для сайтов все немного иначе. Что скрывается под видимыми элементами сайта, как они взаимодействуют с пользователем, друг с другом и с системой, стоящей за всем этим? Давайте же выясним это.
Что такое фронтенд-разработка? Фронтенд vs бэкенд
Фронтенд веб-сайта — это все, что пользователь видит и с чем может взаимодействовать при помощи браузера. Создание этой визуальной части называется фронтенд-разработкой. Дизайнеров, создающих пользовательские интерфейсы, тоже можно в какой-то смысле назвать фронтенд-разработчиками, потому что они совместно работают над этой же частью проекта.
Для разработки фронтенда в качестве базовых инструментов используются: HTML (для создания базовой структуры страниц и контента), CSS (для стилизации внешнего вида) и JavaScript (для добавления интерактивности). Такой же набор инструментов используется в процессе создания прогрессивных веб-приложений — мобильных приложений, которые выглядят, как нативные, но при этом создаются с участием фронтенд-технологий. Подробнее об этом можно почитать в статье по ссылке.
Бэкенд — это серверная часть веб-приложения, скрытая от глаз пользователя. Это понятие включает в себя серверы, на которых расположены веб-страницы и определенную логику, которая управляет функциями и процессами сайта. Здесь можно почитать более подробное описание внутренней работы веб-приложений.
Бэкенд разрабатывается с использованием другого стека технологий, включая Java, PHP, Ruby, C# и иногда JavaScript, о которых мы поговорим в соответствующем разделе статьи.
Цикл запрос-ответ
Итак, базовый набор инструментов для разработки фронтенда четко определен: HTML, CSS и JavaScript. Однако этот набор может быть значительно расширен, включив в себя диспетчеры пакетов, CSS-препроцессоры, фреймворки и многое другое.
HTML: ключевая фронтенд-технология
HTML (от англ. Hypertext Markup Language) — это язык гипертекстовой разметки, предназначенный для создания веб-сайтов, которые впоследствии могут просматриваться при помощи доступа к интернету. HTML обычно используется для структурирования веб-документа. Он определяет такие элементы, как заголовки или абзацы, и позволяет вставлять изображения, видео и другие медиафайлы.
Как работает HTML. HTML-код представляет собой множество тегов и пишется в текстовом файле. Этот текстовый файл затем сохраняется в виде HTML-файла, который можно открыть и посмотреть в браузере. Браузер сканирует его, интерпретирует код в визуальную форму и в лучшем случае отображает страницу именно так, как задумал дизайнер.
Гипертекст — способ, с помощью которого мы путешествуем по интернету, переходя по гиперссылкам, которые ведут на другие страницы. «Гипер» отсылает к нелинейности, которая позволяет перемещаться в любое место, поскольку этот процесса не подразумевает предопределенного порядка.
Разметка определяет качества, которыми наделяется текст внутри HTML-тегов. Теги определяют, как браузеры форматируют и отображают содержимое страницы.
Будучи языком, он содержит кодовые слова и синтаксис, как и любой другой язык.
Например:
Пример HTML-кода
Парный тег <html>
/ </html>
определяет границы веб-страницы, а текст между тегами <body>
/ </body>
определяет видимое содержимое страницы.
<!DOCTYPE html>
в самом начале объявляет тип документа для HTML5. Если его не обозначить, разные браузеры будут отображать его по-своему.
Вот так плавно мы перешли к HTML5.
HTML5
С момента первого своего релиза в 1991 году HTML претерпел множество обновлений. HTML5 был выпущен в 2014 году. В него были добавлены такие функции, как поддержка оффлайн хранилищ мультимедийных данных, более точные элементы контента (например, хедер, футер, навигация) и поддержка встраивания аудио и видео.
CSS: стилизация
CSS («каскадные таблицы стилей», от англ. Cascading Style Sheets) — это язык, используемый для стилизации страниц. Он определяет то, как HTML-элементы будут выглядеть на веб-странице с точки зрения дизайна, макета на разных устройствах с разными размерами экрана. CSS управляет макетом множества различных веб-страниц одновременно.
Как это работает. CSS взаимодействует с HTML-элементами, компонентами веб-страницы.
Для взаимодействия с HTML в CSS используются селекторы. Селектор — это часть CSS-кода, определяющая, на какую часть HTML будут воздействовать стили CSS.
Объявление содержит свойства и значения, используемые селектором.
Свойства определяют размер шрифта, цвет и отступы. Каждое свойство имеет значение или набор значений.
Возьмем в качестве примера:
где P
(абзац) — это селектор, { font-size:24px; color:blue; }
— это объявление, font-size:
и color:
— свойства, а 24px;
и blue;
— значения.
CSS записывается в виде простого текста в текстовом редакторе. Есть три способа добавить CSS-код в HTML:
Вместо того, чтобы добавлять CSS-код к каждому HTML-элементу, который необходимо видоизменить, можно использовать внешнюю таблицу стилей (External style sheets) — текстовый файл, содержащий весь CSS-код. Внешняя таблица стилей подключается в .html файле в контейнере
<head>
.При использовании внутренней таблицы стилей CSS-код размещается прямо в теле тега
<head>
конкретной .html-страницы.Под встроенным стилем подразумевается прописывание CSS в html-коде непосредственно того элемента, который нужно стилизовать.
CSS-фреймворки. CSS-фреймворк — это набор дефолтных CSS- и HTML-файлов, который расширяет возможности по части дизайна. Помимо их пользы при создании адаптивного дизайна, CSS-фреймворки помогают создавать различные макеты, что избавляет разработчиков от необходимости писать код с нуля в каждом случае. Обычно они заметно помогают при разработке веб-приложений под разные платформы и размеры экрана. Благодаря общим компонентам пользовательского интерфейса, Grid Layout и многим другим функциям, CSS-фреймворки значительно ускоряют рабочий процесс разработки. Существуют разные виды фреймворков:
Полнофункциональные (Bootstrap, Foundation, Semantic UI и др.),
Ориентированные на материальный дизайн: (Materialize and Material Design Lite) и
Легкие (Pure).
Мы не будем описывать их все, вместо этого приведем сравнительную таблицу:
Самые популярные CSS-фреймворки
Чтобы подробно изучить эти CSS-фреймворки, ознакомьтесь со статьей «Самые популярные адаптивные CSS-фреймворки».
Препроцессоры — Sass и LESS. Написание CSS является рутиной, и мелкие задачи, такие как: поиск значений цвета, закрытие тегов или любые другие повторяющиеся операции, отнимают много времени. Вот где пригождается препроцессор. CSS-препроцессор представляет собой скриптовый язык и расширяет возможности CSS.
Самые распространенные препроцессоры — это Sass и LESS. У них есть некоторые общие основы:
Однако между ними есть и различия.
Sass расшифровывается как Syntactically Awesome Style Sheets («синтаксически превосходные таблицы стилей»). Sass работает на Ruby и обрабатывается на стороне сервера. Поскольку корни его происхождения восходят к языку Ruby, установка осуществляется через так называемые gem-ы (несколько библиотек Ruby/Rails).
LESS расшифровывается как Leaner Style Sheets («компактная таблица стилей»). На данный момент его можно назвать скорее JavaScript-библиотекой, которая обрабатывается на стороне клиента в браузере. Разработчики гораздо чаще выбирают LESS при использовании JavaScript с таблицами стилей. Эта технология позволяет использовать фрагменты CSS-кода в файлах LESS повторно.
DOM: структура веб-страницы
Объектная модель документа (DOM, Document Object Model) — это программный интерфейс для документов HTML и XML. Он интерпретирует страницу, чтобы программы могли видоизменять структуру, стиль и содержимое документа. DOM отображает документ в виде узлов и объектов, позволяя языкам программирования подключаться к странице.
Дерево объектов HTML DOM. Источник: W3Schools
Как это работает. Будем считать, что веб-страница — это документ, который может быть представлен либо в окне браузера, либо в качестве исходного HTML-кода. DOM является представлением этого документа, поэтому его можно изменить. DOM — это объектно-ориентированное представление веб-страницы, которое можно изменить с помощью сценарного языка, например, JavaScript.
DOM должен соответствовать стандартам спецификаций W3C и WHATWG, которые исполняются в большинстве современных браузеров. Современный DOM строится с использованием нескольких API, работающих вместе. DOM определяет объекты, которые полностью описывают документ и объекты в нем.
JavaScript: оживляя веб
JavaScript (JS) — один из самых популярных сценарных языков. Он в основном известен своей применимостью как для фронтенд-, так и для бэкенд-разработки. Во фронтенде он используется для придания веб-страницам динамики.
Как работает JavaScript. JS повышает общую интерактивность сайта. Он позволяет моделировать анимированные компоненты пользовательского интерфейса, такие как: слайдеры, всплывающие окна, расширенные меню навигации по сайту и многое другое. С помощью JavaScript веб-сайт можно наделить разными функциональностями, что не достижимо только с помощью HTML и CSS. Веб-страницы, разработанные с помощью JavaScript, реагируют на действия пользователей и обновляются динамически. Благодаря JavaScript этот процесс не требует перезагрузки страниц, чтобы отобразить изменения.
Фреймворки и библиотеки JavaScript и зачем они нам нужны
Новичкам в этой области знаний может показаться, что фреймворки и библиотеки делают одно и то же, благодаря чему различные визуальные элементы взаимодействуют друг с другом. Будем честны: это не так уж далеко от истины. Однако есть несколько отличительных особенностей. Итак, давайте определим, что представляет собой JS-фреймворк, что такое JS-библиотека и для какой цели они оба служат.
Фреймворки представляют собой шаблоны для создания веб-сайта или веб-приложения. Они обеспечивают структуру (например, основу или заготовки — scaffolding), на которой можно разместить весь проект. В то время как фреймворк устанавливает шаблоны страниц, они создают структуру с определенными выделенными областями для встраивания кода фреймворка.
Итак, фреймворки JavaScript — это полные наборы инструментов для формирования и настройки веб-сайта или веб-приложения.
Библиотеки — это наборы предварительно написанных фрагментов кода, которые повторно используются для реализации основных функций JavaScript. При необходимости фрагмент кода можно легко интегрировать в существующий код проекта.
Таким образом, библиотека — это специализированный инструмент для конкретных узких потребностей, а не универсальная машина для подготовки всего проекта.
Основные фреймворки и библиотеки
Начнем с фреймворков:
Angular — это JavaScript-фреймворк от Google, совместимый с большинством распространенных редакторов кода. Angular предназначен для создания динамических одностраничных веб-приложений (SPA — Single Page Applications) и прогрессивных веб-приложений. Еще с момента выпуска первоначальной версии этот фреймворк больше всего ценился за способность преобразовывать документы на основе HTML в динамический контент. Angular является одним из самых популярных фронтенд-фреймворков. Почитать про него подробнее можно в нашей статье о плюсах и минусах разработки на Angular.
Vue.js — еще один фреймворк с открытым исходным кодом для одностраничных приложений, который требует знания HTML и CSS. Он использует модель разработки на основе компонентов и позволяет присоединять компоненты к проекту. Vue.js — это пример библиотеки, больше похожей на фреймворк, поэтому мы отнесли его к фреймворкам. Он предлагает целую кучу шаблонов и паттернов, применяемых при разработке. Vue в первую очередь известен небольшим размером документов и синтаксисом на основе HTML. Чтобы ознакомиться подробнее с преимуществами и недостатками Vue.js, переходите по ссылке.
Ember.js — это фреймворк для разработки одностраничных, мобильных и десктопных приложений. Он использует шаблон проектирования Model-View-ViewModel (MVVM). Инструменты Ember позволяют проектировать среду разработки, а его интерфейс командной строки предоставляет инструменты для автоматизации сценариев.
А теперь коротко о нескольких библиотеках:
React — библиотека с открытым исходным кодом для создания динамических пользовательских интерфейсов, разработанная Facebook. Применяется для создания веб-приложений с множественными динамическими компонентами. React основан на JavaScript и JSX и позволяет создавать HTML-элементы для многократного использования. React также включает в себя React Native, специальную кроссплатформенную среду для разработки мобильных приложений. Чтобы узнать больше о плюсах и минусах React и React Native, читайте статью на эту тему.
jQuery, в свою очередь, предназначена для управления HTML-документами. Она обладает простым API для управления событиями и разработки анимации в браузерах. Кроме того, jQuery применяется для управления объектной моделью документа (DOM), а также служит инструментом разработки плагинов. Она также поставляется с более легкой кросс-браузерной библиотекой, jQuery UI для мобильного фреймворка jQuery Mobile и для построения графического интерфейса.
D3.js — это управляемая данными библиотека для визуализации данных. С помощью привязывания временных данных к DOM и внедрения в документ изменений, управляемых данными, библиотека позволяет управлять данными и создавать динамическую визуализацию данных. Она может поддерживать и обрабатывать большие наборы данных и динамические ответы для взаимодействия и анимации. Функциональный стиль D3 допускает повторное использование кода и работает с CSV и HTML.
Как мы видим, библиотеки JavaScript обладают широкой функциональностью, обеспечивая фронтенд-разработчиков универсальными решениями. Но мы не говорим о замене фреймворков библиотеками или наоборот — всегда найдется место как для одного, так и для другого.
Если вы начинаете свой путь во фронтенде, было бы разумно начать с библиотек, так как они имеют более мягкую кривую обучения. После изучения основ некоторых из них можно переходить к фреймворкам, поскольку они требуют более глубокого понимания JS.
JavaScript для бэкенда
Говоря о JavaScript как о комплексной среде разработки, мы не можем не упомянуть его значимость для бэкенд-разработки. Поскольку JavaScript очень популярен, мир разработки программного обеспечения адаптировал JS к специфике бэкенда.
Для разработки на стороне веб-сервера с помощью JavaScript одним из самых значимых инструментов, вероятно, стал Node. js. Однако, это не фреймворк и не библиотека. Node.js — это среда выполнения, работающая на основе ядра JavaScript V8. Чтобы больше узнать о Node.js, прочитайте статью о плюсах и минусах разработки веб-приложений на Node.js. Или посмотрите видео:
Взаимодействие между фронтендом и бэкендом
Фронтенд не существует изолированно от бэкенда или сервера, который фактически предоставляет данные. Давайте посмотрим на это с точки зрения клиент-серверного взаимодействия.
Асинхронные операции
В 2010-х годах одной из основных концепций, описывающих работу интернета, был AJAX. Термин расшифровывается как «асинхронный JavaScript и XML» (от англ Asynchronous JavaScript and XML). По сути, это комплекс средств для создания веб-сайтов и веб-приложений. Давайте рассмотрим ключевые компоненты, из которых состоит AJAX.
Асинхронность — фундаментальный аспект всего инструментария. Ключевая роль подхода заключается в асинхронном обновлении веб-контента. Это означает, что браузер не перезагружает всю веб-страницу целиком, когда изменений требует небольшая часть контента на странице. Например, не нужно перезагружать страницу со всеми продуктами, чтобы применить фильтр к результатам поиска. Вам просто нужно, чтобы результаты обновились.
JavaScript — JavaScript использует процессы автоматизации сайтов, поэтому разработчикам не приходится отдельно редактировать каждый процесс, отображаемый на странице. Он используется, в частности, для создания, добавления и управления динамическим контентом веб-сайта. После обработки всех процессов HTML и CSS JavaScript запускает обновления в реальном времени, пока посетитель просматривает страницу с интерактивным контентом.
XML (или «расширяемый язык разметки», от англ Extensible Markup Language) позволяет передавать данные, размещенные на странице, в браузеры, которые ее просматривают. Это важно для определенных систем, которые зачастую не умеют взаимодействовать с данными, отформатированными другой системой. В этом случае XML позволяет избежать несовместимости при сохранении данных в текстовом формате между XML-тегами. Таким образом, XML предлагает средства хранения, перемещения и обмена данными, которые не зависят от какой-то одной программной или аппаратной системы. Поскольку XML устаревает, уступая новым форматам данных, можно запускать AJAX с JSON, который является более коротким и удобным для чтения людьми.
На сегодняшний день AJAX не так часто обсуждается во фронтенд-сообществе из-за того, что асинхронный рендеринг веб-страницы входит в стандартную комплектацию всех основных фронтенд-фреймворков, которые мы обсуждали выше.
Как работают асинхронные обновления. Предположим, пользователь нажимает на кнопку. Клиент в фоновом режиме отправляет запрос серверу в формате XML/JSON, пока пользователь продолжает просматривать страницу. Серверная сторона получает данные от JavaScript, при необходимости обращается к базе данных и обрабатывает данные. Данные в формате XML/JSON отправляются обратно на исходную страницу на стороне клиента, которая выполнила запись. Коллбэк, выполняемый JavaScript, собирает данные и обновляет компонент веб-страницы, который требует изменений.
REST и GraphQL
REST расшифровывается как «передача репрезентативного состояния» (от англ Representational State Transfer). По сути, это упрощенный архитектурный стиль, применяемый для обмена сообщениями между клиентом (фронтенд) и сервером (бэкенд). Службы RESTful и API — это веб-службы, соответствующие архитектуре REST.
Например, разработчик должен разработать веб-приложение, которое показывает всех друзей в социальных сетях в определенном порядке. Фронтенд может создавать запросы к RESTful API Facebook для просмотра списка друзей и передачи этих данных обратно. Любая служба, использующая RESTful API, похожа на этот общий процесс, разница только в том, что данные извлекаются и возвращаются. REST — это простой набор руководств и практик, устанавливающих правила взаимодействия с веб-службой.
Основная идея REST заключается в том, что серверу безразлично, что происходит с клиентом. REST-сообщения содержат всю необходимую информацию для сервера, чтобы вернуть необходимые данные и забыть об этой операции. Узнать больше о различных форматах обмена сообщениями и более старом стандарте SOAP можно в этой статье.
GraphQL представляет современную версию обмена сообщениями. Это язык запросов к базам данных из клиентских приложений. GraphQL определяет на стороне сервера, как отображать данные клиенту, и обслуживает различные типы клиентов и их потребности в данных. Чтобы узнать больше на эту тему, читайте статью о возможностях ядра GraphQL.
Больше практик, которые используются во фронтенд-разработке
Итак, мы обозначили базовые составляющие фронтенд-разработки. Однако есть еще много терминов и понятий, в которых фронтенд-разработчик должен разбираться.
Отзывчивый дизайн
Поскольку все больше людей пользуются интернетом с мобильных устройств, а не с настольных компьютеров, обязательной характеристикой веб-приложений стала отзывчивость дизайна. Отзывчивый дизайн означает, что макет приложения (включая функциональность и контент) подстраивается под размер экрана и вид устройства.
Например, когда сайт посещается с настольного компьютера с большим монитором, дизайн включает несколько колонок, тяжелую графику и пользовательский интерфейс, разработанный с учетом использования мыши и клавиатуры. На мобильных устройствах контент того же сайта отображается в одну колонку, сайт адаптирован для сенсорного взаимодействия, но содержит те же базовые данные. Чтобы узнать об отзывчивости больше, читайте эту статью.
Доступность и инклюзивность
Говоря о доступности, мы имеем в виду, что сайт должен быть доступен как можно большему количеству людей с различными видами нарушений, таких как: нарушения зрения, когнитивных функций, слуха или подвижности. Этот термин также охватывает вопросы права, стандартов соответствия, различные мобильные устройства и различные типы сетевых подключений. Подробнее на эту тему можно прочитать в статье «Как создавать интерфейсы, которые принесут пользу всем: тестирование доступности и принципы инклюзивного дизайна».
Подведем итоги
Мы признаем, что знакомство даже с основами фронтенд-технологий может удивить. Давайте подытожим, что мы узнали.
HTML (Hypertext Markup Language) — это язык разметки для создания веб-сайтов. Обычно он применяется для структурирования веб-документа.
CSS (Cascading Style Sheets) — это язык таблиц стилей, который используется для стилизации HTML-элементов на веб-странице. Область действия CSS включает в себя дизайн, макет и варианты отображения для различных устройств и размеров экрана.
DOM (Document Object Model) — это программный интерфейс для HTML- и XML-документов. Он содержит информацию о странице, чтобы программы могли изменять структуру, стиль и содержимое документа.
JavaScript — сценарный язык. Во фронтенде он используется для придания веб-страницам динамики. Кроме того, он предоставляет фулстек-технологии с библиотеками и фреймворками для написания скриптов как на стороне клиента, так и на стороне сервера.
AJAX. AJAX (Asynchronous JavaScript and XML) — это комплекс методов для создания веб-сайтов и веб-приложений с динамически загружаемым контентом без создания новой записи данных.
Конечно, есть еще много других технологий, навыков и общих знаний, которые предстоит освоить новичку. Тем не менее, мы надеемся, что эта статья проложила тропинку в лес фронтенд-разработки, чтобы путник не сбился с пути.
Приглашаем всех желающих на бесплатные открытые занятия:
«Селекторы» — на вебинаре вы научитесь, как можно обращаться к html-элементам, а также рассмотрите разные виды селекторов. Регистрация.
«Функции и условия» — на этом занятии посмотрим, как делать повторяющиеся действия удобными и переиспользуемыми, разберем ситуации, в которых это может быть полезно. Регистрация.
Технологии фронтенд-разработки, на которые вы, возможно, не обратили внимания / Хабр
«Хочешь жить — умей вертеться». Это — про работу фронтенд-программиста. Для того чтобы успешно справляться со своими обязанностями, такому специалисту приходится решать массу задач и необходимо обладать множеством способностей. Очень важно, кроме того, не забывать о главной цели, ради которой разрабатывают сайты. А именно, о том, что сайты должны помогать людям упрощать решение их повседневных задач.
В этом материале я собираюсь рассказать о различных аспектах веб-разработки, о которых стоит знать любому программисту соответствующего профиля. Я, если это возможно, буду приводить ссылки на материалы, демонстрирующие примеры применения соответствующих возможностей и рекомендации по их правильному использованию. Здесь я буду ориентироваться на реализацию тех или иных механизмов в Angular, React и Vue.
Пользовательский интерфейс
▍Макет страницы
Создание веб-приложения начинается с проектирования привлекательного и аккуратного макета, который понравится пользователям и будет способствовать тому, что они проведут на соответствующем сайте достаточно много времени.
Существует множество CSS-фреймворков. Возможно, среди них вы обнаружите именно тот, который вам идеально подойдёт. Самый знаменитый из них — это Bootstrap и, благодаря новым возможностям CSS-препроцессоров, вы можете подвергнуть стили этого фреймворка глубокой настройке. В нём вы можете найти различные компоненты и элементы управления, последовательное использование которых позволит создавать единообразно оформленные сайты.
В настоящий момент вышел альфа-релиз 5 версии Bootstrap.
Если вы предпочитаете создавать наборы стилей для своих проектов самостоятельно (компоненты, отступы, контейнеры и так далее), можете обратить внимание на CSS Flexbox, сделав этот способ гибкого размещения элементов веб-страниц основой вашего собственного CSS-фреймворка.
CSS Grid использует другой подход к организации материалов веб-страниц, размещая их в сетке.
▍Отзывчивый дизайн
Отзывчивостью называют возможность сайта адаптировать своё содержимое к устройству, на котором его просматривают. Например, на смартфоне и на ноутбуке эта статья будет выглядеть по-разному.
Отзывчивость веб-приложения помогает ему правильно отображаться на разных экранах, улучшает читабельность контента и пользовательский опыт.
На MDN можно узнать о том, что медиазапросы используются в тех случаях, когда нужно применить разные CSS-стили для разных устройств (например, для принтера или монитора), а также с учётом конкретных характеристик и параметров устройства (например, для разного разрешения экрана или для разной ширины области просмотра браузера).
CSS-медиазапросы — это мощное средство поддержки отзывчивого дизайна.
Их можно использовать вместе с уже упомянутыми CSS Flexbox или CSS Grid. Если вы предпочитаете пользоваться CSS-фреймворками, то эти фреймворки обычно уже реализуют соответствующие возможности. При таком подходе для создания отзывчивых страниц достаточно добавить к элементам соответствующие классы.
Если говорить о концепции отзывчивости в применении к изображениям, то тут можно вспомнить об атрибуте srcset
. Использование этого атрибута позволяет выводить изображения разного размера в зависимости от характеристик экрана устройства, что способствует уменьшению объёмов данных, передаваемых от сервера браузеру.
▍Однородные компоненты и элементы управления
Пользователю приятно будет работать с сайтом, компоненты и элементы управления которого оформлены однородно, в едином стиле. Такой подход к оформлению упрощает для пользователя освоение новых возможностей сайта и служит чем-то вроде визитной карточки компании.
Если вы хотите использовать для разработки своих проектов существующие фреймворки и библиотеки, Angular, React или Vue, то вот несколько примеров библиотек стилей, реализующих принципы Material Design, рассчитанных на эти инструменты:
- Angular. Библиотека Angular Material, в которой можно найти мощные компоненты и полный CDK.
- React. Принципы Material Design реализованы в веб-компонентах библиотеки Material UI.
- Vue. Здесь к нашим услугам Vuetify — реализация Material Design, предназначенная для Vue-проектов.
▍Проверка форм и обработка ошибок
Проверка данных — это важнейшая задача тех проектов, которые принимают что-то от пользователя. Кроме того, ничто не должно помешать приложению получить от пользователя корректные данные: ни сетевые проблемы, ни ошибки на сервере, ни ошибки, допущенные самим пользователем. Вот какие решения для проверки пользовательского ввода созданы для различных фреймворков:
- Angular. Так как Angular — это полноценный фреймворк, он даёт в наше распоряжение специальный API, направленный на валидацию форм.
- React. Вероятно, в React-проектах для проверки форм чаще всего используется библиотека React Hook Form.
- Vue. Название соответствующей библиотеки для Vue, vuelidate, построено на интересной игре слов.
Пользовательский опыт
▍Использование асинхронных механизмов
Загрузка данных в приложение или сохранение данных могут занимать миллисекунды, секунды или даже минуты. Именно поэтому важно сообщать пользователю о подобных операциях с помощью соответствующих индикаторов и не блокировать при этом работу пользователя с проектом.
В решении этих задач нам помогут JavaScript-механизмы, вроде промисов, и браузерные API наподобие Fetch.
▍Поддержка устаревших браузеров (полифиллы)
Мир фронтенд-разработки развивается очень быстро. То же самое можно сказать и о браузерах. Но разные люди пользуются различными браузерами и разными их версиями. Поэтому, чтобы обеспечить правильную работу своего кода на всех применяемых платформах, разработчику нужно заботиться о совместимости. Например, старая версия IE не поддерживает те же возможности JS и CSS, которые поддерживает последняя версия Google Chrome.
Для обеспечения правильной работы проекта в старых браузерах применяются полифиллы. Они достаточно хорошо описаны в этом материале: «Полифилл (polyfill, polyfiller) — это фрагмент кода (или подключаемый модуль), который предоставляет реализацию технологии, которую вы, разработчик, ожидаете найти в числе стандартных возможностей браузера».
Для того чтобы узнать, поддерживается ли некое CSS-правило, или некая JS-функция в конкретной версии браузера, загляните на сайт Can I Use.
Если говорить о решении вопросов браузерной поддержки в Angular, React и Vue, то дело обстоит так:
- Angular. В документации к Angular есть особый раздел, посвящённый браузерной поддержке.
- React. Проекты, создаваемые с помощью Create React App, поддерживают, как и ReactDOM, браузеры, начиная с IE 9. Эта поддержка основана на использовании полифиллов.
- Vue. Здесь особенности поддержки устаревших браузеров описаны в документации к CLI.
▍Локализация и интернационализация
У вашего сайта могут быть пользователи со всего мира. Учёт этого факта при создании проекта повысит удобство работы с сайтом для всех, кто решит на него заглянуть.
Локализация (l10n, localization) — это, по определению W3C, адаптация содержания продукта, программы или документа к языковым соответствиям, культурным и другим требованиям определённого целевого рынка.
Интернационализация (i18n, internationalization) — это, если опираться на материалы W3C, создание и развитие содержания продукта, программы или документации, позволяющее производить лёгкую локализацию для целевых рынков, различающихся по культуре, региону или языку.
Обе эти концепции взаимосвязаны, они могут быть реализованы разными способами. Сюда относятся, например, следующие технические приёмы:
- Использование на сайте выпадающего списка с перечнем языков, поддерживаемых проектом.
- Доступ к сведениям о географическом местоположении пользователя (с помощью браузерного API Geolocation) и адаптация веб-сайта в соответствии с полученными данными.
- Указание сведений о языке в URL. Например, это может выглядеть так:
example.com?lang=en
, или так:example.com/en
, или даже так:en.example.com
.
Теперь — об этих концепциях в Angular, React и Vue.
- Angular. Angular, повторюсь, это полноценный фреймворк, он даёт разработчику готовое решение.
- React. Задачи интернационализации проектов можно решать с помощью популярной в React-среде библиотеки react-i18next.
- Vue. В решении рассматриваемых нами задач очень хорошо показывает себя библиотека vue-i18n.
▍Доступность контента
Доступность (a11y, accessibility), это возможность сайта адаптироваться к нуждам пользователей с ограниченными возможностями.
О доступности веб-сайтов часто забывают. Для того чтобы сделать проект доступным для пользователей с ограниченными возможностями, может понадобиться пересмотреть используемый на нём подход к формированию пользовательского опыта, что иногда может потребовать глубокой переработки проекта. В любом случае, важно учитывать нужды всех пользователей, особенно принимая во внимание то, что даже небольшие изменения кода проекта способны значительно повысить удобство работы с сайтом для тех, кому тяжело пользоваться обычными сайтами.
В деле обеспечения доступности веб-проектов применимы различные технические приёмы. В их число входит следующее:
- Использование атрибута изображений
alt
. - Применение ARIA-атрибутов для оформления описаний содержимого страниц сайта.
- Поддержка возможности изменения размеров текста.
- Наличие высококонтрастного режима.
- Поддержка навигации по сайту с использованием клавиатуры, в частности, клавиши
TAB
и клавиш-стрелок.
В рамках проекта a11yproject.com проводится в жизнь идея стандартизации этих концепций. Эта инициатива достойна уважения! Основные JS-фреймворки и библиотеки тоже прилагают усилия к поддержке разработки доступных сайтов:
- Angular. В документации к этому фреймворку есть особый раздел. Разработка доступных проектов поддерживается и на уровне Angular CDK.
- React. Речь о доступности ведётся и в документации к библиотеке React. Существует и специальная библиотека — react-a11y. Но эта библиотека больше не поддерживается, поэтому пользуйтесь ей с осторожностью и учитывайте то, что её планируется заменить на библиотеку react-axe.
- Vue. Разрабатывать доступные проекты на Vue поможет плагин vue-a11y. При создании библиотеки vuetify тоже учтены соображения доступности.
▍Уведомления
Для того чтобы держать связь с посетителями вашего сайта, можно использовать браузерное API Notifications. С его помощью можно сообщать пользователям о том, что на сайте появилось что-то новое.
Загрузка и обработка данных
▍Единый источник достоверных данных
Средства для управления состоянием приложения, которые обрели популярность в 2015 году, в наши дни являются обязательным компонентом практически любого веб-проекта. Хотя в сфере управления состоянием приложений не всё однозначно, использование специализированных решений обычно является простым и эффективным методом централизованной обработки данных приложения. Все средства для управления состоянием основаны на паттерне Flux.
NgRx-реализация паттерна Flux (источник — ngrx.io)
В этих средствах используются разные названия для одних и тех же сущностей. Например, то, что в NgRx называется selectors, в Vuex называется getters. То, что в Angular получило имя reducers, в Vue называется mutations.
Вот средства для управления состоянием приложений, используемые в Angular, React и Vue:
- Angular. «Реактивная система управления состоянием для Angular»: NgRx.
- React. Тут, конечно, применяется Redux.
- Vue. Для управления состоянием Vue-приложений используется Vuex.
▍Загрузка данных
Существуют разные способы загрузки данных в приложения. Самый распространённый из них заключается в использовании HTTP-запросов, направленных к веб-API. В браузере имеется API Fetch, предназначенный для организации загрузки данных, но для основных фреймворков и библиотек разработаны собственные решения:
- Angular. В документации к Angular рекомендуется использовать rxjs и подход, основанный на паттерне Observer (тут применяются наблюдаемые объекты или объекты класса Subject).
- React. Документация React рекомендует для загрузки данных использовать API Fetch.
- Vue. Сообщество Vue предпочитает использовать библиотеку Axios. Эта реализация механизма загрузки данных основана на промисах.
В разговоре о механизмах загрузки данных в веб-приложения стоит упомянуть о GraphQL. Эта технология изменила подход, используемый при загрузке данных во фронтенд-приложениях. При её применении «Клиент определяет то, что ему нужно, используя язык запросов». Используя GraphQL мы можем получать из удалённых источников данных в точности то, что нам нужно, и ничего лишнего.
Вот реализации GraphQL для интересующих нас фронтенд-инструментов:
- Angular. apollo-angular
- React. react-apollo
- Vue.js. vue-apollo
▍Локальное хранение данных
Локальное хранение данных — это хранение данных на компьютере пользователя. Данные можно хранить с использованием куки-файлов, а так же с применением механизмов localStorage и sessionStorage
.
▍Веб-воркеры
Веб-воркеры — это технология, представленная новым браузерным API. Она даёт возможность фонового выполнения JavaScript-кода, снимая нагрузку с главного потока и не влияя на производительность кода веб-страницы.
Веб-воркеры применимы в Angular, React и Vue:
- Angular. В документации к Angular есть особый раздел, посвящённый этому вопросу.
- React. Существует особый React-хук, сведения о котором можно найти здесь.
- Vue. Во Vue-приложениях веб-воркерами удобно пользоваться с применением библиотеки vue-worker.
Сеть и производительность
▍Размер бандла приложения
Рост рынка смартфонов стал причиной революции в мире веб-разработки. Теперь при создании веб-сайтов нам нужно, в первую очередь, учитывать нужды мобильных пользователей. Чем меньший объём данных придётся загружать мобильным устройствам при работе с веб-проектами — тем лучше. В соответствии с графиком, показанным ниже, мобильное использование интернета обогнало настольное ещё в 2016 году.
Использование интернета в мире (источник — broadbandsearch.net)
Это недвусмысленно говорит нам о том, как важны в наше время размеры бандлов веб-проектов. Размер загружаемых файлов должен быть, ради экономии ресурсов мобильных пользователей, как можно меньше. К нашему счастью, разработчики основных фронтенд-инструментов и дополнений к ним учитывают это, занимаясь развитием своих проектов. Уменьшение размеров бандлов приложений, кроме того, означает их более высокую производительность.
- Angular. Бандлы Angular-приложений легко и удобно исследовать с помощью webpack-bundle-analyzer. Более того, CLI Angular даёт в наше распоряжение опцию
stats-json
, которая позволяет сформировать отчёт после сборки бандла. - React. В документации к Create React App есть страница, посвящённая анализу размеров бандлов.
- Vue. Во Vue, как и в Angular, есть опция
report
, которая позволяет формировать отчёты по бандлам.
▍Сервис-воркеры и прогрессивные веб-приложения
Сервис-воркер — это скрипт, который работает в веб-браузере и управляет кэшированием данных приложения. Это — один из механизмов, используемых при превращении обычного веб-сайта в прогрессивное веб-приложение (PWA, Progressive Web Application). С PWA можно работать как с обычным сайтом, пользуясь HTTPS, но прогрессивные веб-приложения обладают некоторыми особыми возможностями. Среди таких возможностей, например, установка таких приложений на мобильные устройства без необходимости публикации их в специализированных магазинах приложений и поддержка работы приложений без доступа к интернету.
Пользоваться сервис-воркерами можно в Angular, React и Vue:
- Angular. В Angular предусмотрены механизмы для использования сервис-воркеров.
- React. Вот руководство по разработке PWA с помощью Create React App.
- Vue. Возможность создания PWA во Vue поддерживается на уровне CLI.
▍Серверный рендеринг
Серверный рендеринг (SSR, Server-Side Rendering) — это набор технологий, который кардинальным образом меняет ситуацию в сфере разработки приложений, основанных на Angular, React и Vue. При использовании SSR HTML-код формируется на сервере и отправляется в браузер. После этого осуществляется приведение статической HTML-разметки в рабочее состояние и на клиенте оказывается полностью готовое к использованию веб-приложение. При применении серверного рендеринга преследуют несколько целей:
- Улучшение SEO сайтов.
- Ускорение вывода сайтов в браузере.
Вот SSR-решения для исследуемых нами фронтенд-инструментов:
- Angular. Тут используется Angular Universal.
- React. Для серверного рендеринга React-приложений применяется Next.js.
- Vue. Серверный рендеринг Vue-приложений выполняют с помощью фреймворка NuxtJS.
▍Генераторы статических сайтов
С ростом масштабов использования Jamstack генераторы статических сайтов (SSG, Static Site Generator) стали крайне востребованной технологией. Jamstack-приложение — это разновидность веб-приложения, материалы которого готовы к визуализации средствами браузера и, по сути, не нуждаются в веб-сервере (эти материалы можно отдавать клиентам прямо с CDN). Подробности о таких сайтах можно найти, пройдя по вышеприведённой ссылке. Перечислим здесь лишь основные сильные стороны SSG:
- Скорость: генераторы статических сайтов создают страницы сайтов во время сборки проекта, а не тогда, когда эти страницы запрашиваются клиентом.
- Безопасность: применение SSG позволяет отказаться от систем управления контентом (CMS, Content Management System), которые часто оказываются целями хакерских атак.
- Упрощение масштабирования: веб-проект при применении SSG представляет собой набор файлов, который можно передать клиенту откуда угодно. Это значительно упрощает хранение подобных файлов в CDN. В результате оказывается, что статические сайты очень хорошо масштабируются.
- Упрощение процесса разработки: SSG-проектам не нужна серверная часть и база данных. Это облегчает труд разработчиков.
Существуют SSG-решения для Angular, React и Vue:
- Angular. Scully.
- React. Gatsby (React + GraphQL), Next.js.
- Vue. Gridsome, Nuxt.
Среди других SSG-проектов можно отметить следующие: 11ty, Hugo, Jekyll.
Аналитика
▍Наблюдение за поведением пользователей и A/B-тестирование
Организация наблюдения за поведением пользователей на сайте — это необязательно, но владение подобными данными вносит значительный вклад в совершенствование веб-проектов. Существует особый класс инструментов, направленных на сбор сведений о работе пользователей с сайтом. Эти инструменты позволяют разработчикам сайтов лучше учитывать нужды пользователей и, благодаря A/B-тестированию, помогают выбирать самые адекватные альтернативы. Речь идёт о возможностях сайтов, о поддерживаемых ими шаблонах поведения пользователей, о дизайне.
Вот некоторые решения, позволяющие организовать наблюдение за поведением пользователей и A/B-тестирование:
- Google Analytics (GA). Существуют руководства по использованию GA в Angular, React и Vue.
- Kameleoon. Это — основанный на технологиях искусственного интеллекта фреймворк для персонализации и A/B-тестирования веб-проектов.
▍Анализ производительности веб-проектов
Сложно за один заход разработать высокопроизводительное веб-приложение. Но, например, приложение, которое оптимизировали с целью ускорения его загрузки, вызовет у пользователя больше положительных эмоций, чем его более медленная версия. Существуют различные проекты, анализирующие сайты и выдающие рекомендации по их совершенствованию. Например — PageSpeed Insights от Google.
Среди инструментов разработчика Google Chrome можно найти весьма ценное средство для анализа производительности сайтов — Lighthouse. Оно оценивает сайты по пяти критериям (производительность, доступность, использование «лучших практик», SEO, PWA) используя 100-балльную шкалу. После анализа формируется отчёт с рекомендациями по улучшениям сайта.
Анализ сайта с помощью Lighthouse
Ещё одно средство анализа производительности, которое можно найти среди инструментов разработчика Chrome, это панель Coverage, позволяющая искать неиспользуемый JS и CSS-код. Исключив такой код из проекта, можно уменьшить размер его бандла. А это ускорит загрузку сайта, что будет особенно заметным на мобильных устройствах.
▍SEO
SEO, поисковая оптимизация, это то, чем надо заниматься ради повышения рейтинга сайта в поисковых системах, в таких, как Google, Bing, DuckDuckGo, да и во многих других. Хорошо оптимизированный сайт становится более «заметным». На самом деле, это так важно, что в мире веб-разработки есть даже особая должность: «SEO-специалист».
Если говорить о SEO в Angular, React и Vue, то получится следующее:
- Angular. Вот интересная статья по поисковой оптимизации, которая применима к Angular- и к Angular Universal-проектам.
- React. Вот материал об общих проблемах SEO в React-проектах. Вот — статья об улучшении поисковой оптимизации React-приложений.
- Vue. Вот подробная статья о поисковой оптимизации Vue-приложений.
Итоги
Я согласен с тем, что фронтенд-разработка — это обширная и постоянно меняющаяся сфера знаний. На самом деле, если кто-то попытается стать универсальным разработчиком, всё знающим и умеющим, ему будет крайне сложно этого достичь, и на это ему потребуется очень много времени. При этом у каждого веб-проекта имеются собственные нужды и приоритеты. Именно поэтому необходимо определиться с самым важным в начале работы над проектом. Это позволит не распыляться, отобрав и изучив лишь самое нужное, и спланировать архитектуру проекта так, чтобы она соответствовала бы его целям.
Какие свежие технологии фронтенд-разработки кажутся вам самыми перспективными?
20 лучших фронтенд-технологий для использования в 2022 году
На рынке представлено множество различных инструментов и технологий, связанных с фронтенд-разработкой.
Когда мы пытаемся выбрать новые инструменты для нашего нового проекта или когда мы начинаем изучать интерфейс, очевидно, что мы хотим использовать новейшие и самые мощные технологии интерфейса для создания потрясающих и сверхбыстрых пользовательских интерфейсов.
Что такое внешние и внутренние технологии?
Для начала — помните, что существует строгое разделение между фронтендом и бэкендом. Бэкенд-технологии связаны с серверной частью приложений. В свою очередь, внешний интерфейс относится к браузеру и пользовательским интерфейсам/взаимодействиям. Давайте углубимся в технологии, используемые на стороне интерфейса.
Лучшие технологии внешнего интерфейса
Во-первых, давайте спросим, что именно означает «топ»? Для некоторых из нас это означает «самый новый».
С этим не поспоришь, но в то же время нужно иметь в виду, что это может относиться и к популярности той или иной технологии. Учитывая это, мы также должны считать CSS и HTML лучшими технологиями, верно? Дело в том, что они уже не такие молодые и новые, но все же — суперважные, и использовать их нужно ежедневно.
В этом блоге я подготовил комбинацию популярных, новых и «фундаментальных» технологий, чтобы вы могли составить представление о ситуации на рынке.
1. HTML (язык гипертекстовой разметки)
Начнем с основ. HTML — это основа фронтенд-разработки, и в ближайшее время эта ситуация не изменится. Благодаря этой технологии вы можете создать «скелет» или, другими словами, «разметку» для вашего сайта. HTML-элементы позволяют добавлять кнопки, формы, контейнеры и многое другое.
2. CSS (каскадные таблицы стилей)
Еще одна базовая технология внешнего интерфейса. CSS помогает вам создать некоторые дополнительные правила стиля для ранее созданной структуры HTML. Кроме того, правильные правила CSS делают ваше веб-приложение отзывчивым (чтобы оно хорошо выглядело на экранах любого размера и устройства) и более интерактивным с некоторыми привлекательными анимациями.
3. JavaScript
JavaScript (JS) — это язык программирования, который был, есть и будет одной из самых важных технологий внешнего интерфейса. Это позволяет вам динамически изменять содержимое вашего приложения или веб-сайта.
Это означает, что какую бы функцию вы ни рассматривали во внешнем интерфейсе приложения, вы можете реализовать ее в JavaScript. Это включает в себя, например, корзину для покупок в вашем интернет-магазине, сложные анимации, приложение, которое подсчитывает ваши налоги, веб-браузерные игры и все остальное, что вы обычно видите в Интернете — это, скорее всего, сделано с помощью технологии JavaScript.
4. React
React — это библиотека, построенная на основе JavaScript. Это означает, что он предоставляет новый синтаксис, но под капотом у него все еще есть старый добрый JavaScript. Благодаря своей декларативной и компонентной природе React делает создание веб-страниц и веб-приложений намного быстрее и проще.
Он был создан Facebook. Изначально предполагалось, что это будет их внутренний инструмент, помогающий разработчикам внешнего интерфейса создавать быстрые и легко масштабируемые интерфейсы, но компания решила опубликовать его как проект с открытым исходным кодом. На данный момент React — один из самых популярных JS-инструментов с огромным сообществом программистов.
5. Angular
Angular — это полноценный интерфейсный фреймворк на основе JavaScript, поддерживаемый Google. Модульный и компонентный подход, который он обеспечивает, собрал сильное сообщество разработчиков интерфейса по всему миру.
Некоторые разработчики говорят, что изучить Angular немного сложнее, чем React, но это определенно того стоит, так как на рынке существует высокий спрос на специалистов по этой технологии:
Спрос разработчиков Angular показывает прогнозируемый рост примерно на 31% в период с 2016 по 2026 год.
6. Vue
Vue — это среда JavaScript, отвечающая за создание пользовательских интерфейсов. Он также основан на JavaScript и предоставляет возможности декларативного и компонентного программирования (аналогично React).
Он конкурирует с Angular и React за господство на рынке. В качестве доказательства популярности Vue стоит упомянуть, что его загружают миллионы раз в неделю на npm:
Источник: npm
7. Next
Next — это инструмент, помогающий создавать сверхбыстрые веб-сайты с помощью React. Это позволяет вам использовать генерацию статического сайта и рендеринг на стороне сервера, чтобы вы могли выбрать правильный подход в зависимости от ваших потребностей. Производительность веб-страниц, основанных на платформе Next, является выдающейся благодаря множеству используемых методов оптимизации, таких как предварительный рендеринг. Кроме того, он также оптимизирован для SEO, что в наши дни является большим преимуществом.
8. TypeScript
Каждый, кто имеет некоторый опыт работы с интерфейсом, знает, что JavaScript может быть сложным, а иногда даже опасным, когда речь идет о типах. Это больше не относится к TypeScript.
Позволяет писать обычные JS с дополнительным синтаксисом для определений типов. Эта технология становится стандартом в современной фронтенд-разработке, поскольку позволяет разработчикам сэкономить время, которое они тратят на отладку проблем, связанных с типами, и делает итоговое программное обеспечение более стабильным. TypeScript выдает ошибку каждый раз, когда мы допускаем ошибку, связанную с типами переменных, поэтому мы можем внести необходимые коррективы до того, как получим отчеты об ошибках от клиентов.
9. Gatsby
Это фреймворк, который объединяет лучшие части React, GraphQL и webpack. Благодаря Gatsby вы можете создавать быстрые и отзывчивые пользовательские интерфейсы с действительно приятным «опытом разработчика». Кроме того, он предоставляет некоторые готовые функции, такие как оптимизация изображений и разделение кода. Слой данных Gatsby основан на GraphQL.
10. React Native
React Native — это фреймворк на основе React, позволяющий создавать мобильные приложения для iOS и Android. Благодаря React Native разработчики теперь могут создавать мобильные приложения, которые выглядят «нативно».
11. Flutter
Flutter — это платформа с открытым исходным кодом, созданная Google. Благодаря этому вы можете создавать нативные мобильные приложения для Android и iOS с одной кодовой базой и одним языком программирования.
12. Monorepo
Monorepo — это архитектурная концепция, на основе которой вы создаете единый репозиторий, в котором хранится код для нескольких проектов. Это создает единый источник достоверной информации и упрощает обмен компонентами и активами между проектами.
13. Микро-интерфейсы
Микро-интерфейсы — это архитектурная концепция, реализующая идею микросервисов в мире интерфейсов. При таком подходе вы можете разделить приложение на основе его функций, и каждой из них может управлять совершенно другая команда в другом репозитории кода.
14. Three.js
Three.js — это библиотека JS, используемая для создания трехмерной веб-графики и анимации. С каждым годом он становится все популярнее. На момент написания этой статьи он собрал почти 80 000 звезд на GitHub.
15. Tailwind
Tailwind — это среда CSS, позволяющая создавать стили непосредственно в HTML-разметке путем добавления соответствующих классов к определенным элементам. Такой подход позволяет очень легко и быстро создавать стили и изменять их, когда это необходимо.
16. Remix
Remix — это платформа React, позволяющая использовать рендеринг на стороне сервера. Он извлекает данные из серверной части и передает HTML непосредственно пользователю. Кроме того, он поставляется с некоторыми дополнительными встроенными функциями, такими как вложенные страницы, границы ошибок и обработчики состояния загрузки.
17. Headless CMS
Решения CMS (системы управления контентом) становятся все более популярными в настоящее время. По сути, это репозитории контента, доступные с помощью RESTful API или запросов GraphQL. Полезно, особенно для статических сайтов и блогов. На рынке существует множество безголовых CMS. Некоторые из них — GraphCMS, Contentful, Contentstack и Prepr.
18. GraphQL
GraphQL — это язык запросов для API. Он дает вам именно то, что вам нужно от сервера без каких-либо ненужных данных. Благодаря своей производительности и потрясающим инструментам для разработчиков, GraphQL стал популярной технологией в современном мире веб-разработки.
19. PWA
PWA расшифровывается как Progressive Web App. Это приложение, основанное на веб-технологиях, таких как HTML, CSS и JavaScript, но с ощущением и функциональностью, аналогичными обычным нативным приложениям. Когда вы открываете сайт, который является PWA, ваш смартфон предложит вам установить его на свой экран. PWA с каждым годом становятся все популярнее.
20. Система дизайна
Система дизайна — это набор стандартов, созданных для управления дизайном с заранее определенными и многократно используемыми компонентами. Например — давайте представим, что вы решили использовать Material-UI (MUI) в качестве дизайн-системы для своего продукта — если вам нужно реализовать новый компонент, есть большая вероятность, что вы найдете его в документации MUI.
Примерами популярных систем дизайна являются Chakra.UI, Ant Design и MUI.
Факторы, которые следует учитывать при выборе правильной технологии внешнего интерфейса для вашего приложения
При выборе правильной технологии внешнего интерфейса нет простого ответа. Однако есть некоторые вещи, о которых вы можете подумать, прежде чем принимать окончательное решение. В приведенном ниже списке показаны некоторые факторы, которые вы можете принять во внимание, чтобы прояснить некоторые сомнения:
- Размер проекта.
- Опыт команды в конкретных технологиях.
- Популярность инструмента/фреймворка (с большой популярностью обычно приходит большое сообщество, которое может быть полезным).
- Состоит ли дизайн из нескольких страниц с похожими компонентами? Может стоит воспользоваться дизайн-системой?
- Много ли элементов с динамическими значениями, как в какой-то приборной панели? React (или другой JS-фреймворк) может быть полезен.
- Масштабируемость.
- Требуется ли проекту SSG или SSR? Next.js поддерживает оба.
- Сколько команд работает/будет работать над проектом? Микрофронтенды могут решить некоторые проблемы в больших командах.
- Обеспечивает ли конкретная технология то, что нужно вашему проекту?
Заключение
В наших головах всегда есть небольшое желание использовать новейшие и трендовые технологии. Правда в том, что в большинстве случаев они становятся популярными по какой-то причине и приносят новые/более эффективные решения для решения проблем. В то же время — нужно помнить, что это не всегда лучшее решение для реализации того, что сейчас наиболее популярно.
Наблюдайте за рынком, экспериментируйте и пробуйте новое, но помните, что вы всегда должны принимать решение, исходя из потребностей и проблем, которые вам предстоит решить в вашем проекте. Подумайте о требованиях, а затем проанализируйте доступные технологии и то, как они могут вам помочь.
11 лучших передовых технологий для использования в 2021 году
Передовые технологии определяют успех практически любой программной инфраструктуры. Хотя серверные технологии в первую очередь позволяют программным приложениям работать без сбоев, пользователи вряд ли будут дважды смотреть на какой-либо программный продукт, если у них не будет визуально привлекательного графического интерфейса, привлекающего их внимание.
Несмотря на то, что традиционное общество часто заметает важность творческой работы под ковер, стало совершенно ясно, насколько мир зависит от художественного мастерства.
Конечно, слияние интересов искусства с технологическими новшествами современного мира приводит к тому, что оба предприятия получают более широкое распространение.
Например, в течение следующего десятилетия, особенно в период с 2019 по 2029 год, прогнозируемый темп роста занятости веб-разработчиков и цифровых дизайнеров составляет 8% .
На первый взгляд это число может показаться не ошеломляющим, но оно в два раза превышает средний показатель роста для всех профессий.
Помня об этом, вам следует обратить пристальное внимание на передовые технологии, которые будут способствовать успешной разработке программного обеспечения для вашего будущего проекта. Здесь вы найдете 11 интерфейсных технологий, на которые стоит обратить внимание:
- JavaScript
- HTML
- УСБ
- Реагировать
- Реагировать на родной
- Угловой
- Флаттер
- НПМ
- Vue.js
- Ионный
- BootStrap
Оставайтесь с нами, чтобы узнать больше о каждой из этих передовых технологий и о том, как они могут помочь вам в достижении ваших бизнес-целей!
Что такое Front-End разработка?
Front-end разработка включает часть веб-разработки, которая видна конечному пользователю. Поэтому разработчики интерфейсов несут большую ответственность за создание пользовательских интерфейсов (UI), с которыми могут взаимодействовать пользователи.
По сути, фронтенд-разработка включает в себя преобразование бэкэнд-кода во что-то, что может быть легко доступно для пользователя с помощью графического представления.
В то время как внутренняя разработка в основном работает за кулисами с серверами, базами данных и другими внутренними структурами, внешняя разработка гарантирует, что вы сможете эффективно использовать приложение или веб-сайт.
Без интерфейсной веб-разработки вы могли бы прямо сейчас смотреть на неприглядный беспорядок кода. Вместо этого у вас есть структурированный текст с соответствующими заголовками и эстетичной синей темой, подтверждающей принадлежность Trio.
Успешная разработка интерфейса требует ряда важных навыков. Mobile-first и адаптивный веб-дизайн (RWD), например, — это два подхода к дизайну, которые направлены на то, чтобы элементы дизайна соответствовали разным размерам экрана.
Это важно учитывать, если вы хотите, чтобы веб-приложения или веб-сайты были доступны как на мобильных устройствах, так и через веб-браузеры.
В общем, доступность, скорость и производительность являются важнейшими задачами, на достижение которых направлена фронтенд-разработка.
Веб-разработка, в частности, требует определенного сочетания основных инструментов для создания внешнего интерфейса. А именно, HTML, CSS и JavaScript составляют основу интерфейсной веб-разработки .
Наряду с несколькими другими интерфейсными технологиями вы узнаете больше об этих основных инструментах чуть ниже.
11 лучших интерфейсных технологий для использования в 2022 году
Откровенно говоря, существуют сотни интерфейсных технологий, которые вы можете использовать в своем следующем программном проекте. И многие из них прекрасно справятся с имеющейся у вас рабочей нагрузкой. Но ни одна из них не выделяется так сильно, как следующие 11 интерфейсных технологий:
1.
JavaScript
JavaScript существует уже последнюю четверть века. Этот язык программирования известен тем, что произвел революцию в Интернете благодаря своим динамическим возможностям.
Динамический описывает содержимое, которое может быть изменено, тогда как статическое содержимое является неизменным.
До появления JavaScript сеть в целом была статичной по своей природе. Веб-страница была просто блоком текста.
Затем появился JavaScript, обеспечивающий интерактивность, такую как прокрутка, нажатие и многое другое.
В настоящее время JavaScript используется на большинстве веб-сайтов и является основой для большинства интерфейсных сред , многие из которых будут кратко описаны сегодня.
2. HTML
Язык гипертекстовой разметки (HTML), наряду с JavaScript и CSS, является основополагающей веб-технологией.
Его основная цель — структурировать текст, который возникает при форматировании документов для отображения на веб-странице.
HTML5, выпущенный в 2014 году, позволил HTML также включать мультимедийные элементы, такие как видео и аудио. Более или менее эта разработка устранила необходимость в Adobe Flash Player и подобных плагинах.
В каждую веб-страницу встроен HTML, поскольку эта разметка необходима для указания веб-браузеру, как отображать текст, изображения и другое содержимое на веб-странице.
3. CSS
Каскадные таблицы стилей (CSS) определяют стиль и представление документа. Например, любой HTML-документ использует CSS для управления визуальными деталями веб-страницы.
Макеты, цвета и шрифты находятся в ведении CSS. и CSS3 — последняя редакция CSS от 2001 года — модульные спецификации CSS, обеспечивающие разработчикам большую гибкость в целом.
4. React
React или ReactJS — это интерфейсная библиотека JavaScript для создания пользовательских интерфейсов и компонентов пользовательского интерфейса. React был разработан и поддерживается небольшой командой разработчиков Facebook.
Сегодня React — одна из самых популярных библиотек JavaScript для веб-разработки. Многие крупные мировые компании используют React, включая Facebook и Instagram.
React использует классическую архитектуру модель-представление-контроллер (MVC). В шаблоне MVC существует разделение задач между уровнем представления и уровнем доступа к данным.
Уровень представления представляет представление, а уровень доступа к данным представляет модель. Наконец, контроллер управляет взаимодействиями с пользователем, отправляя пользовательский ввод в модель и представление, чтобы они могли вносить соответствующие обновления.
MVC — широко распространенный архитектурный шаблон для пользовательских интерфейсов. Но одной из наиболее уникальных особенностей React является его виртуальный DOM.
Объектные модели документов (DOM) — это интерфейсы прикладного программирования (API), определяющие способ доступа к документу и управления им. DOM работает с документами XML и HTML, рассматривая их как древовидную структуру, где каждый элемент HTML работает как объект.
Манипуляции с DOM могут утомлять систему, когда речь идет о синхронизации изменений во всей программе. Виртуальные DOM — это абстракция реальной вещи, которую разработчики сохраняют в памяти для более эффективного манипулирования перед синхронизацией.
5. React Native
React Native — это фреймворк для мобильных приложений, также являющийся детищем Facebook. С помощью React Native разработчики мобильных приложений могут создавать приложения для Android, iOS и множества других платформ, от macOS до AndroidTV.
Это означает, что React Native является гибридной платформой для разработки приложений. Безусловно, основная цель React Native — включить собственные функции на нескольких платформах.
Большинство интерфейсных технологий и инструментов разработки в целом с трудом поддерживают высокую производительность, когда на сцену выходит кроссплатформенная совместимость.
Но само название React Native предполагает, что Марк Цукерберг — печально известный создатель Facebook — очень уверен в потенциале React Native.
Другими примечательными особенностями React Native являются повторное использование кода и быстрое обновление.
Конечно, возможность повторного использования кода относится к способности React Native совместно использовать код между несколькими платформами.
Быстрое обновление позволяет разработчикам React Native видеть изменения сразу же после их внедрения.
6. Угловой
Angular — это платформа веб-приложений TypeScript и надежный компонент технического стека MEAN — или MongoDB, Express.js, Angular и Node.js.
TypeScript — это надмножество JavaScript, которое расширяет статическую типизацию, обеспечивая более надежную безопасность типов для быстрого обнаружения ошибок.
Вместо MVC в Angular используется шаблон проектирования модель-представление-представление (MVVM). Шаблон MVVM также отличает графический пользовательский интерфейс от бизнес-логики.
Но в отсутствие контроллера модель представления уведомляет представление о любых изменениях состояния, получая уведомления от модели.
Помимо своей архитектуры, Angular является довольно универсальным фреймворком. Вы можете создавать прогрессивные веб-приложения или использовать платформу с такими технологиями, как Cordova, Ionic или NativeScripy, для создания практически нативных мобильных приложений.
Вы также можете использовать Angular для создания настольных приложений на платформах Mac, Windows и Linux.
Еще одной исключительной особенностью платформы являются шаблоны Angular, которые разработчики могут использовать для быстрого создания представлений пользовательского интерфейса, помогая команде разработчиков программного обеспечения стать более продуктивной.
7. Flutter
Flutter — это пакет разработки программного обеспечения пользовательского интерфейса (SDK), любезно предоставленный Google. Наряду с Flutter разработчики используют быстрый язык программирования Dart и изобретательный графический движок Skia для создания кроссплатформенных приложений .
Тесты показывают, что Dart даже быстрее, чем JavaScript, а Skia работает с API-интерфейсами различных платформ разработки для абстрагирования графики для конкретных платформ и визуализации собственных пользовательских интерфейсов.
Естественно, эти атрибуты Flutter резко сокращают время разработки кода. Более того, готовые к использованию виджеты Flutter легко настраиваются и помогают сэкономить время.
8. npm
Node Package Manager, как правило, стилизованный под npm, — менеджер пакетов для JavaScript.
npm — менеджер пакетов по умолчанию для Node.js. Node.js — это среда выполнения JavaScript, позволяющая разработчикам использовать JavaScript для внутренней разработки.
Большинство языков программирования имеют связанные менеджеры пакетов. Но учтите, что JavaScript используется примерно на каждом веб-сайте во всемирной паутине, и неудивительно, что npm является крупнейшим реестром программного обеспечения в мире .
Имея более 350 000 пакетов, npm представляет собой типичную интерфейсную технологию, с помощью которой разработчики JavaScript могут делиться своим кодом и повторно использовать код других разработчиков.
9. Vue.js
Vue.js — это прогрессивная платформа JavaScript для MVVM. Будучи прогрессивным, Vue.js поощряет постепенное внедрение .
Другими словами, Vue.js начинает разработчиков только с уровня представления. Любая другая структура программного обеспечения должна быть добавлена с вспомогательными библиотеками и пакетами.
Дизайнер Vue.js Эван Вы создали проект после использования AngularJS. Он решил извлечь лучшие функции из Angular и создать что-то легкое.
Разработчики любят Vue.js, потому что с его помощью легко выполнять небольшие проекты и так же легко масштабировать его.
10. Ionic
Ionic — это SDK с открытым исходным кодом для разработки гибридных приложений. Благодаря Ionic единая кодовая база JavaScript может стать вашим шлюзом к производительным нативным и веб-приложениям.
Разработчики могут использовать преимущества различных интерфейсных технологий, таких как Angular, React или Vue.js, с Ionic во главе для создания пользовательских интерфейсов.
Плагины Cordova и Capacitor играют равную роль в ловкости Ionic. Они содержат встроенные функции операционной системы, такие как GPS, камера, фонарик и т. д.
Разработка приложений в Cordova или Capacitor объединяет простое создание пользовательского интерфейса с обширными собственными инструментами.
11. BootStrap
Bootstrap — это CSS-фреймворк с шаблонами дизайна для типографики, форм, кнопок, навигации и подобных интерфейсных модулей.
Вы можете думать о Bootstrap как о наборе инструментов для простого и быстрого создания внешнего интерфейса адаптивных сайтов. Темы и значки поставляются с готовыми компонентами Bootstrap.
Чтобы добавить, Bootstrap ориентирован на мобильные устройства, а это означает, что дизайн предназначен для мобильных устройств, которые имеют гораздо больше ограничений, чем веб-разработка. Таким образом, разработчики могут расширять дизайн, чтобы он подходил для Интернета, а не наоборот.
Заключение
Front-end разработка — неотъемлемый компонент создания почти любого программного обеспечения. Независимо от того, знаете ли вы все тонкости разработки программного обеспечения, интерфейсные технологии будут играть большую роль в продукте, который вы в конечном итоге выпустите для нетерпеливой клиентской базы.
Использование правильных интерфейсных технологий определит ваше положение на рынке. Использование JavaScript, CSS и HTML является обязательным условием для веб-разработки переднего плана, но какие еще инструменты помогут вашему проекту достичь нужного результата?
Внимательно изучите передовые технологии, описанные в этой статье, и сделайте правильный выбор. Помните, что все эти интерфейсные технологии зависят от квалифицированных разработчиков интерфейсов для эффективного использования.
Trio предлагает вам опытных и хорошо обученных разработчиков интерфейсов.