主要观点:在 Val Town 上用 Val Town 实现部分功能,通过使用 Deno 的 Web Worker 和相关权限来安全执行不受信任的代码,包括设置 Web 服务器在 Worker 中处理 HTTP 请求,并创建了一个简单的 UI 来接受用户代码并存储在 SQLite 数据库中,还提出了一些可进一步实现的功能。
关键信息:
- 用
import动态加载用户代码危险,用户代码可访问系统内存和权限。 - 使用 Web Worker 可隔离用户代码,通过
workerEval函数处理代码,但存在消息传递限制,如不能直接传递Request对象。 - 通过在 Worker 中设置服务器
serveRequest函数来处理请求,在 Worker 代码中处理后续交换。 - 在 Townie 中创建 UI 接受用户代码并存储,实现了一些简单功能,如托管 TLDraw、构建 React Playground 等。
重要细节:
- 示例代码展示了如何用不同方式处理用户代码和请求,如
export default (req: Request) => Response.json("I work!")等。 - 提到 Val Town 最初叫“Eval Town”,后因代码块叫“vals”而缩短。
- 介绍了 Worker 的权限设置,如
{net: false}防止代码进行 HTTP 请求。 - 给出了相关代码的链接,如
https://www.val.town/v/maxm/VTTnosecurity等用于具体代码查看。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。