Frontend.code - JS Разработка
218 subscribers
81 photos
1 video
79 links
Надежный источник знаний и вдохновения в мире frontend разработки.

https://t.me/frontenddotcode?boost

Практические примеры кода, подробные туториалы, советы от опытного разработчика, обзоры последних инструментов и технологий
Download Telegram
Новый VITE 4.3

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

На изображениях сравнивается новая и старая версия

HMR - Hot Module Replacement, Замена модулей в приложении без перезагрузки страницы

SWC - компилятор на Rust (альтернатива `babel`)


Ссылка на релиз

#vite #release #news #js
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Reduce

Метод .reduce() применяется для преобразования массива в новое значение на основе функции, переданной в качестве аргумента.

Часто используется при работе с массивами

#junior #base #function
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Box-shadow, анимация и производительность

Анимация тени на элементах не лучший вариант. Такая анимация может повлиять на производительность. Автор рассматривает различные методы оптимизации и ускорения анимации.

Ссылка на статью

Если кратко, идеальный вариант - это отсутствие анимации тени 😄 Но даже если она вам требуется, анимируйте не сам box-shadow, а псевдоэлемент дающий тень. Так перерисовок будет меньше.

#html #css #animation
👍6
Рефакторинг кода

Хороший код не нуждается в комментариях. Вернее нуждаться могут не только лишь все, мало кто может это сделать.

Ссылка на статью

Вот выжимка, это база.

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

#base #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
ES14

В июне ожидается выпуск нового стандарта. Изменений немного:
- 2 новых типа данных (полностью неизменяемый объект и массив)
- новые методы для массивов
- поиск элемента с конца: findLastIndex и findLast
- Символы в качестве ключей для WeakMap.
- Hashbang

Если раньше для сортировки массива нам требовалось его скопировать, чтобы исходник не менялся (так как sort изменяет массив напрямую), а потом сортировать, то теперь мы можем использовать метод toSorted для возвращения отсортированного массива

[...arr].sort() => arr.toSorted()
Результат один, а глазу приятней.

Причем эти методы по большей части добавлены в связи с новыми типами данных. Старые методы нельзя применить к новым типам, они ж изменяют исходный массив.


Полный список нововведений

#news #es14 #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌1
Тенденции js в 2023

TypeScript все больше. Svelte врывается в гонку за реактивность и имеет все шансы стать четвертым товарищем среди React, Angular и Vue.

Ссылка на статью

#news #js #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Object.assign

Метод Object.assign() используется для копирования свойств из одного или нескольких исходных объектов в нужный объект.

Часто используется.

Если свойства совпадают, значение свойства будет перезаписано значением из последнего объекта.

#junior #base #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
CSS индикаторы загрузки

Наткнулись на статью, где автор отрисовал сотню индикаторов загрузки.

Берем и пользуемся. Даже если не потребуется сам индикатор, можно глянуть реализацию анимаций, их тут уйма

Ссылка на статью

#css #bundle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Как вручную отрисовать окно подтверждения во Vue3?

Написали для вас статью, в которой вы узнаете как вручную отрисовать и поместить компонент диалогового окна в дом дерево.

Если используете react или angular тоже почитайте, реализация на этих фреймворках будет плюс-минус такая же.

#vue #js #promise #compositionAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
console.log

С помощью console.log отдебажено миллиард миллионов приложений. Настолько простой и быстрый способ еще поискать надо.

Но помимо главного метода логирования, есть, например, трассировка (составление мест вызова) или замер времени выполнения кода.

Эти и другие методы console. В конце автор расписал полезные хромовские утилиты консоли
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Page visibility API

В js есть апи для определения видимости всей страницы. Видит пользователь страницу в данный момент или нет? (окно браузера свернули или переключили вкладку)

У этих апи есть 2 свойства состояния и 1 событие

Свойства:
- document.hidden (только для чтения) - возвращает булевское значение видимости текущей страницы
- document.visibilityState (только для чтения) - возвращает 1 из 4х значений состояния видимости:
1️⃣ visible(страница не свернута и видна пользователю);
2️⃣ hidden (страница скрыта или неактивна);
3️⃣ prerender(страница в процессе отрисовки);
4️⃣ unloaded (страница выгружается, данное значение не везде поддерживается)


Событие:
- visibilitychange - срабатывает, когда изменяется состояние видимости

Для чего можно применять:

- Для оптимизации
- Для кеширования
- Для сохранения результатов (например, состояние игры или заполненной формы)

Полная статья на английском языке

#js #core
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Плохие практики в js

Выше уже был пост про подобные правила, что лишний раз подтверждает эту проблему.

Если резюмировать (хорошие практики):
- Используй let, const вместо устаревшего var (благо линтеры в IDE сами тебе подсказывают)
- Не комментарий должен объяснять код, а сам код (лучше упростить, чем писать полотна с комментариями, в придачу они очень быстро становятся неактуальными или удаляются)
- Используй строгое === вместо обычного == (Обычное сравнение надо использовать с осторожностью и понимать, зачем ты это делаешь)
- Используй необязательный оператор ? (если есть вероятность отсутствия свойства в объекте), дабы обрабатывать не ошибку, а undefined
- Не используй магические значения (числа и строки, которые появляются из неоткуда, например, в сравнениях). Создавай для этого константы с понятным названием
- Обрабатывай каждый запрос к api через try/catch, даже если это микро-макро-несерьезный запрос и ты уверен что там все точно будет в порядке.

Ссылка на статью на английском

#js #base
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Новое в CSS 2023

11 мая гугл выпустил статью о нововведениях в css.

В статье есть минимальные версии браузеров с поддержкой того или иного нововведения и примеры реализации. Естественно, часть еще совсем сырая и даже нет поддержки у некоторых браузеров и должно пройти какое-то время на обновление у пользователей. Но накручиваем на ус и расширяем свои чакры.

Из интересного:
- @ container element - новый медиа запрос. Очень крупное нововведение. Позволяет применять стили относительно размеров РОДИТЕЛЬСКОГО элемента. И неограниченно по вложенности. Допустим, мы хотим поменять стили у элементов, у которых родитель имеет минимальную ширину в 200px или родитель родителя имеет конкретный размер. Теперь адаптивка заиграет новыми красками, подробнее тут

- @ container style - аналогичен первому пункту, только проверяет определенные стили, а не размеры, данный пункт еще очень сырой, в сафари и лисе еще даже не ввели поддержку.

- :has() - новый селектор. Позволяет определить содержит ли родительский элемент дочерние элементы с определенными параметрами, которые перечисляются в скобках. Подробнее

- initial-letter позволяет определить место, занимаемое первой буквой в параграфе (буквицы). Через свойство задается размер и смещение. Выглядит красиво.

- Новые динамические единицы размеров: svh и svw, lvh и lvw, dvh и dvw. В статье приведены хорошие примеры.

- color-mix - функция смешивания цветов. Теперь можно просто взять цвет и добавить к нему прозрачности (например, через переменную). Те, кто работал с палитрами в проекте оценят всю прелесть нововведения)

- ВЛОЖЕННОСТЬ - пока все очень сыро и плохая поддержка, но надобность в препроцессорах может очень сильно уменьшиться. Это, по сути, базовая вещь для чего подобные инструменты используются. Ждем.

Там еще много чего, например, scope, cos, sin и т.д.

Пост на chrome.com на английском

#css #news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Vue 3.3

Эван Ю 11 мая опубликовал у себя в блоге анонс новой версии вью.

Typescript:

- Добавили дженерики для всего компонента. Штука очень полезная, надеюсь работать будет как надо.
- Наконец убрали грязь в defineEmits, теперь не придется каждый раз писать много ненужных букав.
(e: 'foo', id: number): void => foo: [id: number]
- Добавили типизацию для слотов через defineSlots

Экспериментальное:
- Деструктуризация для пропсов (сомнительная штука, проблема в том, что добавляет новый вариант описания пропсов, а чем больше вариантов, тем больше каши)
- defineModel, по сути сахар для объявления двухстороннего связывания v-model. Он сам регистрирует пропс и мутирует значение. По RFCS можно увидеть, что будут и типы и свойства пропса. Это интересно. Это мы пробуем.

Из мелкого и незначительного:
- Улучшили скорость сборки в 10 раз
- Тесты теперь быстрее из-за перехода на vitest
- Улучшили скорость создания типов

В 2023 году обновления по vue будут чаще, но меньшими по объему.

#vue #js #news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Object.keys

Если надо пробежаться по объекту, используем Object.keys(). Метод возвращает массив, содержащий имена всех свойств объекта.

Часто используется.

#junior #base #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Preline UI

Набор компонентов с использованием Tailwind CSS. Простенько, но красиво.

Tailwind, конечно, сомнительная вещица, поддерживать такой код не из приятных, но чего-чего, а дизайн получается красивым.

Есть инструкции по установке с разными фреймворками

Страничка на productHunt
Ссылка на либу

#lib #js #css #tailwind #vue #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😍1
JS Clipboard API

Апи на самом деле примитивные и ограниченные. Основные функции две - запись и чтение.

Хоть раз в жизни вам придется поработать с этими апишками. Но вечно всплывают какие-то косяки. А все из-за безопасности. Записать в буфер обмена можно что угодно, а вот прочитать оттуда информацию - целое приключение)

Автор объясняет в чем подвох, и как бороться.

Статья на английском

#js #core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Микросервисы + фронтенд = Микрофронтенд

Относительно новый альтернативный способ разработки модульных приложений. Микрофронтенды подходят для больших, я бы даже сказал для ОГРОМНЫХ приложений. Если предполагается, что у проекта будут проблемы с масштабируемостью, можно задуматься об использовании данной архитектуры.

Автор описывает базовые подходы к фронтенд разработки и рассказывает о микрофронтенде.

Статья на английском языке

#base #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3