Начал делать и понял, что целый Vue тянуть это оч плохая идея. Да и долго это всё, окружение еще настроить, сборку в единый бандл и т.п.
Почитал о SolidJs, понял что долго буду вливаться, и тут промелькнул PetiteVue, которого поддерживает сам Evan You. Почитал кучу хвалебных статей, с помаркой, мол "Для виджетов". И загорелся.
Сразу написал вам пост, и взял в работу.
И вылезли подводные камни...
Мне очень хотелось компоненты, биндинги и вынос логики в JS. А так нельзя 😂
Выходит очень перегруженно, что-то более менее сложное - сломает ногу(
Потерял день и переписал всё обратно на Alpine.
Мораль:
Почитал статью про новый "Супер мега инструмент" и планируешь внедрять - проверь на достоверность 😉
— P.S.
И кстати потом постфактум человек заказчика заявил, что нужен "Подключаемый виджет, в одном .js файле". И инициализцией через JS функцию.
Я подсуетился и за полдня при помощи EsBuild - собрал JavaScript, подключил Sass, Pug и запихнул в бандл все HTML сущности в
<template> тегах.А Alpine c CDN подтягивается, чтобы не плодить кучу разных виджетов с Alpine внутри бандла.
Делается очень просто) Потом расскажу.
#web #frontend #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
А еще знаю, что есть новички в веб разработке, напишу Вам в чате.
Что-то хочется мне для вас устроить прямую трансляцию с разбором Canvas анимации на JavaScript.
Разберем и перепишем с использованием ООП очень простой пример, который у меня на гитхабе лежит. Чуть-чуть потрогаем и вспомним школьную геометрию 8-9 классов)
А кто совсем не "бум-бум" - посмотрит просто, одним глазком. 🙂
#web #frontend #javascript #canvas #animation
Что-то хочется мне для вас устроить прямую трансляцию с разбором Canvas анимации на JavaScript.
Разберем и перепишем с использованием ООП очень простой пример, который у меня на гитхабе лежит. Чуть-чуть потрогаем и вспомним школьную геометрию 8-9 классов)
А кто совсем не "бум-бум" - посмотрит просто, одним глазком. 🙂
#web #frontend #javascript #canvas #animation
Могу немного упростить вводные:
Синие линии строятся по уже имеющимся точкам, но они имеют такие вот петли.
Как мы можем их задетектить, вырезать и на их место поставить точку первого пересечения?
--
А так - у нас имеются только точки зелёной линии, которую надо обвести с заданным радиусом.
И это тоже должны быть точки.
Сейчас - перебирая точки зелёной кривой, я беру точку на заданном радиусом расстоянии слева от текущего направления линии.
Потом обратно прохожусь.
Закрывает две линии вначале и в конце так-же линиями из точек.
Получаем из высчитывая из стартовой или конечной точки зелёной линии - точки на окружности с заданным радиусом и частотой.
Практическое применение - мы можем получить маршрут на карте и обвести область вокруг него с заданным радиусом.
#javascript #canvas #geometry #issue #question
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Мимолетный видос о том, как решить проблемы с правами запуска и т.п. при создании проекта на Angular.
Если сделать так, что не может не создаться проект)
#frontend #angular #guide #troubleshooting #nodejs #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Скрипт для кинопоиска
Как вам такое?
UPD.
— Адаптировал под SSR
— Добавил кнопок на страницы со списками
— Добавил поддержку сериалов
— Заменил текст в кнопке на иконку
— Доработал стили, сделав адаптивными вне зависимости от цвета фона
До этого работало только при прямом переходе на страницу извне, либо после перезагрузки страницы
И только на фильмах
Вот более развернутая демонстрация
#JavaScript
Как вам такое?
UPD.
— Адаптировал под SSR
— Добавил кнопок на страницы со списками
— Добавил поддержку сериалов
— Заменил текст в кнопке на иконку
— Доработал стили, сделав адаптивными вне зависимости от цвета фона
До этого работало только при прямом переходе на страницу извне, либо после перезагрузки страницы
И только на фильмах
Вот более развернутая демонстрация
Используется для того, чтобы вручную ссылки не переписывать и фильмы смотреть даже те, которых нет в KinopoiskHD
На Кинопоиске по сути все фильмы есть, его как поисковик и каталог использую, а смотрю на другом сервисе.
Только теперь это в интерфейс самого кинопоиска вписал.
#JavaScript
❤1👍1
При создании инъецируемых скриптов для сайтов, использующих архитектуру SPA (Single Page Application), может возникнуть потребность отслеживать переходы между страницами или перезагрузки элементов. Из-за динамической подгрузки контента через AJAX и Fetch, события DOMContentLoaded или load будут бесполезны.
Для инъецируемых скриптов, хорошим решением будет отслеживать состояние радиомолчания (network idle). Оно наступает, когда все сетевые запросы завершены, и сеть на некоторое время «замолкает». Подобное поведение полезно, если нужно запустить код только после того, как пройдут все запросы или после перехода на другую страницу, чтобы реинициализировать скрипт.
Представьте себе, что вы хотите внедрить кнопки, виджет или другую логику на странице, которая должна запускаться после перехода на новую страницу в SPA-приложении. В этом случае подойдет отслеживание network-idle, чтобы понять, когда контент страницы загрузился.
1. Инициализация счетчика активных сетевых запросов.
Сниппет отслеживает все сетевые запросы на странице (Fetch и XMLHttpRequest) с помощью PerformanceObserver. Каждый раз, когда начинается новый сетевой запрос, счетчик activeRequests увеличивается.
2. Обработка завершения запросов.
После завершения запроса activeRequests уменьшается, и проверяется состояние сети. Если активных запросов не осталось, через 500 мс на объекте window генерируется событие network-idle.
3. Использование события network-idle.
На это событие можно подписаться, чтобы выполнять нужные действия, как только страница завершит все сетевые активности и будет готова для следующей операции.
4. Задержка перед генерацией события.
Задержка в 500 мс добавлена, чтобы устранить "шум" случайных срабатываний и убедиться, что действительно наступило состояние радиомолчания.
• Модификации роутов в SPA. Если у вашего SPA-приложения не используются сетевые запросы при изменении маршрутов, дополнительно можно привязаться к событиям history.pushState и popstate.
• Очистка обсерверов. Не забывайте отключать обсерверы, чтобы избежать утечек памяти, если ваш скрипт прекращает свое действие при определенных условиях.
Этот сниппет помогает организовать логику на основе сетевых событий в инъецируемых скриптах для приложений с динамическим роутингом, позволяя учитывать состояние “радиомолчания” и гарантируя, инъецируемые скрипты выполняются после прогрузки страницы, а также помогает перезапускать инъецируемый скрипт при переходах между страницами.
#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
И снова React!
Простая библиотека для уведомлений
Сижу подучиваю его, по случаю выхода Tauri v2 из beta!
Rust базово уже знаю, а большая часть работы у меня в любом случае пока ожидается с веб технолиями или фронтом, по Rust я только мелкие задачки буду брать, и делать интерфейс им на React!
Ну а на видео - полностью самописная стилизованная на css modules библиотека, если можно так выразиться.
Довольно интересно было разобраться в том, как я могу хранить состояние без стейт менеджера, и управлять им.
Сначала я чуть не изобрел заново Class Components, при этом не используя реальные классовые компоненты, и даже заставил это вё дело работать.
Под шумок смог реализовать возможность вызова экземпляров класса, будто это функция, как в PHP и Python.
Выложил сниппет в gist.
Достаточно вернуть
Но меня остановил TypeScript, когда я уже смог типизировать абсолютно все свои извращения, но он мне не дал возможности создать тип, который бы представлял из себя смесь объекта и функции.
За что я его люблю, это за две вещи:
• Сильно прокачивает IDE, в плане подсказок кода (и AI ассистенты гораздо лучше тебя понимают)
• И ты если пошел не в ту сторону, если в своем уме, в процессе поиска решения и постоянного рефатокринга, рано или поздно задумаешься "А прав ли я?"
#react #JavaScript #TypeScript
Простая библиотека для уведомлений
Сижу подучиваю его, по случаю выхода Tauri v2 из beta!
Rust базово уже знаю, а большая часть работы у меня в любом случае пока ожидается с веб технолиями или фронтом, по Rust я только мелкие задачки буду брать, и делать интерфейс им на React!
Ну а на видео - полностью самописная стилизованная на css modules библиотека, если можно так выразиться.
Довольно интересно было разобраться в том, как я могу хранить состояние без стейт менеджера, и управлять им.
Сначала я чуть не изобрел заново Class Components, при этом не используя реальные классовые компоненты, и даже заставил это вё дело работать.
Под шумок смог реализовать возможность вызова экземпляров класса, будто это функция, как в PHP и Python.
Выложил сниппет в gist.
Достаточно вернуть
toCallable(this) из конструткора любого класса, и реализовать ему метод callНо меня остановил TypeScript, когда я уже смог типизировать абсолютно все свои извращения, но он мне не дал возможности создать тип, который бы представлял из себя смесь объекта и функции.
За что я его люблю, это за две вещи:
• Сильно прокачивает IDE, в плане подсказок кода (и AI ассистенты гораздо лучше тебя понимают)
• И ты если пошел не в ту сторону, если в своем уме, в процессе поиска решения и постоянного рефатокринга, рано или поздно задумаешься "А прав ли я?"
ЗЫ.
Исходники выложу если попросите.
#react #JavaScript #TypeScript
👍1
Cododel.dev | Александр
И снова React! Простая библиотека для уведомлений Сижу подучиваю его, по случаю выхода Tauri v2 из beta! Rust базово уже знаю, а большая часть работы у меня в любом случае пока ожидается с веб технолиями или фронтом, по Rust я только мелкие задачки буду…
Media is too big
VIEW IN TELEGRAM
Закончил полный цикл разработки Уведомлений на React
Интересный опыт.
Получилось закрыть дыры знаний в CSS анимации и узнать много нового о React.
В с последнего поста:
- Полностью переработана и оптимизирована анимация
- Оптимизирована работа с данными
- Переработан программный интерфейс вызова и работы с уведомлениями
- Разработан провайдер контекста, для возможности использования уведомлений в любом месте приложения
- Исправлена и переаботана структура библиотеки так, что теперь не ломает HMR
- Сохранена возможность использовать библиотеку без использования провайдера контекста
С исходниками можно ознакомиться тут
Позже хочу оформить как полноценную библиотеку и залить в NPM, так что пока просто файлы, без мусора.
#react #JavaScript #TypeScript
Интересный опыт.
Получилось закрыть дыры знаний в CSS анимации и узнать много нового о React.
В с последнего поста:
- Полностью переработана и оптимизирована анимация
- Оптимизирована работа с данными
- Переработан программный интерфейс вызова и работы с уведомлениями
- Разработан провайдер контекста, для возможности использования уведомлений в любом месте приложения
- Исправлена и переаботана структура библиотеки так, что теперь не ломает HMR
- Сохранена возможность использовать библиотеку без использования провайдера контекста
С исходниками можно ознакомиться тут
Позже хочу оформить как полноценную библиотеку и залить в NPM, так что пока просто файлы, без мусора.
#react #JavaScript #TypeScript
👍1
Cododel.dev | Александр
Наткнулся на видео, в котором раскрыты существенные нюансы по Rust. И я действительно их считаю существенными, потому чо похожий опыт был с фреймворками и другими языками... (Самый банальный пример, но довольно похожий, это React vs Svelte, у второго комьюнити…
🖼️ Бинарники, RUST и JavaScript (Bun)
В комментариях рассказывал, что учил Rust, делая пошаговый эффективный setup сценарий для настройки Ubuntu в качестве веб сервера.
После чего планировалось его собрать в бинарник.
Я нашел нужные библиотеки, разобрался с базовыми принципами работы на Rust, и определил порядок действий и архитектуру проекта, но на этом и остановился, так как подвернулся коммерческий проект.
Так сейчас я вспомнил один факт!
У JavaScript - есть шикарнейшая среда выполнения Bun, предоставляющая еще и набор довольно интерсных инструментов.
Полностью о нём пока не стану рассказывать, суть не в этом, а в возможности компиляции кода в бинарник. При этом, нечто подобное есть и в последних версиях NodeJS в виде патчинга бинарника интерпретатора JavaScript кодом (упоминалось начиная с 16, если не ошибаюсь).
Но в Bun умеет в рантайм исполнения TypeScript без необходимости сборки проекта в JavaScript. А ещё говорят, что есть возможность оптимизации этого TS/JS в байткод.
Но я вижу, что Bun явно в проигрыше по памяти, а производительность и не ставил под сомнение, Rust шустрее.
На скрине можно увидеть, что такой скрипт занимает 20Mb RAM, а сам по себе весит 57Mb:
Но!
Мне никогда и не требовалась производительность. У меня в приоритете скорость и удобство разработки.
А в NPM я помню, есть огромное разнообразие отличных библиотеки для CLI.
И упаковав это всё дело в бинарник весом ±60-120Mb — останется просто его закинуть на сервер, запустить, выбрать что нужно установить, И..(!)
Пойти пить чай на минут 15
(вместо 20-60 минут настройки сервера - мы тратим 5 минут и пьем чай 10-20, и это при наличии опыта, новичкам сильно больше сэкономит времени)
Обязательно сделаю такой инструмент, по идее он сможет привлечь не очень опытных Linux юзеров и собрать вокруг себя комьюнити.😎
#NodeJS #Bun #Rust #JavaScript #TypeScript #Linux
В комментариях рассказывал, что учил Rust, делая пошаговый эффективный setup сценарий для настройки Ubuntu в качестве веб сервера.
После чего планировалось его собрать в бинарник.
Я нашел нужные библиотеки, разобрался с базовыми принципами работы на Rust, и определил порядок действий и архитектуру проекта, но на этом и остановился, так как подвернулся коммерческий проект.
Так сейчас я вспомнил один факт!
У JavaScript - есть шикарнейшая среда выполнения Bun, предоставляющая еще и набор довольно интерсных инструментов.
Полностью о нём пока не стану рассказывать, суть не в этом, а в возможности компиляции кода в бинарник. При этом, нечто подобное есть и в последних версиях NodeJS в виде патчинга бинарника интерпретатора JavaScript кодом (упоминалось начиная с 16, если не ошибаюсь).
Но в Bun умеет в рантайм исполнения TypeScript без необходимости сборки проекта в JavaScript. А ещё говорят, что есть возможность оптимизации этого TS/JS в байткод.
Но я вижу, что Bun явно в проигрыше по памяти, а производительность и не ставил под сомнение, Rust шустрее.
На скрине можно увидеть, что такой скрипт занимает 20Mb RAM, а сам по себе весит 57Mb:
setInterval( () => {
console.log(Date.now());
}, 1000);
Но!
Мне никогда и не требовалась производительность. У меня в приоритете скорость и удобство разработки.
А в NPM я помню, есть огромное разнообразие отличных библиотеки для CLI.
И упаковав это всё дело в бинарник весом ±60-120Mb — останется просто его закинуть на сервер, запустить, выбрать что нужно установить, И..(!)
Пойти пить чай на минут 15
(вместо 20-60 минут настройки сервера - мы тратим 5 минут и пьем чай 10-20, и это при наличии опыта, новичкам сильно больше сэкономит времени)
Обязательно сделаю такой инструмент, по идее он сможет привлечь не очень опытных Linux юзеров и собрать вокруг себя комьюнити.
А ещё, для шарящих —бонусом к Cursor я взял в работу проект, на котором будет расширение для бразуера на React в WXT и бекендом на AppWrite
Так что будет чего интересного рассказать и обсудить
#NodeJS #Bun #Rust #JavaScript #TypeScript #Linux
Please open Telegram to view this post
VIEW IN TELEGRAM
Cododel.dev | Александр
Закончил полный цикл разработки Уведомлений на React Интересный опыт. Получилось закрыть дыры знаний в CSS анимации и узнать много нового о React. В с последнего поста: - Полностью переработана и оптимизирована анимация - Оптимизирована работа с данными…
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня приспичило жестко разобраться с контекстом в React
За основу взял проект с уведомлениями, тк там был и контекст, и срач
Ну вот навёл порядок, подцепил RSBuild, отрефакторил весь проект
А так же получил несколько консультаций у ИИ модельки в Cursor
(они кстати сейчас оч умные, по дефолту в режиме агента, и можно разрешить гуглить самостоятельно, а не по просьбе)
С исходниками можно ознакомиться тут
#react #JavaScript #TypeScript
За основу взял проект с уведомлениями, тк там был и контекст, и срач
Ну вот навёл порядок, подцепил RSBuild, отрефакторил весь проект
А так же получил несколько консультаций у ИИ модельки в Cursor
(они кстати сейчас оч умные, по дефолту в режиме агента, и можно разрешить гуглить самостоятельно, а не по просьбе)
С исходниками можно ознакомиться тут
#react #JavaScript #TypeScript