Idyll 是什么网站?

更新时间

Idyll 是一个用于创建交互式文档的标记语言,idyll-lang.org 是它的官方文档站。它适合三类任务:制作“可探索式解释”(读者能操作变量、观察结果变化的说明页)、撰写数据驱动的故事,以及给博客或内容管理系统增加交互性。产出物既可以是独立网页,也可以嵌入现有页面。文档站说明它提供内置主题与自定义 CSS,并提供免费公共托管服务,可将作品发布到网上。

它和 Markdown 的关系

Idyll 从 Markdown 的基本原则出发,沿用大量相同语法:想让文字出现在输出里,直接写就行。区别在于它允许把 JavaScript 嵌入文本,用特殊语法把变量、表达式和组件接进正文。文档给出的组件写法形如:

Lorem ipsum...
[ComponentName property:variableValue onEvent:`variableValue = 5` /]
Lorem ipsum...

每个标签对应一个 React 组件,组件接收传入的属性。属性可以是响应式变量或表达式,Idyll 负责监听变量更新并重新渲染组件。它兼容 D3、P5 等图形库,也能支持 npm 上可用的大部分 JavaScript 库。

一个具体例子:从静态图到可交互图

文档用图表组件演示了交互是怎么来的。先是一个静态正弦波:

[Chart equation:`(t) => Math.sin(t)` domain:`[0, 2 * Math.PI]` samplePoints:1000 /]

接着用变量把输出参数化,让函数和定义域都可变:

[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 /]

变量再绑定到用户操作上,图表就会随点击或输入变化。文档示例中,按钮通过 onClick 把 func 设为 Math.sin 或 Math.cos;输入控件则绑定到定义域的起止值(示例里出现“Update Domain Start / End”的输入项)。这就是“可探索式解释”的最小结构:文本负责叙述,变量负责状态,组件负责呈现。

适合谁、什么时候选它

你的需求 Idyll 是否合适 说明
写带交互的说明文档、教学页 合适 正文接近 Markdown,交互用标签和变量表达
做数据驱动的叙事 合适 可接 D3、P5 等库,图表可随变量更新
给现有博客/CMS 加交互 可考虑 支持嵌入现有页面,也支持生成独立网页
只想写纯静态文章 未必需要 不涉及交互时,普通 Markdown 工具更轻
需要现成主题快速出样式 可考虑 有内置主题,也支持自定义 CSS

选择前值得确认两点:你的内容是否真的需要“读者操作—结果变化”这一层,如果不需要,引入组件和变量的成本就不划算;以及你是否接受用标签语法写交互,而不是在图形界面里拖拽配置。

上手路径与验证方法

文档站给出的路径是:先按 Markdown 习惯写正文,再在需要交互的位置插入组件标签,用 var 定义状态,把状态绑到组件属性或按钮、输入控件的事件上。发布环节,文档提到免费公共托管服务,可把作品发布到网上;具体入口和操作步骤以站内文档为准。

验证是否跑通,可以按文档示例做一次最小闭环:写一个静态 Chart,确认能渲染;改成用 var 提供函数和定义域,确认图表随变量值变化;再加一个按钮修改该变量,确认点击后图表更新。三步都成立,说明变量监听与重渲染这条链路是通的。常见卡点是属性值里的表达式写法(反引号包裹)和事件绑定(onClick 内为赋值表达式),照示例格式核对通常能定位问题。

更多组件用法和完整示例,可继续阅读 idyll-lang.org 的文档正文与示例画廊。