# 1. 安装
通过单行命令将 Deno 安装到系统中(国内加速)
安装内容转载自 Deno 中文社区
# 安装最新版:
使用 Shell:
curl -fsSL https://x.deno.js.cn/install.sh | sh |
使用 PowerShell:
iwr https://x.deno.js.cn/install.ps1 -useb | iex |
# 安装某个特定版本:
使用 Shell:
curl -fsSL https://x.deno.js.cn/install.sh | sh -s v1.0.0 |
使用 PowerShell:
$v="1.0.0"; iwr https://x.deno.js.cn/install.ps1 -useb | iex |
# 使用包管理器:
使用 Scoop:
scoop install deno |
使用 Homebrew:
brew install deno |
使用 Chocolatey:
choco install deno |
# 使用多版本管理工具
使用 Yay (AUR) (deno 和 deno-bin):
# From source | |
yay -S deno | |
# Pre-compiled | |
yay -S deno-bin |
使用 asdf 和 asdf-deno:
asdf plugin-add deno https://github.com/asdf-community/asdf-deno.git | |
asdf install deno 1.0.0 | |
# Activate globally with: | |
asdf global deno 1.0.0 | |
# Activate locally in the current folder with: | |
asdf local deno 1.0.0 |
使用 Scoop:
# 安装某个特定版本的 Deno: | |
scoop install deno@1.0.0 | |
# 切换到 v1.0.0 | |
scoop reset deno@1.0.0 | |
#切换到最新版 | |
scoop reset deno |
# 2. Hello World
新建一个 demo.ts
并输入 console.log('Hello Wrold!')
;
打开 git 或 cmd,输入 deno run ./demo.ts
,就可以看到打印的结果了:
# 3. HTTP 请求
在 deno 中比较推荐使用 fetch 来发送 HTTP
请求,
const res = await fetch('http://8jsj.cn'); | |
const body = new Uint8Array(await res.arrayBuffer()); | |
await Deno.stdout.write(body); |
接收到响应之后通过 new Uint8Array()
将其转换为一个 Unit8Array 存到 body 变量中。最后一句代码则是把 body 的内容写入标准输出流 stdout。
运行 deno run demo.ts
,发现会报如下错误:
error: Uncaught (in promise) PermissionDenied: network access to "http://8jsj.cn/", run again with the --allow-net flag | |
at processResponse (core.js:224:13) | |
at Object.jsonOpAsync (core.js:242:12) | |
at async fetch (deno:op_crates/fetch/26_fetch.js:1274:29) | |
at async file:///C:/Users/JIGUANG/Desktop/demo.ts:1:13 |
这是因为 Deno 默认使用安全环境来执行代码,所以我们的请求不被允许,我们需要 --allow-net
来授权网络访问:
deno run --allow-net=8jsj.cn demo.ts |
# 4. 读取文件
对于文件的读取我们可以使用 Deno 的内置 API Deno.readFile
来进行:
const decoder = new TextDecoder("utf-8"); | |
const data = await Deno.readFile("hello.txt"); | |
console.log(decoder.decode(data)); |
同样在读取文件时我们也需要授权,我们可以使用 allow-read
:
deno run --allow-read=hello.txt demo.ts |