用 Idyll 可以制作哪些交互式内容?

更新时间

Idyll 适合制作可探索式解释(explorable explanations)、数据驱动故事,以及给博客或内容管理系统增加交互性的页面。它既能生成独立网页,也能嵌入已有页面。它的写法从 Markdown 的基本思路出发,文本直接写,需要交互时再用特殊语法嵌入 JavaScript 和组件;每个标签对应一个 React 组件,组件接收属性,属性可以是响应式变量或表达式,变量更新后 Idyll 负责重新渲染。因此,判断一个内容点子是否适合 Idyll,关键看它是否需要“文字叙述 + 可调参数 + 即时图形反馈”的组合。

三类典型内容

可探索式解释

读者一边读文字,一边通过按钮、滑块改变图形或数据,自己“试出”结论。Idyll 文档给出的正弦波图表就是最小例子:先用 [Chart ... /] 画一条静态曲线,再用变量把函数和定义域参数化,最后把变量绑到按钮点击或标准输入控件上。

[var name:"func" value:`Math.sin` /]
[var name:"domainStart" value:0 /]
[var name:"domainEnd" value:`2 * Math.PI` /]

[Chart equation:`(t) => func(t)` domain:`[domainStart, domainEnd]` samplePoints:1000 /]

[Button onClick:`func = Math.sin`]sin[/Button]
[Button onClick:`func = Math.cos`]cos[/Button]

这段代码的输入是变量声明和组件标签,动作是点击按钮改写 func,预期结果是图表按新函数重绘。同样的变量也可以绑定到输入控件,让读者直接调整定义域起止值。

数据驱动故事

把叙述文字和图表、交互控件穿插在同一文档里,读者滚动阅读时能操作数据视图。Idyll 兼容 D3、P5 等图形库,也支持 npm 上大多数 JavaScript 库,所以常规的图表绘制和数据可视化库可以沿用。适合的场景例如:一篇解释抽样误差的文章,让读者拖动样本量看分布变化;或一篇讲增长曲线的文章,让读者调整增长率观察曲线形态。

博客与 CMS 中的交互增强

Idyll 可以生成独立网页,也可以嵌入现有页面,因此不必整站迁移。已有博客里想加一个可交互图表或小演示,可以只把这一块做成 Idyll 内容嵌入。内置主题可直接选用,也可以提供自定义 CSS。

能力边界与选择条件

维度 情况 对你的含义
文本写作 沿用 Markdown 式写法,直接写正文 写作门槛低,不需要先学模板语法
交互逻辑 用特殊语法内嵌 JavaScript,标签对应 React 组件 需要能读写少量 JavaScript 和组件属性
图形能力 内置 Chart 等组件,兼容 D3、P5 及多数 npm 库 常规图表和可视化基本够用
发布方式 可生成独立网页或嵌入现有页面;提供免费公共托管服务 想快速上线可以先走托管,正式站点再考虑嵌入
样式 内置主题或自定义 CSS 对视觉有要求时需要自己写样式

如果你的内容主要是静态长文、不需要读者调参数看反馈,用普通 Markdown 更省事;如果核心体验是“读者动手改、页面立刻变”,Idyll 的变量驱动重渲染正好对应这个需求。

上手前要准备什么

  1. 确认内容形态:先写清楚读者要调整哪个变量、看到什么变化。变量设计不清,组件再多也做不出可探索感。
  2. 准备 JavaScript 基础:至少要能写 (t) => Math.sin(t) 这类表达式,并理解变量赋值会触发重渲染。
  3. 选发布路径:先用免费公共托管服务发布验证,再决定是否嵌入现有站点。
  4. 验证方法:改一次变量值,确认图表或组件随之更新;再分别测试按钮点击和输入控件两条绑定路径。

常见卡点集中在变量作用域和组件属性写法:属性值需要用反引号包裹表达式,变量名要与 [var] 声明一致,否则组件拿不到更新后的值。文档中的示例画廊可以作为对照参考,先跑通正弦波例子再改造成自己的内容。