代码示例
这些是您可以使用 Code Hike 构建的代码块组件示例。
您可以在每个示例页面中找到说明和实现。请随意复制、粘贴、修改和组合它们,为您的项目创建完美的代码块。
标注
在代码块内添加标注。
```jsconst lorem = ipsum(dolor, sit)// !callout[/amet/] This is a calloutconst [amet, consectetur] = [0, 0]lorem.adipiscing((sed, elit) => {if (sed) {amet += elit}})```
const lorem = ipsum(dolor, sit)const [amet, consectetur] = [0, 0]This is a calloutlorem.adipiscing((sed, elit) => {if (sed) {amet += elit}})
See 标注 implementation.
类名
为代码片段添加类名。
```jsfunction lorem(ipsum, dolor = 1) {// !className line-throughconst sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)// !className[/sit/] bg-red-700 rounded-lg px-1return sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 类名 implementation.
代码提及
悬停文本时高亮相应的代码。
<HoverContainer>The [base case](hover:one) returns 1.```cppint factorial(int n) {if (n == 0) {// !hover onereturn 1;} else {// !hover tworeturn n * factorial(n - 1);}}```The [recursive case](hover:two) multiplies something.</HoverContainer>
The base case returns 1.
int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}
The recursive case multiplies something.
悬停提及内容
See 代码提及 implementation.
收起
折叠和展开代码块。
```js// !collapse(1:4)function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}// !collapse(1:4) collapsedfunction ipsum(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}}
点击函数签名来收起/展开函数内容
See 收起 implementation.
复制按钮
为代码块添加复制按钮。
```jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 复制按钮 implementation.
差异
显示插入和删除的行。
```jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sit// !diff -dolor = ipsum - sit// !diff +dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sit-dolor = ipsum - sit+dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 差异 implementation.
文件名
在代码块中显示标题或文件名。
```js index.jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 文件名 implementation.
焦点
聚焦代码块。使未聚焦的代码变暗。确保在溢出时聚焦的代码可见。
当您想要根据用户的交互改变代码块焦点时很有用。
```jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}function ipsum(ipsum, dolor = 1) {return dolor}// !focus(1:5)function dolor(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}function ipsum(ipsum, dolor = 1) {return dolor}function dolor(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 焦点 implementation.
折叠
折叠内联内容。
```jsx// !fold[/className="(.*?)"/gm]function Foo() {return (<div className="bg-red-200 opacity-50"><span className="block">hey</span></div>)}```
function Foo() {return (<div className=""><span className="">hey</span></div>)}
See 折叠 implementation.
脚注
为您的代码添加脚注。
```rb# !ref Library importrequire 'sinatra'# !ref URL mappingget '/hi' do"Hello World!"end```
require 'sinatra'get '/hi' do"Hello World!"end
- Library import
- URL mapping
See 脚注 implementation.
语言切换器
当您需要在代码块中切换语言时,添加一个语言选择器。
<CodeSwitcher>```java !!public class Main {public static int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}}``````cpp !!int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}``````scala !!object Main {def factorial(n: Int): Int = {if (n == 0) {return 1} else {return n * factorial(n - 1)}}}``````py !!def factorial(n):if n == 0:return 1else:return n * factorial(n - 1)``````matlab !!function result = factorial(n)if n == 0result = 1;elseresult = n * factorial(n - 1);endend``````js !!function factorial(n) {if (n === 0) {return 1} else {return n * factorial(n - 1)}}``````kotlin !!fun factorial(n: Int): Int {return if (n == 0) {1} else {n * factorial(n - 1)}}``````go !!func factorial(n int) int {if n == 0 {return 1} else {return n * factorial(n - 1)}}``````swift !!func factorial(n: Int) -> Int {if n == 0 {return 1} else {return n * factorial(n: n - 1)}}``````rust !!fn factorial(n: i32) -> i32 {if n == 0 {return 1;} else {return n * factorial(n - 1);}}``````fsharp !!let rec factorial n =if n = 0 then1elsen * factorial (n - 1)```</CodeSwitcher>
public class Main {public static int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}}
从下拉菜单中选择不同的语言来查看代码块的变化。
See 语言切换器 implementation.
行号
显示行号。
```jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : 1dolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}```
1function lorem(ipsum, dolor = 1) {2const sit = ipsum == null ? 0 : 13dolor = sit - amet(dolor)4return sit ? consectetur(ipsum) : []5}
See 行号 implementation.
链接
为代码片段添加链接。
```jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)// !link[/ipsum/] https://example.comreturn sit ? consectetur(ipsum) : []}```
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)}
See 链接 implementation.
标记
高亮显示行。
```jsfunction lorem(ipsum, dolor = 1) {// !markreturn dolor}function ipsum(lorem, dolor = 1) {// !mark(1:2) goldconst sit = lorem == null ? 0 : lorem.sitdolor = sit - amet(dolor)// !mark[/sit/] pinkreturn sit ? consectetur(lorem) : []}```
function lorem(ipsum, dolor = 1) {return dolor}function ipsum(lorem, dolor = 1) {const sit = lorem == null ? 0 : lorem.sitdolor = sit - amet(dolor)return sit ? consectetur(lorem) : []}
See 标记 implementation.
标签页
在标签页中显示多个代码块。
<CodeWithTabs>```js !!tabs main.jsfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}``````css !!tabs styles.cssbody {margin: 0;padding: 0;}```</CodeWithTabs>
function lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? consectetur(ipsum) : []}
See 标签页 implementation.
标记过渡
在标记级别为代码块之间的过渡添加动画效果。
```scalaobject Main {def factorial(n: Int): Int = {if (n == 0) {return 1} else {return n * factorial(n - 1)}}}``````pythondef factorial(n):if n == 0:return 1else:return n * factorial(n - 1)```
object Main {def factorial(n: Int): Int = {if (n == 0) {return 1} else {return n * factorial(n - 1)}}}
See 标记过渡 implementation.
工具提示
一个工具提示注释,其中工具提示内容可以是任何 MDX 内容。
<CodeWithTooltips>```js !code// !tooltip[/lorem/] descriptionfunction lorem(ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)// !tooltip[/consectetur/] inspectreturn sit ? consectetur(ipsum) : []}```## !!tooltips description### Hello worldLorem ipsum **dolor** sit amet `consectetur`.Adipiscing elit _sed_ do eiusmod.## !!tooltips inspect```jsfunction consectetur(ipsum) {const { a, b } = ipsumreturn a + b}```</CodeWithTooltips>
function (ipsum, dolor = 1) {const sit = ipsum == null ? 0 : ipsum.sitdolor = sit - amet(dolor)return sit ? (ipsum) : []}
悬停(或聚焦)lorem 和 consectetur 标记以查看相应的工具提示。
See 工具提示 implementation.
转译
有时您有一个代码块,希望将其与不同语言的版本一起显示。可能是 TypeScript 和 JavaScript,或者 Sass 和 CSS,或者您可能想要将 cURL 命令转换为不同语言的 SDK 调用。
如果您使用 React 服务器组件并且有一个转译代码的函数,您可以在组件内部调用该函数。
以下是一个示例,展示如何将 TypeScript 代码块转译为 JavaScript,然后在标签页中显示两个版本:
```tsinterface Greeter {greet(): string}function sayHello(greeter: Greeter) {console.log(greeter.greet())}```
interface Greeter {greet(): string}function sayHello(greeter: Greeter) {console.log(greeter.greet())}
See 转译 implementation.
TypeScript
使用 TypeScript Twoslash 在您的代码块中包含 TypeScript 编译器的信息。
```tsconst hi = "Hello"const msg = `${hi}, world`// ^?// @errors: 2588msg = 123```
const = "Hello"const = `${}, world`const msg: "Hello, world"= 123Cannot assign to 'msg' because it is a constant.
自动换行
换行以避免水平溢出。
```jsfunction lorem(ipsum, dolor, sit) {ipsum.amet({ consectetur: [0, 1] },{adipiscing: elit.sed,eiusmod: "lorem ipsum dolor sit amet",sit,},)}```
See 自动换行 implementation.