InfoQDeno 1.0 即将发布,你需要知道的都在这里了


InfoQDeno 1.0 即将发布,你需要知道的都在这里了
本文插图
作者 | David Else
译者 | 王强
策划 | 小智
将近两年过去了 , 漫长的等待已接近尾声 。 Deno 1.0 的 API 已被冻结 , 离 5 月 13 日的正式发布只剩几十个小时了 。
Deno 肯定会因为自己著名的创建者和富有前瞻性的理念 , 成为 JavaScript 领域近期最令人兴奋和最具争议性的软件产品 。
Deno 是一款通用的 JavaScript/TypeScript 编程环境 。 它汇集了许多最出色的开源技术 , 并使用一个很小的可执行文件提供了全面的解决方案 。
Deno 由 Ryan Dahl 创建 , 他最出名的头衔是 Node.js 的幕后策划者 。 Deno 充分利用了自 2009 年 Node.js 发布以来不断加强的 JavaScript 特性 。 它还解决了 Ryan 在他的“Node.js 令我感到遗憾的 10 件事”中谈到的设计缺陷 。 有些人称其为 Node.js 的续作 , 尽管作者本人并未提出这种主张 。
https://www.youtube.com/watch?v=M3BM9TB-8yA
与用 C++ 编写的 Node.js 不同 , Deno 是用 Rust 编写的 。 它建立在 Tokio 平台之上 , 并且像 Node.js 一样使用 V8 引擎执行 JavaScript 代码 。 它的一项出众特性是内置了 TypeScript 。 尽管它仍需要编译为 JavaScript 才能运行 , 但这是在内部完成的 , 因此对用户来说 TypeScript 的行为就好像它是原生支持的一样 。
1入门
要下载 Deno , 请按照首页上的说明操作 。 要更新到将来的版本 , 请使用 deno upgrade 命令 。
要获得关于 Deno 子命令的帮助 , 请使用以下任一命令 。
获取摘要:deno [subcommand] -h
获取详细信息:deno [subcommand] --help
在这篇指南中 , 我们将介绍 Deno 1.0 所提供的所有杀手级功能 , 并提供如何以最新语法使用它们的示例 。 我会尽可能使用 TypeScript , 等效的 JavaScript 方法大家应该都能看出来 。
我相信 , 看完这篇文章后你会爱上 Deno 的 。 这份指南应该能为你提供入门 Deno 所需的一切内容 。
安全性
默认情况下 , Deno 是安全的 。 相比之下 , Node.js 拥有对文件系统和网络的完全访问权限 。
要在没有权限的情况下运行程序 , 请使用:
deno run file-needing-to-run-a-subprocess.ts
如果代码需要权限设置 , 则会提醒你 。
error: Uncaught PermissionDenied: access to run a subprocess, run again with the --allow-run flag
Deno 使用命令行选项来显式许可访问系统的各个部分 。 最常用的包括:
环境访问
网络访问
文件系统读 / 写访问
运行一个子进程
要查看权限示例的完整列表 , 请输入 deno run -h 。
这里的最佳实践是在 read、write 和 net 上使用权限白名单 。 这样你就可以更清楚地了解 Deno 被允许访问哪些内容 。 例如 , 要允许 Deno 在 /etc 目录中只读文件 , 请使用:
deno --allow-read=/etc
使用权限的快捷方式
你可能很快就会厌倦每次运行应用程序时都要显式启用权限的操作 。 要解决这个问题 , 你可以采用以下任一种方法 。
允许所有权限
你可以使用 --allow-all 或其快捷方式 -A 启用所有权限 。 我不建议这样做 , 因为它抹除了权限控制所带来的安全性优势 。
制作一个批处理脚本
为运行程序所需的最小权限创建一个 bash 脚本 。
#!/Bin/Bash
// Allow running subprocesses and file system write accessdeno run --allow-run --allow-write mod.ts
这样做的缺点是你可能需要好几个脚本 , 分别用于运行、测试和打包场景 。
使用任务运行器
你可以使用 GNU 工具 make 创建一个带有一组 Deno 命令的文件来处理权限 。 你还可以使用针对 Deno 的版本 Drake。


推荐阅读