OJS 浏览器端交互演示

本页演示第三种创作形态:OJS(Observable JavaScript,一种响应式笔记本语言)单元 在浏览器端运行——拖动下方滑块,曲线立即重绘,全程不请求任何后端。

滑块调参的正弦曲线

振幅与频率都由滑块控制,改动任意一个,图立即响应:

viewof amp = Inputs.range([0.5, 3], {value: 1.5, step: 0.1, label: "振幅 a"})
viewof freq = Inputs.range([0.5, 5], {value: 2.0, step: 0.1, label: "频率 b"})
xs = d3.range(0, Math.PI * 2 + 1e-9, 0.02)
Plot.plot({
  width: 600,
  height: 320,
  x: {label: "x (弧度)"},
  y: {label: "y"},
  marks: [
    Plot.ruleY([0]),
    Plot.line(xs.map((x) => ({x: x, y: amp * Math.sin(freq * x)})),
              {stroke: "#d97706", strokeWidth: 2.5})
  ]
})

当前参数下曲线峰值 = (本行同样是响应式的:拖动滑块,数字跟着变)。

为什么这是「响应式」

滑块(viewof 单元)暴露的值一旦变化,引用它的每个单元——曲线图、本页的峰值 数字——都会被 OJS 运行时自动重新求值。页面本身是纯静态文件,交互完全发生在 你的浏览器里。