WebDev+ | Веб-разработка
8.32K subscribers
506 photos
241 videos
10 files
700 links
Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки

Связь: @devmangx
Download Telegram
Существуют различные этапы выполнения 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
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 и другие.

$ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаешь веб-разработку?

Обрати внимание на Learnify — простую и лаконичную платформу с обучающими материалами.

Пошаговые уроки с примерами помогут понять и создать рабочие проекты.

@WebDev_Plus
👍42
This media is not supported in your browser
VIEW IN TELEGRAM
Новый эффект от Apple, воссозданный с помощью HTML и CSS — благодаря SVG-фильтрам.

👉 Смотри на кодепен

@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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
This media is not supported in your browser
VIEW IN TELEGRAM
Вот как работает подмена DOM-объектов:

Когда вы создаёте элемент с 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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
CSS совет:

Используй свойство scroll-margin-top, чтобы липкий (sticky) хедер не перекрывал контент при переходе по якорю (#anchor).

Прочитай этот гайд из 23 нестандартных приёмов и трюков для CSS, которые редко встречаются в стандартных туториалах

@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥81
This media is not supported in your browser
VIEW IN TELEGRAM
Преобразуй любой репозиторий GitHub в чистую документацию за секунды

Просто замени github на gittodoc в URL репозитория — и мгновенно получишь удобный вид документации

Особенно полезно для быстрой индексации AI-инструментами для кода, такими как Cursor

@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2
Знаешь ли ты, что элемент <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
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
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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
This media is not supported in your browser
VIEW IN TELEGRAM
WOW! Этот сайт как соцсеть для AI-промптов

Огромная коллекция качественных промптов по темам:

🔸Программирование
🔸Дизайн
🔸Продуктивность
…и многое другое!

🔗: prompts.chat — исследуй, сохраняй, делись.

@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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104
This media is not supported in your browser
VIEW IN TELEGRAM
Новый инструмент от Google для проектирования интерфейсов на базе ИИ — Stitch, поразил меня

Я ввёл запрос, и всего за несколько секунд он сгенерировал:

Эстетичный дизайн UI
Файл Figma
HTML-код, готовый к использованию в продакшене

Попробовать можно здесь: stitch.withgoogle.com

@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
5