使用 VS Code 开发 Deno

本文不是一篇 Deno 开发的完整教程,在阅读本文前你应该已经听说过 Deno 并且了解 Deno 的相关概念。

1. 安装

Deno 提供了多种安装方式。

如果你使用 Linux/Mac 系统,可以通过 shell 安装:

curl -fsSL https://deno.land/x/install/install.sh | sh

如果你使用 Windows 系统,可以通过 PowerShell 安装:

iwr https://deno.land/x/install/install.ps1 -useb | iex

你还可以通过其他包管理工具来安装,比如 scoop、brew、choco 等。Deno 是使用 rust 开发的,因此如果你是 rust 开发者,你甚至可以通过 cargo install deno来安装。

安装完成后运行:

deno https://deno.land/std/examples/welcome.ts

如果能够正常输出 Welcome to Deno ???? 那就说明 Deno 已经正确安装了。

2. 配置

大部分开发者都是使用 VS Code 进行开发,但是 VS Code 并没有提供开箱即用的 Deno 支持,我们需要先安装支持 Deno 的 vscode-deno 扩展。

安装完成后右下角会出现 Deno 的指示区,后面显示当前安装的 Deno 版本,鼠标滑过会显示更详细的版本。

使用 VS Code 开发 Deno_第1张图片

新建一个 .ts 文件,当我们输入 Deno.之后,插件可以自动提示函数、参数、类型等。

使用 VS Code 开发 Deno_第2张图片

3. 开发

我们先按照官方教程写一个简单的例子:一个 cat 程序。(PS:这个程序和猫没有任何关系,是 linux 的 cat 命令)

新建 cat.ts 文件,输入:

for (let i = 0; i < Deno.args.length; i++) {
  let filename = Deno.args[i];
  let file = await Deno.open(filename);
  await Deno.copy(Deno.stdout, file);
  file.close();
}

当你输入完这几行代码后,VS Code 会在 await处标红,我们可以直接忽略这个警告。vscode-deno 扩展也正在尝试解决这个问题。

如果你觉得这个警告太碍眼,可以通过手动添加一行 export {};来解决这个问题,这 TypeScript 会把这个文件当作 module 处理。

4. 运行

我们现在可以使用 deno 来运行刚刚写的 .ts 文件:

deno cat.ts

没有任何输出。因为 cat 的功能是连接 N 个多件并输出,所以这个程序还要传入 1-n 个参数。那我们试着让这个程序输出自己,我们把 cat.ts 作为第 0 个参数传入:

deno cat.ts cat.ts

直接抛出了异常:

error: Uncaught PermissionDenied: read access to "/Users/justjavac/deno/cat.ts", run again with the  --allow-read flag

因为 Deno 默认是沙箱安全的,除非用户运行的时候显式指定了 --allow-read参数,否则 deno 程序无法读取文件。

我们添加参数后再次运行:

deno --allow-read cat.ts cat.ts

此时我们可以看到正确的输出。

5. 说明

deno cat.ts 是 deno run cat.ts的缩写形式。完整形式为:

deno run [OPTIONS] ...

OPTIONS 是传递给 deno 的参数,除了前面的 --allow-read外,还有一些常用的:

  • --allow-run :允许创建子程序

  • --allow-net:允许访问网络

  • --allow-env:允许访问环境变量

  • --allow-all:允许所有

除了权限相关的参数外,还有其他的参数。可以通过运行 deno run -h查看所有参数。

6. 总结

这是本专栏第一篇文章,本文的目的是让开发者一览 Deno 的功能。如果你对 Deno 感兴趣可以点击左下角的阅读原文来关注我们的知乎专栏[Deno 开发者社区]。

7. 相关阅读

  • 喜迎 Deno 首个正式版,我要招几个入室弟子,共建 Deno 生态

  • 适用于 Deno 的多版本管理工具 dvm 发布

  • deno 的 Windows 平台非官方先行版

  • Deno 兼容浏览器具体指的是什么?

  • Protobuf 作者不建议在 Deno 中使用 Protobuf

  • Deno 并不是下一代 Node.js

你可能感兴趣的:(使用 VS Code 开发 Deno)