Существуют различные этапы выполнения JavaScript — как в браузере, так и в средах, таких как Node.
Код JS не может быть выполнен, пока не будет разобран в абстрактное синтаксическое дерево (AST). Однако стратегия разбора может повлиять на производительность — решающую роль играет ленивый (lazy) и нетерпеливый (eager) парсинг.
Узнайте, как движок V8 обрабатывает режимы ленивого и нетерпеливого парсинга и как они влияют на работу приложения:
👉 Заранее предупреждаем V8: более быстрый запуск JavaScript с помощью явных подсказок компиляции
https://v8.dev/blog/explicit-compile-hints
👉 Молниеносный парсинг, часть 1: оптимизация сканера
https://v8.dev/blog/scanner
👉 Молниеносный парсинг, часть 2: ленивый парсинг (lazy parsing)
v8.dev/blog/preparser
@WebDev_Plus
Код JS не может быть выполнен, пока не будет разобран в абстрактное синтаксическое дерево (AST). Однако стратегия разбора может повлиять на производительность — решающую роль играет ленивый (lazy) и нетерпеливый (eager) парсинг.
Узнайте, как движок V8 обрабатывает режимы ленивого и нетерпеливого парсинга и как они влияют на работу приложения:
https://v8.dev/blog/explicit-compile-hints
https://v8.dev/blog/scanner
v8.dev/blog/preparser
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
Лучшая бесплатная и open-source библиотека для добавления аутентификации на твой сайт.
Поддерживает React, Vue, Astro, Next.js, Nuxt и другие.
@WebDev_Plus
Поддерживает React, Vue, Astro, Next.js, Nuxt и другие.
$ npm install better-auth
@WebDev_Plus
👍6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь добавить интерфейс, похожий на терминал, в свои веб-приложения?
Эта библиотека JavaScript позволяет создать полнофункциональный и настраиваемый UI терминала прямо в браузере.
🔗 : termo.rajnandan.com
@WebDev_Plus
Эта библиотека JavaScript позволяет создать полнофункциональный и настраиваемый UI терминала прямо в браузере.
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаешь веб-разработку?
Обрати внимание на Learnify — простую и лаконичную платформу с обучающими материалами.
Пошаговые уроки с примерами помогут понять и создать рабочие проекты.
@WebDev_Plus
Обрати внимание на Learnify — простую и лаконичную платформу с обучающими материалами.
Пошаговые уроки с примерами помогут понять и создать рабочие проекты.
@WebDev_Plus
👍4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Новый эффект от Apple, воссозданный с помощью HTML и CSS — благодаря SVG-фильтрам.
👉 Смотри на кодепен
@WebDev_Plus
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Это невероятно мощный инструмент для CSS Grid
Генерируй любую сетку, какую только можешь представить, всего за пару кликов — никакого ручного кода
Идеально для разработчиков, ценящих эффективность😎
> cssgridgenerator.io
@WebDev_Plus
Генерируй любую сетку, какую только можешь представить, всего за пару кликов — никакого ручного кода
Идеально для разработчиков, ценящих эффективность
> cssgridgenerator.io
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Вот как работает подмена DOM-объектов:
Когда вы создаёте элемент с id, браузер автоматически создаёт глобальную переменную с таким именем:
Теперь
Но если вы создаёте несколько элементов с одинаковым id:
Теперь
Если вы добавите атрибут name:
Тогда
(работает в браузерах Chromium/WebKit, но не в Firefox).
Теперь представьте распространённый JS-паттерн:
Он должен подставить объект по умолчанию, если
Но если
Теперь рассмотрим JS-логику:
Если атакующий подменит
И если этот HTML вставлен, например, через innerHTML, то может получиться:
И это вызовет XSS🏆
Вот краткий разбор этой уязвимости и лабораторной работы от WebSecAcademy
@WebDev_Plus
Когда вы создаёте элемент с id, браузер автоматически создаёт глобальную переменную с таким именем:
<a id="foo"></a>
Теперь
window.foo указывает на этот элемент.Но если вы создаёте несколько элементов с одинаковым id:
<a id="foo"></a>
<a id="foo"></a>
Теперь
window.foo становится HTMLCollection, а не отдельным элементом.Если вы добавите атрибут name:
<a id="foo" name="bar" href="..."></a>
Тогда
window.foo.bar будет указывать на этот элемент(работает в браузерах Chromium/WebKit, но не в Firefox).
Теперь представьте распространённый JS-паттерн:
var someObject = window.someObject || {};Он должен подставить объект по умолчанию, если
window.someObject не существует.Но если
window.someObject был подменён через HTML, то вместо объекта будет DOM-элемент и скрипт это молча примет.Теперь рассмотрим JS-логику:
let imgSrc = someObject.avatar;
Если атакующий подменит
someObject.avatar таким образом:<a id="someObject"></a>
<a id="someObject" name="avatar" href='cid:"onerror=alert(1)//'></a>
И если этот HTML вставлен, например, через innerHTML, то может получиться:
<img src="cid:" onerror="alert(1)//">
И это вызовет XSS
Вот краткий разбор этой уязвимости и лабораторной работы от WebSecAcademy
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Паришься с подбором шрифтов для UI? 🔥
Вот тулза, которая подберёт идеальную пару основного и второстепенного шрифта, да ещё и на реальных примерах
Больше никаких страданий с типографикой: https://www.uifonts.app/
@WebDev_Plus
Вот тулза, которая подберёт идеальную пару основного и второстепенного шрифта, да ещё и на реальных примерах
Больше никаких страданий с типографикой: https://www.uifonts.app/
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Изучи паттерны проектирования на JavaScript
Лучший бесплатный ресурс:
✅ Примеры для React, Vue, Angular, TypeScript
✅ Книга на 400+ страниц с реальными примерами
✅ Интерактивные упражнения и пошаговые объяснения
→ http://patterns.dev
@WebDev_Plus
Лучший бесплатный ресурс:
→ http://patterns.dev
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
CSS совет:
Используй свойство
Прочитай этот гайд из 23 нестандартных приёмов и трюков для CSS, которые редко встречаются в стандартных туториалах✊
@WebDev_Plus
Используй свойство
scroll-margin-top, чтобы липкий (sticky) хедер не перекрывал контент при переходе по якорю (#anchor).Прочитай этот гайд из 23 нестандартных приёмов и трюков для CSS, которые редко встречаются в стандартных туториалах
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Преобразуй любой репозиторий GitHub в чистую документацию за секунды
Просто замени
Особенно полезно для быстрой индексации AI-инструментами для кода, такими как Cursor✊
@WebDev_Plus
Просто замени
github на gittodoc в URL репозитория — и мгновенно получишь удобный вид документацииОсобенно полезно для быстрой индексации AI-инструментами для кода, такими как Cursor
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥2
Знаешь ли ты, что элемент 👀
В этом примере на PHP поле ввода, размещённое вне формы, добавляет аргумент в URL. При этом выводится только второе значение параметра (
@WebDev_Plus
<input> может использовать атрибут form, чтобы связаться с формой по её id — и быть отправленным вместе с этой формой, даже если он находится вне её? В этом примере на PHP поле ввода, размещённое вне формы, добавляет аргумент в URL. При этом выводится только второе значение параметра (
1337), связанное с этой формой.@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
Это одно из самых безумных творений на JavaScript 🤯
Сайт Генри Хеффернана создан с помощью Three.js — JavaScript-библиотеки для 3D-графики и погружает в полностью иммерсивный опыт прямо в браузере.
🔗 : henryheffernan.com
@WebDev_Plus
Сайт Генри Хеффернана создан с помощью Three.js — JavaScript-библиотеки для 3D-графики и погружает в полностью иммерсивный опыт прямо в браузере.
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Знаешь, что можно расшарить свой localhost прямо из Visual Studio Code — за секунды, без лишнего софта? Это встроенный порт-форвардинг.
😮 Безопасно?
• HTTPS-шифрование
• Открыт только нужный порт
• Видимость — на твой выбор (приват / паблик)
• Без возни с роутером и фаерволом
Но для продакшена не годится
@WebDev_Plus
• HTTPS-шифрование
• Открыт только нужный порт
• Видимость — на твой выбор (приват / паблик)
• Без возни с роутером и фаерволом
Но для продакшена не годится
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🎉2
This media is not supported in your browser
VIEW IN TELEGRAM
Нужен источник вдохновения для веб-дизайна?
Этот ресурс предоставляет массу идей
Каждый день — новые страницы для вдохновения.
→ http://godly.website😊
@WebDev_Plus
Этот ресурс предоставляет массу идей
Каждый день — новые страницы для вдохновения.
→ http://godly.website
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Это очень крутая библиотека UI-компонентов в ретро-стиле для фронтенд-разработчиков
Вдохновлённая 8-битной эстетикой, она идеально подойдёт для добавления ностальгического пиксель-арт настроения в современные веб-проекты.🥹
🔗 : 8bitcn.com
@WebDev_Plus
Вдохновлённая 8-битной эстетикой, она идеально подойдёт для добавления ностальгического пиксель-арт настроения в современные веб-проекты.
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
WOW! Этот сайт как соцсеть для AI-промптов
Огромная коллекция качественных промптов по темам:
🔸 Программирование
🔸 Дизайн
🔸 Продуктивность
…и многое другое!
🔗 : prompts.chat — исследуй, сохраняй, делись.
@WebDev_Plus
Огромная коллекция качественных промптов по темам:
…и многое другое!
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Улучшай UI своих веб-страниц с помощью этого каталога анимированных и плавных компонентов
🔗 : http://animate-ui.com
@WebDev_Plus
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Новый инструмент от Google для проектирования интерфейсов на базе ИИ — Stitch, поразил меня
Я ввёл запрос, и всего за несколько секунд он сгенерировал:
✅ Эстетичный дизайн UI
✅ Файл Figma
✅ HTML-код, готовый к использованию в продакшене
Попробовать можно здесь: stitch.withgoogle.com
@WebDev_Plus
Я ввёл запрос, и всего за несколько секунд он сгенерировал:
Попробовать можно здесь: stitch.withgoogle.com
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5