用 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 的变量驱动重渲染正好对应这个需求。
上手前要准备什么
- 确认内容形态:先写清楚读者要调整哪个变量、看到什么变化。变量设计不清,组件再多也做不出可探索感。
- 准备 JavaScript 基础:至少要能写
(t) => Math.sin(t)这类表达式,并理解变量赋值会触发重渲染。 - 选发布路径:先用免费公共托管服务发布验证,再决定是否嵌入现有站点。
- 验证方法:改一次变量值,确认图表或组件随之更新;再分别测试按钮点击和输入控件两条绑定路径。
常见卡点集中在变量作用域和组件属性写法:属性值需要用反引号包裹表达式,变量名要与 [var] 声明一致,否则组件拿不到更新后的值。文档中的示例画廊可以作为对照参考,先跑通正弦波例子再改造成自己的内容。