从例子开始学习 Deno
文章目录
Deno 算是一个新的 TypeScript 运行时,个人简单看了一下,感觉还可以。用来简单写一些东西还是很方便的。但网络上 Deno 相关的教程都很老了, Deno 都出正式了,但相关的教程大多还是尝鲜,所以找例子的时候遇到了很大的问题。
建议到官方的 Example 上去找。
HTTP Server 的例子
Hello World 级别的例子,但是由于版本变化,所以网上的很多例子跑不起来。
|
|
服务会跑在 8000 端口。可以设置成别的端口。
为了防止因为版本变化而导致脚本失效,请标明版本。
|
|
官方的例子还有两个,一个是路由的例子,一个是 Stream 的例子。
|
|
Response
和 Response
是 fetch
的。是的, Deno 内置实现了 fetch
。
|
|
Deno 内置了很多类型,且不需要像 Node 一样自己再 require
。
这段脚本会一直往客户端写入固定格式的文字。
需要注意的是,以上脚本运行都需要以 deno run --alow-net <script name>
的格式运行。 Deno 严格限制了脚本在运行时的权限,以增强安全性。后面还有一些脚本需要打开对应的权限,嫌麻烦可以使用 --allow-all
打开全部权限。
输入提示的例子
|
|
alert
、 confirm
、 prompt
等 API 原本是浏览器所有的,但 Deno 为了保持浏览器和 CLI 下一致性,于是实现了对应的接口。三者可以很方便的实现输入,比 Node 要简单许多。
Deno 除了以上三者,还有 window
、 location
等。
获取环境变量
|
|
Deno 把主要的 API 都放在了 Deno
对象里,基本上不需要像 Node 一样要额外引入。
env
不同于 Node 的 process.env
,它是一个对象,可以进行 OOP ,比 Node 进行了更好的封装。
依赖管理
|
|
|
|
我觉得这个算是 Deno 的一个毛病吧! import uri 虽然没有 node_modules 了,但同时也使得依赖管理变得麻烦了,毕竟如果要改版本,就要对所有的 uri 进行替换,问题会很大。
采用 deps.ts
基本上就是为了处理这个问题,把所有依赖集中在一起管理,我觉得有点变相 package.json 的意思,而且这个依赖路径写起来也挺麻烦的。
移动/重命名文件
|
|
涉及到文件读写权限问题,需要加 --alow-read
和 --allow-write
参数。
Deno 把文件操作也集成到了 Deno
对象内,不用像 Node 一样要额外引入 fs
。同时 Deno 支持 Top-Level await 。
fetch
|
|
涉及到网络权限问题,需要 --alow-net
参数。
这里主要展示了 Deno 对 fetch
支持。
结尾
除了 API 之类的不同, Deno 还提供了更多的工具,比如 lsp 、 format 、 lint 等,而且 Deno 才刚刚起步,未来还很难说。不过目前 Deno 还缺少杀手级的应用,如果有的话,确实能大放异彩。
文章作者 bigshans
上次更新 2022-04-14