Как сделать человеко-понятные 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
Нашел интересную штуку - esm.sh
Позволяет работать с
Пример использования:
index.html:
mountRT:
После чего
При импорте пакета
#lib
Позволяет работать с
npm
пакетами в браузере. Является Декоратором
для npmjs.org
пакетовПример использования:
index.html:
<script type="module">
import { mountRT } from "https://esm.sh/release-timeline";
mountRT();
</script>
mountRT:
function mountRT() {
const app = createApp(App);
app.mount("#release-timeline");
}
После чего
release-timeline
как микрофронтенд монтируется на указанный div
При импорте пакета
release-timeline
автоматически будут загружены все его зависимости, включая Vue
.#lib
esm.sh
ESM>CDN
A fast, smart & global CDN for modern(es2015+) web development.
Может кто не знал. Реальные размеры стран.
Некоторые из наиболее распространенных картографических проекций включают:
- Равновеликая проекция — сохраняет относительные размеры стран, но искажает их форму.
- Равноугольная проекция — сохраняет форму стран, но искажает их размеры.
- Компромиссная проекция — пытается найти баланс между сохранением формы и размеров стран.
Выбор картографической проекции зависит от конкретной цели карты. Например, равновеликая проекция часто используется для карт мира, на которых важно показать относительные размеры стран. Равноугольная проекция (или проекция Меркатора) часто используется для навигационных карт, на которых важно сохранить точную форму побережий и других географических объектов. В том числе, на известной проекции земного шара выше
#interesting
Некоторые из наиболее распространенных картографических проекций включают:
- Равновеликая проекция — сохраняет относительные размеры стран, но искажает их форму.
- Равноугольная проекция — сохраняет форму стран, но искажает их размеры.
- Компромиссная проекция — пытается найти баланс между сохранением формы и размеров стран.
Выбор картографической проекции зависит от конкретной цели карты. Например, равновеликая проекция часто используется для карт мира, на которых важно показать относительные размеры стран. Равноугольная проекция (или проекция Меркатора) часто используется для навигационных карт, на которых важно сохранить точную форму побережий и других географических объектов. В том числе, на известной проекции земного шара выше
#interesting