【问题标题】:Syntax highlighting on the server服务器上的语法高亮显示
【发布时间】:2021-03-14 16:44:00
【问题描述】:

我有要突出显示的代码块。我目前正在使用 prismjs。问题是,我正在突出显示多个代码块,并且页面需要 5 多秒才能加载到我不那么慢的 PC 上。

如果我采用 prism 代码高亮显示,加载几乎是即时的。所以我假设问题是突出显示代码。

如何在服务器上渲染代码高亮(服务器端渲染)?

我在 react 应用程序中使用 nextjs 9.5.*。更改为另一个突出显示库没有问题。

【问题讨论】:

    标签: javascript reactjs next.js server-side-rendering


    【解决方案1】:

    虽然您的问题已经 6 个月了,我想您已经知道了,但我可以推荐由 Formidable labs 创建的 prism-react-renderer。我不确定性能优势本身(它构建在 PrismJS 之上),但它支持 SSR 和 SSG(由于我的经验,使用裸 PrismJS 存在问题)。

    【讨论】:

    • 我选择了 rehype-highlight。我让它在浏览器和服务器上都可以工作,你可以在这个 PR 中看到这个例子:github.com/rehypejs/rehype-highlight/pull/14
    • 感谢您的提示,rehype-highlight 看起来很有趣(虽然在检查捆绑恐惧症时有点沉重;但我想这就是您 PR 的重点)。
    • JavaScript 和 TypeScript 大约 100kB(我认为当时的常见捆绑包大约是 90kB)。带棱镜的束有多大?您使用了多少种语言?
    • Bundlephobia 显示 rehype-highlight 为 274 Kb,prism-react-renderer 为 22 Kb,裸 Prismjs 为 6.5 Kb。但这可能不是正确的衡量标准,因为 a) 它高度依赖于每个库如何导入语言模块(我认为 PrismJS 默认情况下不需要任何模块,这就是它如此小巧的原因) b) 考虑到 SSR 或 SSG,这并不重要,因为该库不必包含在客户端包中(至少在重新水化之前)。
    • rehype-highlight 默认也不需要任何语言。要进行更仔细的比较,您可以查看 rehype-prism github.com/mapbox/rehype-prism。 rehype/unifiedjs 的好处是你可以为降价链接转换。
    猜你喜欢
    • 2016-05-19
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2010-11-26
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多