Observable:Markdown中可嵌入JavaScript的Notebook

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

Observable 2.0是一个开源静态站点生成器,用于构建快速、美观的数据应用程序、仪表板和报告。它可以将Markdown和JavaScript编译成交互式页面,并具有热重载服务器和反应性特性。Observable Framework在Markdown中使用JavaScript创建交互式文档,可以无缝集成JavaScript代码。它还具有数据加载器机制,可以从任何地方加载数据。与Observable Notebooks相比,Observable Framework更注重开发人员工具领域。

🔎

延伸解读

从 Notebook 到 Framework:文件格式与协作方式的转变

Observable Notebooks 使用专有的复杂文件格式,难以与 Git 等版本控制工具配合,因此 Observable 曾不得不自建版本控制和协作系统。而 Observable Framework 将文档变为单个 Markdown 文本文件,内嵌标准 JavaScript 代码块,可直接用任何文本编辑器编辑,也能在 Git 中正常检查。这一变化降低了协作与版本管理的门槛,更贴近现代开发者的工作流。

反应性保留与语法标准化

Observable Notebooks 的反应性是其核心特色,但为此发明了 viewof 等非标准 JavaScript 语法。Framework 保留了反应性——当依赖变化时单元格自动刷新,特别适合表单输入等实时交互场景,同时改用标准 JavaScript,不再需要自定义语法。这意味着开发者无需学习专有语法,现有 JavaScript 知识可直接迁移,降低了学习成本。

数据加载器:构建时缓存提升仪表盘性能

Framework 的数据加载器机制允许在构建时执行任意脚本(如 shell 命令),将数据输出保存为静态文件,并与仪表盘代码一起通过静态主机快速加载。这避免了运行时从后端请求数据导致的性能瓶颈。加载器可用任何编程语言编写,只要输出 JSON、CSV 等格式到标准输出即可,灵活且简洁,适合需要快速加载的数据应用。

开源与定位:更偏向开发者工具

Observable Notebooks 的编辑器是托管专有产品,而 Framework 完全开源,采用 ISC 许可,整个编辑栈可在本地运行。Observable 此前侧重为数据科学和分析团队提供协作工具,而 Framework 则更倾向于开发者工具领域,强调静态站点生成、热重载和部署灵活性,适合构建数据应用、仪表板和报告。

❓

Q&A

Observable 2.0 是什么?

Observable 2.0 是一个开源静态站点生成器,用于构建快速、美观的数据应用程序、仪表板和报告。它可以将 Markdown 和 JavaScript 编译成交互式页面,并具有热重载服务器和反应性特性。

Observable Framework 如何在 Markdown 中嵌入 JavaScript?

在 Markdown 中,任何标记为 js 的代码块都会在用户的浏览器中作为 JavaScript 执行。例如,使用 ```js 包裹代码,即可输出计算结果或动态内容。此外,还可以使用内联表达式如 ${new Date(now)} 来嵌入 JavaScript。

Observable Framework 的数据加载器机制是什么?

数据加载器是一个可以用任何编程语言编写的脚本。在构建时,Framework 会执行该脚本,并将输出保存到文件中。这些文件可以与仪表盘代码一起通过静态主机快速加载。数据加载器可以从任何地方加载数据,并输出 JSON、CSV 等格式。

Observable Framework 与 Observable Notebooks 的主要区别是什么?

Observable Framework 使用单个文本文件(Markdown 加嵌入式 JavaScript),格式简单,支持 Git 和任何文本编辑器;完全开源(ISC 许可);使用标准 JavaScript,没有自定义语法。而 Observable Notebooks 使用专有文件格式和自定义语法(如 viewof),编辑器是专有产品,且不易与 Git 等工具配合。

Observable Framework 的反应性特性有什么作用?

反应性特性允许当单元格所依赖的其他单元格发生变化时,单元格自动刷新。这在处理表单输入时特别有用,可以轻松为文档添加实时交互性。例如,输入项的值变化时,引用它的文档部分会自动更新。

Observable Framework 如何提升仪表盘性能?

Framework 鼓励在部署时为仪表盘构建数据,将数据捆绑到静态文件中,其中只包含仪表盘所需的数据子集。这些文件可以通过静态主机以闪电般的速度加载,从而提升性能。

🏷️

标签

➡️

继续阅读