在前端开发中,代码高亮是一个必不可少的功能,可以使代码更易读、更易懂。而 @allenkim67/react-syntax-highlighter 就是一个提供代码高亮的 npm 包。本文将会介绍如何使用该 npm 包进行代码高亮。
安装
首先,需要在项目中安装该 npm 包:
npm install @allenkim67/react-syntax-highlighter
导入
接下来,在需要使用代码高亮的组件中,导入 SyntaxHighlighter 和样式:
import SyntaxHighlighter from "@allenkim67/react-syntax-highlighter"; import { docco } from "react-syntax-highlighter/dist/cjs/styles/hljs";
docco 是该 npm 包提供的一种样式,如果需要其他样式,可以在源码仓库中查看。
使用
在组件中使用 SyntaxHighlighter,传入代码字符串和 language 参数即可实现代码高亮。
<SyntaxHighlighter language="javascript" style={docco}> {`function sum(a, b) { return a + b; }`} </SyntaxHighlighter>
如果需要在代码中使用 HTML 标签,可以将 language 参数设置为 'html':
<SyntaxHighlighter language="html" style={docco}> {`<div> <p>Hello, world!</p> </div>`} </SyntaxHighlighter>
参数
SyntaxHighlighter 支持一些参数:
- language:需要高亮的语言,如 javascript、html 等。
- style:代码高亮的样式,如 docco、github、atom-one-light 等。
- customStyle:自定义样式。
- showLineNumbers:是否显示行数,默认为 false。
- wrapLines:是否自动折行,默认为 true。
- startingLineNumber:开始行号,默认为 1。
- lineProps:行属性,需要传入一个函数,返回一个对象。该函数用于为每行添加额外的属性,如行内样式等。
自定义样式
如果需要自定义代码高亮的样式,可以通过 customStyle 参数进行设置:
-- -------------------- ---- ------- ------------------ --------------------- ------------- -------------- ---------------- --------- -- - ---------- ------ -- - ------ - - -- --- --------------------
行属性
如果需要为每行代码添加额外的属性,可以通过 lineProps 参数进行设置:
-- -------------------- ---- ------- ------------------ --------------------- ------------- ----------------------- -- ---------- --- - - - ------ - ---------------- --------- - - - -- - - ---------- ------ -- - ------ - - -- - ------------------ ------ --------------------
以上代码中,第二行代码会被添加一个背景颜色为灰色的行内样式。
结语
本文介绍了 @allenkim67/react-syntax-highlighter 的使用方法,以下是本文总结的步骤:
- 安装 @allenkim67/react-syntax-highlighter。
- 导入 SyntaxHighlighter 和样式。
- 在组件中使用 SyntaxHighlighter,传入代码字符串和 language 参数即可实现代码高亮。
- 支持 customStyle、lineProps、showLineNumbers、wrapLines 和 startingLineNumber 等参数,可以根据需要自由设置。
相信本文可以帮助你更好地使用 @allenkim67/react-syntax-highlighter 实现代码高亮效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562d781e8991b448e0341