Skip to content

Commit

Permalink
Fix content/7.blog/21.shiki-v1.md
Browse files Browse the repository at this point in the history
Co-authored-by: Alex Peshkov <[email protected]>
  • Loading branch information
JonikUl and mnenie authored Jul 11, 2024
1 parent bcc5597 commit adc6d9f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion content/7.blog/21.shiki-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 для обратной совместимости.

Expand Down

0 comments on commit adc6d9f

Please sign in to comment.