跳到正文
Vellum打开 Vellum

直接在页面中运行 25 种语言的代码。

页面中带围栏的代码块会变成可以运行的单元格。代码仍是纯 Markdown;输出、表格和图表随页面保存。一切都在你设备上的沙盒中运行。

一个 Vellum 页面:一个 JavaScript 单元格共享出一张表格,一个 SQL 单元格对它求和,旁边是页面的 Markdown。
一个 Vellum 页面:一个 JavaScript 单元格共享出一张表格,一个 SQL 单元格对它求和,旁边是页面的 Markdown。

住在页面里的代码

像在 GitHub 或 Obsidian 中那样,写一个注明语言的围栏代码块。在阅读视图或分屏视图中,它会变成带“运行”按钮的单元格。代码保留在页面的 Markdown 中,因此页面始终便于迁移;单元格打印的内容、返回的表格和绘制的图表都随页面保存,重新打开时依然都在。

```python
import pandas as pd
runs = pd.DataFrame({"month": ["Jan", "Feb", "Mar"], "km": [42, 51, 63]})
runs.describe()
```

25 种语言,都在你的设备上

JavaScript, TypeScript, Python, SQL, Lua, Shell (emulated), Ruby, PHP, R, Perl, Go, Rust, C, C++, OCaml, Haskell, Zig, C#, F#, Java, Clojure, Elixir, Erlang, Scheme, Prolog。

每种语言在你第一次运行时下载(从 Lua 或 JavaScript 的几百 KB,到 Rust 的几十 MB 不等),之后即可离线使用。“设置 → 代码运行时”可以提前把它们下载好,方便在飞机和火车上使用。

代码在沙盒框架中运行,每个页面的每种语言各有一个 worker。它无法读取应用、你的其他页面或网络:除非你为该页面允许联网,否则单元格无法访问网络。

像笔记本一样工作

在语言之间共享数据

同一页面中的单元格可以跨语言互相传递数据:在一个单元格里用 share(name, value),在另一个里用 use(name)。表格传过去仍是表格:从 JavaScript 共享行数据,再用 SQL 查询。

```js
share("runs", [{ month: "Jan", n: 4 }, { month: "Feb", n: 7 }])
```

```sql
select sum(n) as total from runs;
```

输入、文件和软件包

在 Vellum 中运行你的第一个代码单元格

  1. 打开一个页面

    新建一个页面,或打开任何已有的页面。

  2. 写一个代码块

    输入三个反引号和语言名称,例如 ```python,然后写代码,最后再输入三个反引号结束。

  3. 运行它

    切换到阅读视图或分屏视图,在单元格上按“运行”(或在单元格编辑器中按 Shift+Enter)。第一次运行时会下载该语言。

  4. 保留结果

    输出会随页面保存。打开单元格菜单,可以使用“全部运行”“变量”和其他笔记本命令。

在应用中

常见问题

它能取代 Jupyter 吗?

对很多笔记本来说可以:它能打开和导出 .ipynb 文件并保留输出。它在浏览器中运行各语言的 WebAssembly 版本,所以繁重的计算、GPU 和部分原生软件包仍然需要 Jupyter。请参阅 Vellum 与 Jupyter。

我的代码能访问互联网吗?

除非你允许,否则不能。单元格尝试访问网络时会先询问(仅此一次、此页面始终允许或从不),每个请求都会记录在单元格下方。

可以离线使用吗?

可以。每种语言只在你第一次使用时下载一次,之后保存在你的设备上。你也可以在设置中提前下载全部语言。