Близько 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), але у вас можуть бути інші вимоги до підтримки браузера, через які ви не можете використовувати їх одразу. Зараз все ще гарний час, щоб дізнатися про ці функції та, можливо, запланувати їх використання в якийсь момент. Спливаючі вікна та діалоги Popover API, елемент 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, такі як difference(), intersection(), union() та інші, можуть зменшити залежність від бібліотек, таких як Lodash. Запити контейнерів Запити-контейнери змушують компоненти інтерфейсу користувача реагувати на речі, відмінні від розміру вікна перегляду, і тому роблять їх більш придатними для повторного використання в різних контекстах. Для цього більше не потрібно використовувати бібліотеку користувальницького інтерфейсу, наповнену JS, і також не потрібно використовувати полізаповнення. Макет Grid, subgrid, flexbox або multi-column існують уже давно, але, дивлячись на результати опитувань стану CSS, стає зрозуміло, що розробники, як правило, дуже обережні з впровадженням нових речей і чекають дуже довго, перш ніж це зробити. Ці функції були базовими протягом тривалого часу, і ви можете використовувати їх, щоб позбутися залежності від таких речей, як система сітки Bootstrap, утиліти flexbox Foundation Framework, фіксована сітка Bulma, сітка Materialize або стовпці Tailwind. Я не кажу, що ви повинні відкинути свою структуру. Ваша команда прийняла це недаремно, і його видалення може бути великим проектом. Але дивлячись на те, що може запропонувати веб-платформа без сторонньої оболонки, вона має багато переваг. Речі, які вам можуть більше не знадобитися в найближчому майбутньому А тепер давайте швидко розглянемо деякі речі, для яких бібліотека вам не знадобиться найближчим часом. Тобто наведені нижче речі ще не зовсім готові для масового впровадження, але знання про них і планування можливого подальшого використання може бути корисним. Якірне позиціонування Позиціонування прив’язки CSS обробляє позиціонування спливаючих вікон і підказок щодо інших елементів і піклується про те, щоб вони залишалися в полі зору, навіть під час переміщення, прокручування або зміни розміру сторінки. Це чудове доповнення до Popover API, згаданого раніше, яке спростить перехід від більш продуктивних рішень JS. API навігації Навігаційний API можна використовувати для керування навігацією в односторінкових програмах і може бути чудовим доповненням або навіть заміною завдань маршрутизації React Router, Next.js або Angular. View Transitions API API перегляду переходів може анімувати між різними станами сторінки. У односторінковій програмі це дуже полегшує плавні переходи між станами та може допомогти вам позбутися бібліотек анімації, таких як 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