Бывают случаи, когда надо явно перерендерить шаблон - например, он мог быть изменен сторонней нереактивной библиотекой. Самый правильный способ делать это - через key:
#tip
<script setup>
import { ref } from 'vue';
const componentKey = ref(0);
const forceRender = () => {
componentKey.value += 1;
};
</script>
<template>
<MyComponent :key="componentKey" />
<button @click="forceRender">Force re-render</button>
</template>
#tip
Обновился проект Arty-Crafty
Добавились: выбор BaaS, настройка и интеграция с Supabase, настройка Hoppscotch, добавление мобильного нижнего меню.
Текущая версия сайта - https://vuesence.github.io/arty-crafty/
Очередное CMV
#artycrafty #supabase #cmv
Добавились: выбор BaaS, настройка и интеграция с Supabase, настройка Hoppscotch, добавление мобильного нижнего меню.
Текущая версия сайта - https://vuesence.github.io/arty-crafty/
Очередное CMV
#artycrafty #supabase #cmv
Arty-Crafty - проект онлайн магазина
Выбор BaaS или CMS | Vue FAQ
Vue FAQ - information about Vue.js and frontend development in general
Как сделать человеко-понятные SEO-friendly ссылки из названия, типа такой?
5 строк.
В роутах пишем:
И в месте создания ссылки (боковое меню, например) при
функцию
Теперь если пользователь сохранит страницу в браузере, а название категории немного изменится на сайте, он все равно попадёт, куда надо.
/category/2-voylochnie-igrushki
вместо /category/2
5 строк.
В роутах пишем:
{
path: "/category/:categoryId",
name: "category",
props: route => ({ categoryId: +(route.params.categoryId as string).split("-")[0] }),
component: ProductCategoryView,
},
И в месте создания ссылки (боковое меню, например) при
router.push()
добавляем slug
названия категории:@click="router.push(`${category.id}-${slug(category.title)}`)"
функцию
slug()
разрешаем сгенерить Codeium-u запросом "write slug function for сyrillic letters". На бэкенде ничего менять не надо.Теперь если пользователь сохранит страницу в браузере, а название категории немного изменится на сайте, он все равно попадёт, куда надо.
categoryId
можно поставить и после slug-a
, тогда будет как у Ozon-a.Вчера не смог заснуть пока не сделал. Демо. Строит таймлайн релизов любого публичного репозитория. Адаптирован к темам VitePress.
Опубликовал npm пакет
Подключение в компоненте или в VitePress .md:
Планируется добавить детали релиза, а также опционально список commits и pull requests к каждому релизу
Опубликовал npm пакет
release-timeline
. Документация здесь.Подключение в компоненте или в VitePress .md:
<script setup>
import { ReleaseTimeline, DefaultOptions as options } from "release-timeline";
import "release-timeline/dist/style.css";
options.github.owner = "vuesence";
options.github.repo = "arty-crafty";
</script>
<ReleaseTimeline :options="options" />
Планируется добавить детали релиза, а также опционально список commits и pull requests к каждому релизу
Глобальный прелоадер
Альтернативу много лет создающемуся Suspense несложно сделать самому с помощью одной composable функции в 30 строк.
Он нужен когда в нескольких компонентах могут асинхронно грузится данные, и нужно показывать один общий прелоадер пока все загрузки не закончатся.
Альтернативу много лет создающемуся Suspense несложно сделать самому с помощью одной composable функции в 30 строк.
Он нужен когда в нескольких компонентах могут асинхронно грузится данные, и нужно показывать один общий прелоадер пока все загрузки не закончатся.
История shikiji - библиотеки для синтаксической подсветки фрагментов кода, о которой мы писали несколько раз, - скоропостижно завершилась.
Напомним, Anthony Fu форкнул и портировал пакет shiki.js на ESM. Данная библиотека предназначено для синтаксической подсветки фрагментов кода, аналог highlight.js. Использует hast для токенизации и VS Code Oniguruma, которая написана на C и компилируется в WebAssembly. Данная часть переписана Anthony на ESM, является tree-shakable и работает и в Node.js, и в браузере.
Использование того же движка, что и в VS Code, позволяет работать быстрее распространенных подсветчиков кода, занимать меньше места и быть более функциональна (например, включает препроцессор для TypeScript TwoSlash нотаций). Доступны множество языков (включая вариации Vue и Vue HTML) и все темы VS Code (на данный момент около 5000). VitePress переехал на новую библиотеку для подсветки блоков кода в декабре 2023 года.
На прошлой неделе владельцы shiki сделали Pull request и забрали себе все улучшения, добавленные Anthony. Теперь он работает над shiki, проект shikiji архивирован.
#antfu #shiki #shikiji #vitepress
Напомним, Anthony Fu форкнул и портировал пакет shiki.js на ESM. Данная библиотека предназначено для синтаксической подсветки фрагментов кода, аналог highlight.js. Использует hast для токенизации и VS Code Oniguruma, которая написана на C и компилируется в WebAssembly. Данная часть переписана Anthony на ESM, является tree-shakable и работает и в Node.js, и в браузере.
Использование того же движка, что и в VS Code, позволяет работать быстрее распространенных подсветчиков кода, занимать меньше места и быть более функциональна (например, включает препроцессор для TypeScript TwoSlash нотаций). Доступны множество языков (включая вариации Vue и Vue HTML) и все темы VS Code (на данный момент около 5000). VitePress переехал на новую библиотеку для подсветки блоков кода в декабре 2023 года.
На прошлой неделе владельцы shiki сделали Pull request и забрали себе все улучшения, добавленные Anthony. Теперь он работает над shiki, проект shikiji архивирован.
#antfu #shiki #shikiji #vitepress
shikiji.netlify.app
A beautiful and powerful syntax highlighter
Release candidate готов (смена репозитория сверху слева)
К версии пакета для Vue 3 проектов и для встраивания в VitePress добавил
Просьба потестить. Eсли кто проверит работает ли на Nuxt - буду благодарен
Вижу основное применение в замене
Документация
#releasetimeline #pet
К версии пакета для Vue 3 проектов и для встраивания в VitePress добавил
Web components
версию, так что можно запускать на React или простом HTML через <release-timeline />
Просьба потестить. Eсли кто проверит работает ли на Nuxt - буду благодарен
Вижу основное применение в замене
changelog
проектов в их доках на VitePress. При создании релиза на GitHub генеришь описание, правишь его.Документация
#releasetimeline #pet
Кстати, кто не знает,
Поддержка браузерами достаточная - 96.41% (все, кроме IE)
Можно использовать
#tip #webp
webp
формат реально очень сильно уменьшает размер картинок по сравнению с jpeg
при том же визуально качестве. Попробуйте. Плюс, улучшится рейтинг на PageSpeed.Поддержка браузерами достаточная - 96.41% (все, кроме IE)
Можно использовать
jpeg
как fallback в тэге <picture>
#tip #webp
Caniuse
WebP image format | Can I use... Support tables for HTML5, CSS3, etc
"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.
3 февраля 2014 года Evan You впервые опубликовал новость о новом JavaScript фреймворке Vue.js.
10 лет спустя:
#vuejs #evanyou
10 лет спустя:
#vuejs #evanyou