diff --git a/content/7.blog/21.shiki-v1.md b/content/7.blog/21.shiki-v1.md index 4f13e4543..8491592ce 100644 --- a/content/7.blog/21.shiki-v1.md +++ b/content/7.blog/21.shiki-v1.md @@ -85,7 +85,7 @@ const cssGrammar = await import('../langs/css.mjs').then(m => m.default) Мы также воспользовались шансом улучшить API и внутреннюю архитектуру Shiki. Мы перешли от простой конкатенации строк к использованию [`hast`](https://github.com/syntax-tree/hast), создав абстрактное синтаксическое дерево (AST) для генерации выходных данных HTML. Это открывает возможность раскрытия [Transformers API](https://shiki.style/guide/transformers), чтобы позволить пользователям изменять промежуточный HAST и выполнять множество интересных интеграций, которые ранее было бы очень трудно реализовать. -Поддержка темного/светлого режима [была часто запрашиваемой функцией](https://github.com/shikijs/shiki/issues/33). Из-за статического подхода, который использует Shiki, невозможно было менять тему на лету при рендеринге. Решение в прошлом состояло в том, чтобы дважды генерировать HTML с подсветкой и переключать его видимость на основе предпочтений пользователя — это было неэффективно, так как дублировало payload или использовало [CSS переменные темы](https://github.com/shikijs/shiki/pull/212), что теряло гранулярную подсветку, для которой Shiki отлично подходит. С новой архитектурой Shikiji я сделал шаг назад, переосмыслил проблему и [придумал идею](https://github.com/shikijs/shiki/issues/33#issuecomment-1676362336) разбить общие токены и объединить несколько тем как встроенные переменные CSS, которые обеспечивают эффективный вывод, при этом согласуясь с философией Shiki. Вы можете узнать больше об этом в [документации Shiki](https://shiki.style/guide/dual-themes). +Поддержка темного/светлого режима [была часто запрашиваемой функцией](https://github.com/shikijs/shiki/issues/33). Из-за статического подхода, который использует Shiki, невозможно было менять тему на лету при рендеринге. Решение в прошлом состояло в том, чтобы дважды генерировать HTML с подсветкой и переключать его видимость на основе предпочтений пользователя — это было неэффективно, так как дублировало payload или использовало [CSS переменные темы](https://github.com/shikijs/shiki/pull/212), что теряло гранулярную подсветку, для которой Shiki отлично подходит. С новой архитектурой Shikiji я сделал шаг назад, переосмыслил проблему и [придумал идею](https://github.com/shikijs/shiki/issues/33#issuecomment-1676362336) разбить общие токены и объединить несколько тем как встроенные переменные CSS, которые обеспечивают эффективный вывод, при этом согласуясь с философией Shiki. Вы можете узнать больше об этом в [документации Shiki](https://shiki.style/guide/dual-themes). Чтобы упростить миграцию, мы также создали [слой совместимости `shikiji-compat`](https://shikiji.netlify.app/guide/compat), который использует новую основу Shikiji и предоставляет API для обратной совместимости.