Forwarded from solo lemon. - запускаємо pet-проєкти
Forwarded from NOP::Nuances of Programming
Чтобы выделить "победителя" среди методов глубокого клонирования в JavaScript, необходимо протестировать каждый из них. Предлагаем результаты серии модульных тестов.
https://nuancesprog.ru/p/17555/
VK: https://vk.com/@nuancesprog-kakoi-metod-glubokogo-klonirovaniya-v-javascript-naibolee-ef
Дзен: https://dzen.ru/media/nuancesprog.ru/647f90496d418274f91823c6
@nuancesprog #JavaScript
https://nuancesprog.ru/p/17555/
VK: https://vk.com/@nuancesprog-kakoi-metod-glubokogo-klonirovaniya-v-javascript-naibolee-ef
Дзен: https://dzen.ru/media/nuancesprog.ru/647f90496d418274f91823c6
@nuancesprog #JavaScript
Forwarded from NOP::Nuances of Programming
Как выполняются функции в Javascript? Каков порядок их выполнения? Что такое контекст выполнения? Отвечаем на эти вопросы с иллюстрациями.
https://nuancesprog.ru/p/17792/
VK: https://vk.com/@nuancesprog-stek-vyzovov-javascript-obyasnenie-s-pomoschu-illustracii
Дзен: https://dzen.ru/media/nuancesprog.ru/649219a5f205df6eb7361080
@nuancesprog #JavaScript
https://nuancesprog.ru/p/17792/
VK: https://vk.com/@nuancesprog-stek-vyzovov-javascript-obyasnenie-s-pomoschu-illustracii
Дзен: https://dzen.ru/media/nuancesprog.ru/649219a5f205df6eb7361080
@nuancesprog #JavaScript
Forwarded from Заметки разработчика
Если необходимо создать npm пакет и гарантировать, что его смогут использовать все желающие, нужно, чтобы он поддерживал CommonJS (CJS) и ECMAScript Modules (ESM). Рассмотрим, как создать такой пакет используя TypeScript.
https://www.dev-notes.ru/articles/typescript/create-npm-package-commonjs-esm/
#TypeScript #JavaScript #npm
https://www.dev-notes.ru/articles/typescript/create-npm-package-commonjs-esm/
#TypeScript #JavaScript #npm
Заметки разработчика
Создание npm пакета на TypeScript с поддержкой CommonJS и ESM
Создание npm пакета с поддержкой CommonJS (CJS) и ECMAScript Modules (ESM) используя TypeScript.
Forwarded from Заметки разработчика
#react #js #JavaScript #frontend
React 19: Изменение в современной веб-разработке
React, популярная JavaScript-библиотека для создания пользовательских интерфейсов, собирается сделать гигантский прыжок вперёд в своей грядущей версии 19. В преддверии выхода React 19 разработчики по всему миру с нетерпением ждут новых возможностей и улучшений, обещающих произвести революцию в создании веб-приложений.
Рассмотрим передовые возможности React 19, включая новые хуки, изменения в API и улучшения производительности, благодаря которым изменится опыт разработки. Независимо от того, опытный ли вы разработчик React или только начинаете свой путь, эта статья даст представление, что ждёт и как использовать эти новые мощные инструменты.
📄 Читать статью
@dev_notes_ru
React 19: Изменение в современной веб-разработке
React, популярная JavaScript-библиотека для создания пользовательских интерфейсов, собирается сделать гигантский прыжок вперёд в своей грядущей версии 19. В преддверии выхода React 19 разработчики по всему миру с нетерпением ждут новых возможностей и улучшений, обещающих произвести революцию в создании веб-приложений.
Рассмотрим передовые возможности React 19, включая новые хуки, изменения в API и улучшения производительности, благодаря которым изменится опыт разработки. Независимо от того, опытный ли вы разработчик React или только начинаете свой путь, эта статья даст представление, что ждёт и как использовать эти новые мощные инструменты.
📄 Читать статью
@dev_notes_ru
Forwarded from katsuba.dev (Igor Katsuba)
🔥 Вышла документалка про Angular! 🔥
На YouTube вышел документальный фильм про историю Angular! 🎬 Если вам интересно, как фреймворк прошел путь от внутреннего эксперимента Google до одного из самых обсуждаемых инструментов в мире JavaScript, этот фильм для вас!
🔹 Как Gmail и Google Maps отказались от AngularJS?
🔹 Почему команда решила полностью переделать фреймворк?
🔹 Какие вызовы стояли перед Angular 2, Ivy и Signals?
🔹 Как Angular снова становится важным для Google?
📺 Смотрим: YouTube
#Angular #JavaScript #WebDev #Frontend #Google
На YouTube вышел документальный фильм про историю Angular! 🎬 Если вам интересно, как фреймворк прошел путь от внутреннего эксперимента Google до одного из самых обсуждаемых инструментов в мире JavaScript, этот фильм для вас!
🔹 Как Gmail и Google Maps отказались от AngularJS?
🔹 Почему команда решила полностью переделать фреймворк?
🔹 Какие вызовы стояли перед Angular 2, Ivy и Signals?
🔹 Как Angular снова становится важным для Google?
📺 Смотрим: YouTube
#Angular #JavaScript #WebDev #Frontend #Google
YouTube
Angular: The Documentary | An origin story
Born as an internal Google experiment - and initially brushed off by Gmail and Google Maps - AngularJS soon became a JavaScript sensation. But when internal pressures pushed the team towards a radical overhaul of the framework, the community felt left behind.…
Forwarded from Заметки разработчика
Быстрая сортировка строк с `Intl.Collator`Улучшите сортировку строк с учётом локали, заменив повторяющиеся вызовы `
String.localeCompare` одним экземпляром `Intl.Collator` для более быстрого и эффективного сравнения.Сортировка строк может создавать неожиданные проблемы с производительностью, особенно при работе с большими наборами данных, нуждающимися в соответствующей локализации. Многие разработчики полагаются на
String.localeCompare для сортировки по алфавиту, но есть и более эффективный подход, заслуживающий внимания.#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Заметки разработчика
Error.isError(): Лучший способ проверки типов ошибки в JavaScriptРуководство по новому методу `Error.isError()` в JavaScript: почему он лучше `instanceof`, как решает проблемы кросс-контекстных ошибок и типизации в TypeScript.
Система обработки ошибок JavaScript долгое время оставалась слепым пятном при работе с ошибками в разных контекстах исполнения. Новый метод
Error.isError() устраняет это ограничение, предоставляя разработчикам более надёжный способ идентификации объектов ошибок.#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Заметки разработчика
Новый выпуск Firefox — это не просто набор обновлений, а настоящий прорыв в инструментах для веб-разработки. Основные нововведения: CSS Anchor Positioning по умолчанию, мощный Navigation API и расширенные возможности View Transitions. Давайте разберем все детали.
CSS Anchor Positioning (якорное позиционирование) — это настоящая революция в CSS. Теперь можно «привязывать» один элемент (например, тултип или выпадающее меню) к другому (якорю) прямо в CSS, без JavaScript, создавая отзывчивые интерфейсы.
Что теперь можно в Firefox 147:
Включено по умолчанию! Больше никаких флагов.
anchor-center: Новое, удобное значение для свойств align-self, justify-self и других, чтобы центрировать элемент относительно его якоря.position-anchor: none: Новое значение для отвязки элемента от якоря.@position-try правила отображаются в панели CSS.Практический пример создания тултипа:
/* 1. Объявляем якорь (кнопка) */
.button {
anchor-name: --tooltip-anchor;
}
/* 2. Создаем и привязываем тултип */
.tooltip {
position: absolute;
position-anchor: --tooltip-anchor; /* Связываем с кнопкой */
bottom: anchor(top); /* Размещаем тултип над кнопкой */
left: anchor(center); /* Центрируем по горизонтали */
translate: -50% 0; /* Точная центровка */
}
Преимущество: такой тултип автоматически адаптируется к прокрутке и границам экрана.
🛠 Улучшения для SPA: Navigation API и View Transitions
Firefox 147 делает разработку одностраничных приложений (SPA) значительно удобнее.
⚡️ Navigation API — новый стандарт для управления навигацией.
Позволяет перехватывать навигационные действия, управлять историей браузера и получать информацию о записях в истории. Он призван заменить History API и
window.location, устраняя их недостатки. Подробнее об API можно узнать в полной спецификации на MDN.🎭 View Transitions (Типы переходов)
API для плавных анимаций между состояниями страницы теперь поддерживает типы переходов (
types). Это позволяет задавать разные анимации для разных обновлений контента (например, «переход вперед» и «переход назад»). Доступно свойство Document.activeViewTransition для получения активного перехода. Узнать больше можно в полном руководстве по View Transition API.Инструменты разработчика также получили улучшения для View Transitions: псевдоэлементы :
:view-transition теперь видны в DOM, а анимации — в панели анимаций.Iterator.concat() для объединения итераторов.-webkit-perspective для совместимости, новые единицы измерения (rcap, rch, rex, ric) на основе шрифта корневого элемента, свойства counter-* и quotes для ::marker.API: WebGPU теперь для всех macOS на Apple Silicon, Brotli-сжатие в CompressionStream, CSS-модули (импорт стилей как CSSStyleSheet), Service Workers как ES-модули.localhost.Firefox 147 — это не просто обновление, а серьезный шаг к более выразительной, производительной и простой в разработке веб-платформе. CSS Anchor Positioning обещает сократить объем пользовательского JavaScript для раскладки. Navigation API и View Transitions делают навигацию в SPA предсказуемой и кинематографичной. А WebGPU и другие API открывают двери для новых классов веб-приложений.
#Firefox #WebDev #CSS #JavaScript #AnchorPositioning #ViewTransitions #NavigationAPI #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Махровый fullstack
Мутанты на проводе или Всевидящий MutationObserver
— Когда мир перестаёт быть реактивным, остаётся только наблюдать —
TL;DR:
Давненько у нас не было фронтовых баек, а пожалуй что вот оно!
👩💻 Уютный мир: ламповый laravel, приятные vue-компоненты, встроенные в шаблоны. Всё живёт в безмятежном неведении надвигающейся катастрофы.
👩💻 Но тут появляется внешний JS-скрипт, который начинает управлять состоянием vue-компонента извне. В частности - открывает попап, а vue-форма внутри должна менять своё поведение.
Должна, но не может!
Классические приемы не работают:🤦♂️
— Пропсы не пробросить - компонент уже смонтирован;
— События не проэмитить - нет родителя;
— Пересоздавать компонент с переносом логики - слишком жирно. Да и внешний скрипт менять нельзя.
Можно было бы отчаяться и уйти из IT на ферму кроликов разводить, но на помощь приходят мутанты-наблюдатели!🐢
Да, MutationObserver - наше спасение. Всевидящее Око Саурона в мире DOM.
Создаём наблюдателя. Теперь он в засаде и зорко наблюдает за всеми изменениями у родителя:
Но что бы наблюдатель был не слишком наблюдателен, ограничим его кругозор через фильтр:
Ну и, конечно, по-джентльменски освобождаем наблюдателя при смерти компонента.
Если состояние меняется вне зоны реактивности компонента - это не приговор.
Мутанты среди нас, и они всегда помогут!❤️
#vue #mutationobserver #javascript #frontend #web #разработка
— Когда мир перестаёт быть реактивным, остаётся только наблюдать —
TL;DR:
Иногда не нужно менять архитектуру. Достаточно наблюдать и DOM сам расскажет, что произошло.
Давненько у нас не было фронтовых баек, а пожалуй что вот оно!
Должна, но не может!
Классические приемы не работают:
— Пропсы не пробросить - компонент уже смонтирован;
— События не проэмитить - нет родителя;
— Пересоздавать компонент с переносом логики - слишком жирно. Да и внешний скрипт менять нельзя.
Можно было бы отчаяться и уйти из IT на ферму кроликов разводить, но на помощь приходят мутанты-наблюдатели!
Да, MutationObserver - наше спасение. Всевидящее Око Саурона в мире DOM.
Создаём наблюдателя. Теперь он в засаде и зорко наблюдает за всеми изменениями у родителя:
const component = el.parentElement as HTMLDivElement | null;
let observer: MutationObserver | null = null;
onMounted(() => {
observer = new MutationObserver(() => {
if (component.classList.contains('popup_active')) {
// наша логика
}
})
observer.observe(component, {
attributes: true,
attributeFilter: ['class'],
});
});
Но что бы наблюдатель был не слишком наблюдателен, ограничим его кругозор через фильтр:
attributeFilter и следим строго за классом.Ну и, конечно, по-джентльменски освобождаем наблюдателя при смерти компонента.
onUnmounted(() => {
observer?.disconnect();
observer = null;
});Если состояние меняется вне зоны реактивности компонента - это не приговор.
Мутанты среди нас, и они всегда помогут!
#vue #mutationobserver #javascript #frontend #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM