This media is not supported in your browser
VIEW IN TELEGRAM
Каким же убогим в техническом плане стал сайт Хабра за последние месяцы...
Открываешь страницу, ждешь 3-4 секунды, кликаешь на дропдаун менюшку - иконка поворачивается, а самого меню нет. Ждешь еще, кликаешь - нет, всё сломалось. Надо перегрузить страницу, подождать секунд 7-8 и потом уже кликать, и появится менюшка. И это на быстром интернете.
Как там у вас,
Заходишь на страницы личного кабинета - там пусто. Надо нажать F5 и тогда контент появится.
#habr #ssr
Открываешь страницу, ждешь 3-4 секунды, кликаешь на дропдаун менюшку - иконка поворачивается, а самого меню нет. Ждешь еще, кликаешь - нет, всё сломалось. Надо перегрузить страницу, подождать секунд 7-8 и потом уже кликать, и появится менюшка. И это на быстром интернете.
Как там у вас,
SSR
-щиков это называется? Гидратация?Заходишь на страницы личного кабинета - там пусто. Надо нажать F5 и тогда контент появится.
Хабр
позорит гордое имя Vue
, на котором он частично (комментарии) написан. А писали его, кстати, вроде, завсегдатаи @vuejs_club#habr #ssr
👍4
Если вам надо выводить атрибут на элементе по условию, то
Это касается только нестандартных
#tip
null
выведет просто имя атрибута, а пустая строка (falsy
) запретит его вывод вообще.Это касается только нестандартных
HTML
атрибутов (типа class
, disabled)
<template>
<div :someProp="hasSomeProp ? 'disabled' : null"></div>
<!-- Выведет <div someProp></div> -->
</template>
<template>
<div :someProp="hasSomeProp ? 'disabled' : ''"></div>
<!-- Выведет <div></div> -->
</template>
#tip
💩5👍3
Всё сущее состоит из противоположных начал, которые, будучи едиными по своей природе, находятся в борьбе друг с другом: день-ночь, горячее-холодное, добро-зло, SPA - бэк API.
Эта борьба, движимая диалектическим законом единства и борьбы противоположностей, служит источником развития, трансформируя количественное накопленные знания в качественно новые формы.
Поэтому SSR, серверные компоненты и прочие гермафродитные порождения LGBT фронтенда не имеют будущего и обречены на разлагающее зловонное вымирание.
#esse #ssr
Эта борьба, движимая диалектическим законом единства и борьбы противоположностей, служит источником развития, трансформируя количественное накопленные знания в качественно новые формы.
Поэтому SSR, серверные компоненты и прочие гермафродитные порождения LGBT фронтенда не имеют будущего и обречены на разлагающее зловонное вымирание.
#esse #ssr
🤡25😁8🤪2💊1😎1
Во
Основной плюс - возможность указывать дефолтные значения более человеческим способом:
Как это делалось ранее (и можно делать сейчас):
Деструктуризация пропсов - это осколки невзлетевшего
По сути деструктуризация пропсов это просто макрос, скрывающий под собой обычную работу с пропсами:
Минусы:
- Деструктурированные пропсы могут быть случайно переданы в функцию, что приведет к потере реактивности
- Пропсы перестают быть явными (становятся неотличимы от обычных переменных)
- Путаница для новичков с магией компилятора
Решение:
Не забывать работать с ними как с
#props #reactivity
Vue 3
вышла Reactive Props Destructure
- деструктуризация пропсовОсновной плюс - возможность указывать дефолтные значения более человеческим способом:
const { count = 0, msg = "hello" } = defineProps<{
count?: number;
message?: string;
}>();
const double = computed(() => count * 2);
Как это делалось ранее (и можно делать сейчас):
const props = withDefaults(
defineProps<{
count?: number;
msg?: string;
}>(),
{
count: 0,
msg: "hello",
}
);
Деструктуризация пропсов - это осколки невзлетевшего
Reactivity Transform
По сути деструктуризация пропсов это просто макрос, скрывающий под собой обычную работу с пропсами:
// на входе
const { count } = defineProps(["count"]);
console.log(count);
// на выходе компилятора
const __props = defineProps(["count"]);
console.log(__props.count);
Минусы:
- Деструктурированные пропсы могут быть случайно переданы в функцию, что приведет к потере реактивности
- Пропсы перестают быть явными (становятся неотличимы от обычных переменных)
- Путаница для новичков с магией компилятора
Решение:
Не забывать работать с ними как с
props.X
либо не использовать деструктуризацию.#props #reactivity
👍15👎1
Сижу я как-то без работы уже какое-то время. И тут подруга договорилась об интервью. Поехали мы с ней, - в Москве, где-то в пределах бульварного кольца особнячок такой старинный. Поднимаемся по лестнице, на третий этаж. Там она пошла куда-то, я жду.
Тут из кабинета меня зовут. Вхожу - там большая такая комната, длинная, длинный стол, и за ним работники сидят офисные - молодые, все прям белые воротнички, в костюмчиках. Но не на компьютерах работают, а бумаги какие-то перекладывают.
Я присел на стул. Тут подходит из дальнего угла тоже относительно молодой человек - типа, техлид. Ну, начал я ему свои регалии по резюме рассказывать. Он послушал совсем немного, а потом говорит:
- Это всё хорошо. А вы работали с магазином Тьян-Ми?
Я так понял это софт какой-то, но название не расслышал с первого раза. Переспрашиваю:
- Что?
Он опять:
- Магазин Тьян-Ми
А я опять не расслышал, - эти работники по все комнате шуршат своими бумагами и канцелярскими приборами, а техлид этот на расстоянии. Неудобно, но все же переспрашиваю:
- Какой магазин?
- Тьян-Ми.
И видно, что уже раздраженно ответил. Я говорю:
- Нет.
Он:
- Ну а о чем тут еще говорить?
Поворачивается и уходит обратно в дальний конец комнаты.
И я такой, не понимаю - это что, всё? Оглядываюсь на работников - а они кто сочувственно смотрит, кто глаза опустил.
Я секунд 20 подождал, потом встал, выхожу, и на лестнице еще оборачиваюсь - может я не так понял и меня обратно позовут?
Не позвали...
Вот такой сон сегодня приснился. И настолько реалистичный и красочный, прям до сих пор под впечатлением.
Что за магазин Тьян-Ми?
Что-то на Наксте?
#offtop
Тут из кабинета меня зовут. Вхожу - там большая такая комната, длинная, длинный стол, и за ним работники сидят офисные - молодые, все прям белые воротнички, в костюмчиках. Но не на компьютерах работают, а бумаги какие-то перекладывают.
Я присел на стул. Тут подходит из дальнего угла тоже относительно молодой человек - типа, техлид. Ну, начал я ему свои регалии по резюме рассказывать. Он послушал совсем немного, а потом говорит:
- Это всё хорошо. А вы работали с магазином Тьян-Ми?
Я так понял это софт какой-то, но название не расслышал с первого раза. Переспрашиваю:
- Что?
Он опять:
- Магазин Тьян-Ми
А я опять не расслышал, - эти работники по все комнате шуршат своими бумагами и канцелярскими приборами, а техлид этот на расстоянии. Неудобно, но все же переспрашиваю:
- Какой магазин?
- Тьян-Ми.
И видно, что уже раздраженно ответил. Я говорю:
- Нет.
Он:
- Ну а о чем тут еще говорить?
Поворачивается и уходит обратно в дальний конец комнаты.
И я такой, не понимаю - это что, всё? Оглядываюсь на работников - а они кто сочувственно смотрит, кто глаза опустил.
Я секунд 20 подождал, потом встал, выхожу, и на лестнице еще оборачиваюсь - может я не так понял и меня обратно позовут?
Не позвали...
Вот такой сон сегодня приснился. И настолько реалистичный и красочный, прям до сих пор под впечатлением.
Что за магазин Тьян-Ми?
Что-то на Наксте?
#offtop
😁12🤣8🗿4🍌1
После выхода
Недавно кто-то в чате пожаловался, что после апдейта
#vuejs #volar
Vue 3.5.3
все тесты в ее экосистеме стали "зелеными", что уже как бы хороший знак.Недавно кто-то в чате пожаловался, что после апдейта
Vue
у него сломались импорты по имени директории (index.ts
не находился). Я тоже словил этот баг - это очередной закос Volar
, решается перезагрузкой окна.#vuejs #volar
👍4
Cходу смог применить вроде бы чисто
При реализации глобального прелоадера
Там компоненты, которые могут влиять на прелоадер, регистрируются со своими
Очень показательно в плане того, чтобы увидеть, для чего эта функция может быть полезна.
Также очевидно
#useid
SSR
-ную новую штуку от Vue 3.5
- useId()При реализации глобального прелоадера
Там компоненты, которые могут влиять на прелоадер, регистрируются со своими
id
, который должен быть уникален для компонента. Раньше был вариант с uuid
.Очень показательно в плане того, чтобы увидеть, для чего эта функция может быть полезна.
Также очевидно
useId()
много будет использоваться для доступности (a11y
), о чем и написано в документации.#useid
Vue FAQ
Архитектурные решения | Vue FAQ
Vue FAQ - information about Vue.js and frontend development in general
👍9🤔3
На днях РКН снова сильно обеспокоил своими блокировками. Потратил опять время, поставил VPN Hiddify
На сервере инсталяционный скрипт ставил кучу барахла минут 15, убил мои
Пришлось всё переставлять и под него делать отдельный сервер. В итоге заработало без особых бубнов, выглядит солидно. Но клиент на
Разработка иранцев и китайцев.
Кстати,
P.S. Будете выбирать местоположение своего сервера, учитывайте свои предпочтения по рекламе в `Youtube`. Сделаете в Германии - будете слушать рекламу на немецком. В Италии - на итальянском. В РФ рекламу не пускали.
#vpn
На сервере инсталяционный скрипт ставил кучу барахла минут 15, убил мои
Nginx
и MySQL
, потому что ставит свои. Хорошо хоть сервер не прод. )Пришлось всё переставлять и под него делать отдельный сервер. В итоге заработало без особых бубнов, выглядит солидно. Но клиент на
Windows
иногда подвисает. Тогда лучше его убивать через Task manager
Разработка иранцев и китайцев.
Кстати,
CPU
и памяти он жрет на клиенте несравнимо меньше Outline
P.S. Будете выбирать местоположение своего сервера, учитывайте свои предпочтения по рекламе в `Youtube`. Сделаете в Германии - будете слушать рекламу на немецком. В Италии - на итальянском. В РФ рекламу не пускали.
#vpn
Hiddify
Home - Hiddify
The proxy manager platform.
Еще один интересный API client - Yaak с девизом: «Offline-First and Bloat-Free»
На днях вышел в
Выглядит приятно, минималистично, но достаточно полно.
Альтернативы:
-
-
Первое
Есть еще один популярный "як" в семействе API клиентов - httpYac - CLI версия и расширение для
#api #rest #yaak #tauri #hoppscotch
На днях вышел в
Open source
. Написан на Tauri
и React
Выглядит приятно, минималистично, но достаточно полно.
Альтернативы:
-
Postman
- слишком жирный и перегруженный, требует интернета для работы-
Hoppscotch
- слишком часто не может подсоединиться к внешним API
(CORS или блокировка его прокси)Первое
Tauri
приложение, что я попробовал. К сожалению, реклама не то же самое, что жизнь - дистрибутив 40Мб, в развернутом виде - 120Мб. Не сильно меньше Electron
-a, хотя не должен содержать в себе JS
движок. Есть еще один популярный "як" в семействе API клиентов - httpYac - CLI версия и расширение для
VS Code
#api #rest #yaak #tauri #hoppscotch
yaak.app
Yaak – The API client for modern developers
A fast, offline, and Git friendly app for HTTP, GraphQL, WebSockets, SSE, and
gRPC.
gRPC.
👍9
Вышла первая бета шестого
Из нового только Environment API
Пятый вышел 10 месяцев назад, и брейкингов там было выше крыши. Видимо затишье перед интеграцией
#vite
Vite
Из нового только Environment API
Пятый вышел 10 месяцев назад, и брейкингов там было выше крыши. Видимо затишье перед интеграцией
Rolldown
#vite
18 качественных отличий
- отсутствие легаси-абсурда: @change во вью - это реальный change, а не input, как в реакте, мимикрирующий под change
- отсутствие stale closure и всех связанных с ним проблем
- автоматический трекинг зависимостей, нет костылей типа useCallback
- удобные хелперы из коробки (привет либам clsx и classnames)
- удобный DSL, а не стремный JSX
- нет useEffect и миллиарда статей и докладов на тему “вы неправильно используете useEffect”
- нет проблем с воображением, когда добавляют новые фичи - useImperativeHandle и dangerouslySetInnerHTML
- есть сахар для работы с формами - v-model
- есть слоты
- нет костыльного стриктмода, который, прости хоспаде, твой код запускает дважды, чтобы тебе было приятнее работать избавить тебя от багов
- нет monkey-patching’а нативных console и fetch
- нет ререндеров на любой чих
- нет 50 вложенных контекстов в руте приложения
- нет прекрасного forwardRef
- есть нормальная система плагинов
- есть реактивность для Map/Set из коробки
- есть нормальная мутабельность без сотни копий всего подряд
- есть nextTick, не надо костылить с flushSync
#react #vuejs
Vue
от React
от Artyom Tuchkov- отсутствие легаси-абсурда: @change во вью - это реальный change, а не input, как в реакте, мимикрирующий под change
- отсутствие stale closure и всех связанных с ним проблем
- автоматический трекинг зависимостей, нет костылей типа useCallback
- удобные хелперы из коробки (привет либам clsx и classnames)
- удобный DSL, а не стремный JSX
- нет useEffect и миллиарда статей и докладов на тему “вы неправильно используете useEffect”
- нет проблем с воображением, когда добавляют новые фичи - useImperativeHandle и dangerouslySetInnerHTML
- есть сахар для работы с формами - v-model
- есть слоты
- нет костыльного стриктмода, который, прости хоспаде, твой код запускает дважды, чтобы тебе было приятнее работать избавить тебя от багов
- нет monkey-patching’а нативных console и fetch
- нет ререндеров на любой чих
- нет 50 вложенных контекстов в руте приложения
- нет прекрасного forwardRef
- есть нормальная система плагинов
- есть реактивность для Map/Set из коробки
- есть нормальная мутабельность без сотни копий всего подряд
- есть nextTick, не надо костылить с flushSync
#react #vuejs
👍47❤2👎1
В последнем
Еще раз напоминаю о важности использования этой фичи, позволяющей иметь разные настройки и расширения для разных проектов, ощутимо улучшая производительность редактора и общий
Малозаметная штука, сильно облегчающая работу. И чего нет у комбайна
#vscode
VS Code
появился более удобный Profile editor
.Еще раз напоминаю о важности использования этой фичи, позволяющей иметь разные настройки и расширения для разных проектов, ощутимо улучшая производительность редактора и общий
DX
.Малозаметная штука, сильно облегчающая работу. И чего нет у комбайна
JetBrains
.#vscode
👍11👎3🤔1
SWC
(Speedy Web Compiler
) - это быстрый компилятор JavaScript/TypeScript
, написанный на Rust
. Основные характеристики:1. Высокая скорость компиляции
2. Поддержка современного
JavaScript
и TypeScript
3. Может заменять
Babel
во многих сценарияхVite
по умолчанию не использует SWC
, (хотя он может быть подключен, особенно при работе с React
). Vite
использует esbuild
для dev-сборки и Rollup
для prod-сборки.SWC
популярен в мире React
и его тулинга. Разрабатываемый Evan You Rolldown
поначалу использовал SWC
, но потом переключился на еще один JS
компилятор на Rust
- OXC
#rolldown #swc #oxc
👍5
Пришла беда откуда не ждали
Обычный
#ai
Обычный
ChatGPT
отлично справляется с задачей реверс инжиниринга и переводит сбилженный и минифицированный JS
обратно в исходник (React
в данном примере)#ai
Glama – MCP Hosting Platform
I was curious about how a component was implemented in a minified JavaScript file and used ChatGPT to reverse engineer the component.
👍4