Душный Вуй
743 subscribers
153 photos
5 videos
4 files
353 links
Немного душные, но ламповые заметки о Vue.js
#vuejs #vue #nuxt #vuex #pinia #вью #vapor
Download Telegram
#vue #критика

Продолжаем смотреть ваши проектики, на очереди у нас кнопочка поделиться в соц. сетях с гигантским количеством вариантов 👀

Автор: @webistomin
Код: https://github.com/webistomin/vue-socials
Сайт: https://vue-socials.vercel.app/
Please open Telegram to view this post
VIEW IN TELEGRAM
Это наша последняя гонка...
Вышел Nuxt 3.14 и прям в релиз-ноутах сделали анонс предстоящего Nuxt 3.15

🐊 В сборщиках пополнение — добавился rspack. Если вы использовали webpack до этого, дайте шанс новичку
🌿 Новая папка shared для переиспользуемого кода между server- и app-частью вашего приложения. Держите видеообъяснение.
🥳Подкапотные инструменты тоже обновили. Свежий Nitro 2.10, Jiti v2 сделают ваш проект выше, быстрее, сильнее бесплатно.

В композаблах добавили useResponseHeader (понятно, для чего) и useRuntimeHook (чтобы хуки регистрировались и разрегистрировались вместе с жизненным циклом)

Для модулей в этот раз немного — добавили только addServerTemplate, чтобы генерировать файлы из кода, которые потом будут использоваться в Nitro

❗️Ну и пара изменений для будущего v4 (ожидается, что его покажут на конференции Nuxt Nation) 12 ноября: изменили названия для автоимпортируемых компонентов, и поменяли принцип сканирования метадаты на страницах, которая описана в definePageMeta(). Чтобы это у вас сработало, не забудьте выставить в конфиге { future: { compatibilityVersion: 4 } }

Будет 3.14.1?
Please open Telegram to view this post
VIEW IN TELEGRAM
#vue #критика

UI для мультиплеерного мода M&B:Bannerlord
Без адаптива (не нужен)
Авторизация через Steam/Xbox/Epic (чтобы увидеть все разделы)
Много unit-тестов

Автор: @zohan333

Web: https://c-rpg.eu/

https://c-rpg.eu/strategus/ - WIP режим глобальной карты

GitHub: https://github.com/namidaka/crpg
Вот такие новости. Опять новогодние подарки обещают

Возможно для небольших проектов можно будет полноценно использовать Rolldown уже совсем скоро

P.S. EOY - конец года

#rolldown
#инструмент дня

Я, конечно, прошу прощения за неожиданную иллюстрацию к посту, но у меня примерно сейчас такие вот ощущения от либы, про которую хочу рассказать :)

И называется она, какая неожиданность, cigs.

Ну, буквально: 🚬 cigs

Сразу ссылка: https://github.com/cigs-tech/cigs

Итак, что же она делает.

А она позволяет задавать вопросы по заданной Zod-схеме обычным человеческим языком используя OpenAI-токены!

Короче, ещё более просто. Описываешь некую схему объекта, а потом спрашиваешь у системы: "А какой там любимый цвет у Джона?". И получишь ответ!

Пример:
function getUserCompliment(username: string) {
const colorMap = {
"Alice": "blue",
"Bob": "green",
"Charlie": "red",
};
return {
color: colorMap[input.username as keyof typeof colorMap] || "unknown",
};
}

const userInfoSchema = z.object({
username: z.string(),
});

// Define a cig to get a user's favorite color
const getFavoriteColor = cig("getFavoriteColor", userInfoSchema)
.handler(async (input) => {
// Simulated database lookup
return getUserCompliment(input.username);
});

// Usage example
(async () => {
try {
const result = await getFavoriteColor.run(
"What is the favorite color of Alice",
); // { color: 'blue' }
console.log(result);

const result2 = await getFavoriteColor.run(
"What is the favorite color of Susan",
); // { color: 'unknown' }
console.log(result2);

// You can also call that function with the specified input
const result3 = await getFavoriteColor.run({ username: "Alice" }); // { color: 'blue' }
console.log(result3);
// Expected output: { username: 'alice', favoriteColor: 'blue', compliment: 'You have great taste!' }
} catch (error) {
console.error("Error:", error);
}
})();


Вы вообще понимаете, что это значит для тех, кто пишет парсеры или генераторы фейковых данных? :)

Вытащить все спец предложения с "красной ценой" со страницы интернет-магазина? Да запросто! Даже если этот самый магазин обфуцирует код.

Или использует Styled Components.

Пройдите на страницу библиотеки и почитайте примеры. Это нечто потрясающее.

#ai #parser
В прошлом посте было сразу несколько анонсов (кстати, 3.14.1 не вышел, но патч вышел — как же так?). Теперь немного подробнее

🍿12-13 ноября будет Nuxt Nation — конференция, на которой будет много знакомых лиц и немного незнакомых. Обещают рассказать про Nuxt, про Nuxt UI, про повышение перформанса, разработку мобильных и local-first приложений.

✏️Кроме того, анонсировали 45-минутную панель с core-командой Nuxt'а на тему будущего фреймворка и экосистемы. Вопросы принимаются уже сейчас, но, возможно, можно будет их задать и на самой встрече.

Надеемся на стрим без лагов в этом году!
Please open Telegram to view this post
VIEW IN TELEGRAM
В прошлом посте было сразу несколько анонсов (кстати, 3.14.1 не вышел, но патч вышел — как же так?). Теперь немного подробнее

🍿12-13 ноября будет Nuxt Nation — конференция, на которой будет много знакомых лиц и немного незнакомых. Обещают рассказать про Nuxt, про Nuxt UI, про повышение перформанса, разработку мобильных и local-first приложений.

✏️Кроме того, анонсировали 45-минутную панель с core-командой Nuxt'а на тему будущего фреймворка и экосистемы. Вопросы принимаются уже сейчас, но, возможно, можно будет их задать и на самой встрече.

Надеемся на стрим без лагов в этом году!
Please open Telegram to view this post
VIEW IN TELEGRAM
В чате vuejs_ru вчера прошла короткая дискуссия о вредности и ненужности :deep(). Типа его можно заменить на установление путем JS в 2 строчки класса на внутреннем компоненте.

Попросил привести пример в случае, если container query во внешнем компоненте меняет flex-direction во внутреннем - абсолютно реальный use-case.

Возможно, конечно, но две строчки CSS превращаются в кучу громоздкого уродливого JS с огромными потерями в производительности.

:deep() - это инструмент, пользоваться им надо умело, и не будет никаких проблем. Если ты постоянно пытаешься, ограничивая инструментарий, сделать защиту от дурака, то ты этих дураков и плодишь.

CSS - это уровень представления вашего приложения, его функционал давно выходит за пределы только простенькой адаптивности, анимации и цветовых тем. В CSS тоже есть логика, и перекладывать её работу на JS нецелесообразно.

CSS
всегда на порядки быстрей JS в браузерах. И поэтому использование JS вместо CSS как минимум очень сильно бьет по производительности, да еще и замусоривает скриптовую секцию вашего SFC.

Когда мне надо в проекте сделать свой небольшой UI kit, я обычно size=large в BaseButton передаю не пропсом, а CSS классом. Потому что эта штука принадлежит именно уровню представления - то есть, CSS. И потому что приложение так будет работать быстрее, а SFC получается проще, чище и понятней.

Да, это нельзя TS типизировать для получения подсказочек в IDE. Но мир не сошел с ума на этих подсказках, кому-то надо просто писать производительные читабельные приложения, и заглядывание во внутреннюю документацию или исходник компонента вполне решает проблему подсказок.

TS для разработчика, а не разработчик для TS.

#css