转译
有时您有一个代码块,希望将其与不同语言的版本一起显示。可能是 TypeScript 和 JavaScript,或者 Sass 和 CSS,或者您可能想要将 cURL 命令转换为不同语言的 SDK 调用。
如果您使用 React 服务器组件并且有一个转译代码的函数,您可以在组件内部调用该函数。
以下是一个示例,展示如何将 TypeScript 代码块转译为 JavaScript,然后在标签页中显示两个版本:
content.md
```tsinterface Greeter {greet(): string}function sayHello(greeter: Greeter) {console.log(greeter.greet())}```
interface Greeter {greet(): string}function sayHello(greeter: Greeter) {console.log(greeter.greet())}
Implementation
code.tsx
import { RawCode } from "codehike/code"// CodeTabs is the component from the tabs exampleimport ts from "typescript"async function Code({ codeblock }: { codeblock: RawCode }) {// 由于这是一个 RSC,我们可以在这里转译代码// (可能有更高效的方法来做这件事)const result = ts.transpileModule(codeblock.value, {compilerOptions: {module: ts.ModuleKind.CommonJS,target: ts.ScriptTarget.ESNext,},})const tsCode = {...codeblock,meta: "typescript",}const jsCode = {...codeblock,value: result.outputText,lang: "js",meta: "javascript",}return <CodeTabs tabs={[tsCode, jsCode]} />}