Около 15 лет назад я работал в компании, где мы создавали приложения для турагентов, работников аэропортов и авиакомпаний. Мы также создали собственную структуру для компонентов пользовательского интерфейса и возможностей одностраничных приложений. У нас были компоненты для всего: полей, кнопок, вкладок, диапазонов, таблиц данных, меню, средств выбора даты, выбора и множественного выбора. У нас даже был компонент div. Кстати, наш компонент div был великолепен, он позволял нам закруглять углы во всех браузерах, что, хотите верьте, хотите нет, в то время было непростой задачей.

Наша работа проходила в тот момент нашей истории, когда JS, Ajax и динамический HTML рассматривались как революция, которая привела нас в будущее. Внезапно мы смогли динамически обновлять страницу, получать данные с сервера и избегать необходимости переходить на другие страницы, что считалось медленным и вызывало мигание большого белого прямоугольника на экране между двумя страницами. Была фраза, ставшая популярной благодаря Джеффу Этвуду (основателю StackOverflow), которая гласила: «Любое приложение, которое можно написать на JavaScript, в конечном итоге будет написано на JavaScript», — Джефф Этвуд.

Для нас в то время это было похоже на смелость пойти и создать эти приложения. Это было похоже на полное одобрение делать все с помощью JS. Итак, мы сделали все с помощью JS и не тратили время на исследование других способов ведения дел. На самом деле у нас не было стимула как следует изучить возможности HTML и CSS. На самом деле мы не воспринимали Интернет как развивающуюся платформу приложений в целом. В основном мы рассматривали это как проблему, над которой нам нужно поработать, особенно когда дело касалось поддержки браузеров. Мы могли бы просто добавить больше JS, чтобы добиться цели. Помогло бы мне время, потраченное на то, чтобы узнать больше о том, как работает Интернет и что доступно на платформе? Конечно, я мог бы, наверное, убрать кучу кода, который на самом деле не нужен. Но в то время, возможно, не так уж и много. Видите ли, тогда различия между браузерами были довольно существенными. Это было время, когда Internet Explorer все еще был доминирующим браузером, а Firefox был вторым, но начал терять долю рынка из-за быстрого роста популярности Chrome. Хотя Chrome и Firefox довольно хорошо согласовали веб-стандарты, среды, в которых работали наши приложения, означали, что нам пришлось поддерживать IE6 в течение длительного времени. Даже когда нам разрешили поддерживать IE8, нам все равно приходилось иметь дело с множеством различий между браузерами. Мало того, в сети того времени просто не было такого количества возможностей, встроенных прямо в платформу.

Перенесемся в сегодняшний день. Ситуация сильно изменилась. У нас не только больше таких возможностей, чем когда-либо прежде, но и скорость, с которой они становятся доступными, также возросла. Тогда позвольте мне еще раз задать вопрос: поможет ли вам сегодня время, потраченное на то, чтобы узнать больше о том, как работает Интернет и что доступно на платформе? Абсолютно да. Научившись понимать и использовать веб-платформу сегодня, вы получите огромное преимущество перед другими разработчиками. Независимо от того, работаете ли вы над производительностью, доступностью, оперативностью — всем этим вместе или просто выпускаете функции пользовательского интерфейса, если вы хотите делать это как ответственный инженер, знание доступных вам инструментов поможет вам быстрее и лучше достичь своих целей. Некоторые вещи, для которых вам больше не понадобится библиотека Зная, что поддерживают браузеры сегодня, возникает вопрос: от чего мы можем отказаться? Нужен ли нам компонент div для закругления углов в 2025 году? Конечно, нет. На данный момент свойство border-radius поддерживается всеми используемыми в настоящее время браузерами уже более 15 лет. Скоро появится угловая форма, которая сделает углы еще более изысканными. Давайте посмотрим на относительно недавние функции, которые теперь доступны во всех основных браузерах и которые вы можете использовать для замены существующих зависимостей в вашей кодовой базе. Дело не в том, чтобы немедленно отказаться от всех ваших любимых библиотек и переписать кодовую базу. Что касается всего остального, вам нужно сначала принять во внимание поддержку браузера и принять решение на основе других факторов, специфичных для вашего проекта. Следующие функции реализованы в трех основных браузерных движках (Chromium, WebKit и Gecko), но у вас могут быть разные требования к поддержке браузера, из-за которых вы не сможете использовать их сразу. Однако сейчас самое время узнать об этих функциях и, возможно, запланировать их использование в какой-то момент. Поповеры и диалоги API Popover, HTML-элемент

и псевдоэлемент ::backdrop могут помочь вам избавиться от зависимостей от всплывающих окон.всплывающие подсказки и библиотеки диалогов, такие как Floating UI, Tippy.js, Tether или React Tooltip. Они автоматически обеспечивают доступность и управление фокусом, легко настраиваются с помощью CSS и легко анимируются. Аккордеоны Элемент
, его атрибут name для взаимоисключающих элементов и псевдоэлемент ::details-content устраняют необходимость в компонентах-аккордеоне, таких как Bootstrap Accordion или компонент React Accordion. Простое использование платформы означает, что людям, знающим HTML/CSS, будет проще понять ваш код без необходимости сначала учиться использовать конкретную библиотеку. Это также означает, что вы невосприимчивы к критическим изменениям в библиотеке или закрытию этой библиотеки. И, конечно же, это означает меньше кода для загрузки и запуска. Взаимоисключающие элементы сведений не нуждаются в JS для открытия, закрытия или анимации. CSS-синтаксис Каскадные слои для более организованной кодовой базы CSS, вложение CSS для более компактного CSS, новые цветовые функции, относительные цвета и смешивание цветов, новые математические функции, такие как abs(), Sign(), pow() и другие, помогают уменьшить зависимость от препроцессоров CSS, служебных библиотек, таких как Bootstrap и Tailwind, или даже библиотек времени выполнения CSS-in-JS. Меняющий правила игры :has(), одна из наиболее востребованных функций в течение долгого времени, устраняет необходимость в более сложных решениях на основе JS. JS-утилиты Современные методы Array, такие как findLast() или at(), а также методы Set, такие какразность(), пересечение(), объединение() и другие, могут уменьшить зависимости от таких библиотек, как Lodash. Контейнерные запросы Контейнерные запросы заставляют компоненты пользовательского интерфейса реагировать на другие вещи, помимо размера области просмотра, и, следовательно, делают их более пригодными для повторного использования в разных контекстах. Для этого больше не нужно использовать библиотеку пользовательского интерфейса с большим количеством JS, а также нет необходимости использовать полифил. Макет Grid, subgrid, flexbox или multi-column существуют уже давно, но, глядя на результаты опросов о состоянии CSS, становится ясно, что разработчики склонны очень осторожно относиться к внедрению новых вещей и очень долго ждут, прежде чем они это сделают. Эти функции долгое время были базовыми, и вы могли использовать их, чтобы избавиться от зависимостей от таких вещей, как система сеток Bootstrap, утилиты flexbox Foundation Framework, фиксированная сетка Bulma, сетка Materialize или столбцы Tailwind. Я не говорю, что вам следует отказаться от своей структуры. Ваша команда приняла его не просто так, и его удаление может оказаться большим проектом. Но рассмотрение того, что может предложить веб-платформа без сторонней оболочки, дает множество преимуществ. Вещи, которые вам могут больше не понадобиться в ближайшем будущем Теперь давайте кратко рассмотрим некоторые вещи, для которых вам не понадобится библиотека в ближайшем будущем. То есть, приведенные ниже вещи не совсем готовы к массовому внедрению, но знание о них и планирование потенциального дальнейшего использования могут быть полезны. Расположение якоря Позиционирование привязки CSS управляет расположением всплывающих окон и всплывающих подсказок относительно других элементов и заботится о том, чтобы они оставались в поле зрения даже при перемещении, прокрутке или изменении размера страницы. Это отличное дополнение к упомянутому ранее API Popover, которое еще больше упростит переход от более требовательных к производительности решений JS. API навигации API навигации можно использовать для управления навигацией в одностраничных приложениях и может стать отличным дополнением или даже заменой задач маршрутизации React Router, Next.js или Angular. Просмотр API переходов API View Transitions может анимировать различные состояния страницы. В одностраничном приложении это упрощает плавные переходы между состояниями и помогает избавиться от библиотек анимации, таких как Anime.js, GSAP или Motion.dev. Более того, API можно использовать и с многостраничными приложениями. Помните, ранее я говорил, что причина, по которой мы создавали одностраничные приложения в компании, где я работал 15 лет назад, заключалась в том, чтобы избежать белой вспышки при перезагрузке страницы при навигации? Если бы этот API был доступен в то время, мы смогли бы добиться красивых эффектов перехода страниц без одностраничной структуры и без огромной начальной загрузки всего приложения. Анимация, управляемая прокруткой Анимация, управляемая прокруткой, запускается в зависимости от позиции прокрутки пользователя, а не с течением времени, что делает ее отличным решением для рассказывания историй и экскурсий по продукту. Некоторые люди переборщили с этим, но при правильном использовании это может быть очень эффективным инструментом проектирования и помочь избавиться от таких библиотек, как: ScrollReveal, GSAP Scroll илиWOW.js. Настраиваемые выборы Настраиваемый элемент выбора — это обычный элемент

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free