Хороший код не нуждается в комментариях. Вернее нуждаться могут не только лишь все, мало кто может это сделать.
Ссылка на статью
Вот выжимка, это база.
- Используй константы вместо магических значений (в комментах под постом есть горячее обсуждение по этому поводу)
- Упрощай, путем вынесения кода в отдельные функции (в пределах разумного)
- Повторяемые куски кода выноси в отдельные функции
#base #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
В июне ожидается выпуск нового стандарта. Изменений немного:
- 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
TypeScript все больше. Svelte врывается в гонку за реактивность и имеет все шансы стать четвертым товарищем среди React, Angular и Vue.
Ссылка на статью
#news #js #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Перевели статью по поводу сокращений условий. И добавили от себя в конце примечание.
Только для хакеров БЕЗ СМС И РЕГИСТРАЦИИ
#js #base #translate
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
JS. Сокращаем условия
При написании кода важной частью являются условия, чаще всего мы используем их как "валидаторы", которые возвращают булевское значение, либо что-то на их основе. Затем, относительно этого значения выполняются новые инструкции. Но большое количество длинных…
👍8🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулись на статью, где автор отрисовал сотню индикаторов загрузки.
Берем и пользуемся. Даже если не потребуется сам индикатор, можно глянуть реализацию анимаций, их тут уйма
Ссылка на статью
#css #bundle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Написали для вас статью, в которой вы узнаете как вручную отрисовать и поместить компонент диалогового окна в дом дерево.
Если используете react или angular тоже почитайте, реализация на этих фреймворках будет плюс-минус такая же.
#vue #js #promise #compositionAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Окно подтверждения во Vue 3
Допустим, надо получить подтверждение для удаления элемента. Диалоговое окно простое: Вопрос, описание и две кнопки (отменить, подтвердить)
👍5
С помощью console.log отдебажено миллиард миллионов приложений. Настолько простой и быстрый способ еще поискать надо.
Но помимо главного метода
логирования, есть, например, трассировка (составление мест вызова) или замер времени выполнения кода. Эти и другие методы console. В конце автор расписал полезные хромовские утилиты консоли
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В js есть апи для определения видимости всей страницы. Видит пользователь страницу в данный момент или нет? (окно браузера свернули или переключили вкладку)
У этих апи есть 2 свойства состояния и 1 событие
Свойства:
- document.hidden (только для чтения) - возвращает булевское значение видимости текущей страницы
- document.visibilityState (только для чтения) - возвращает 1 из 4х значений состояния видимости:
Событие:
- visibilitychange - срабатывает, когда изменяется состояние видимости
Для чего можно применять:
- Для оптимизации
- Для кеширования
- Для сохранения результатов (например, состояние игры или заполненной формы)
Полная статья на английском языке
#js #core
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Выше уже был пост про подобные правила, что лишний раз подтверждает эту проблему.
Если резюмировать (хорошие практики):
- Используй let, const вместо устаревшего var (благо линтеры в IDE сами тебе подсказывают)
- Не комментарий должен объяснять код, а сам код (лучше упростить, чем писать полотна с комментариями, в придачу они очень быстро становятся неактуальными или удаляются)
- Используй строгое === вместо обычного == (Обычное сравнение надо использовать с осторожностью и понимать, зачем ты это делаешь)
- Используй необязательный оператор ? (если есть вероятность отсутствия свойства в объекте), дабы обрабатывать не ошибку, а undefined
- Не используй магические значения (числа и строки, которые появляются из неоткуда, например, в сравнениях). Создавай для этого константы с понятным названием
- Обрабатывай каждый запрос к api через try/catch, даже если это микро-макро-несерьезный запрос и ты уверен что там все точно будет в порядке.
Ссылка на статью на английском
#js #base
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
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
Эван Ю 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
Набор компонентов с использованием Tailwind CSS. Простенько, но красиво.
Tailwind, конечно, сомнительная вещица, поддерживать такой код не из приятных, но чего-чего, а дизайн получается красивым.
Есть инструкции по установке с разными фреймворками
Страничка на productHunt
Ссылка на либу
#lib #js #css #tailwind #vue #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😍1
Апи на самом деле примитивные и ограниченные. Основные функции две - запись и чтение.
Хоть раз в жизни вам придется поработать с этими апишками. Но вечно всплывают какие-то косяки. А все из-за безопасности. Записать в буфер обмена можно что угодно, а вот прочитать оттуда информацию - целое приключение)
Автор объясняет в чем подвох, и как бороться.
Статья на английском
#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
На днях релизнулся прикольный макро фреймворк. Реализована реактивность и компоненты. Весит все это чудо в сжатом виде 3кб.
Автор настаивает на том, что это не альтернатива react и vue, а скорее дополнение к ванильному js. Серьезно воспринимать такое творение не надо, но поиграться можно)
Ссылка на это творение
#js #framework
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1😁1
Релизнулась ts 5.1 rc. А это значит, что ее уже можно попробовать (основной версией она станет спустя некоторое время)
Кратко, что добавили:
- Упрощенный неявный возврат для undefined значений у функций
- Несвязанные типы для геттеров и сеттеров
- Раздельная проверка типов между элементами jsx и типами тегов
- Пространство имен для атрибутов jsx
- Оптимизацию
Изменились и минимальные требования, теперь это ES2020 и Node.js 14.17.
Ссылка на релиз
#js #ts #news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезное решение, которое применяют в реальных приложениях для повышения производительности за счет предотвращения вызова функций.
Самый элементарный пример, это ввод данных в инпуте, чтобы реагировать не сразу на каждый введенный символ, а с задержкой. Например, поле поиска. Отправлять запрос на api после ввода каждого символа - накладно, поэтому пользуемся debounce и сокращаем количество запросов.
#middle #js #custom
Please open Telegram to view this post
VIEW IN TELEGRAM