Deno 是 V8 上的安全 TypeScript 运行时。
无 package.json (去中心化)、npm,不追求兼容 Node
采用Rust编写(最初使用Go)
支持 TypeScript 开箱即用,使用 V8 6.8.275.3 引擎
Modern JS, ES Modules ,标准库 ,发生未捕捉错误时自动终止运行
支持 top-level 的 await
旨在兼容浏览器API
可以作为库来引入,以轻松构建自己的 JavaScript runtime
通过 URL 方式引入依赖而非通过本地模块,并在第一次运行的时候进行加载和缓存
可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;
支持执行wasm二进制文件
安装
macOS 和 Linux 系统上使用 shell:1
curl -fsSL https://deno.land/x/install/install.sh | sh
Windows 系统上使用 PowerShell:1
wr https://deno.land/x/install/install.ps1 -useb | iex
国内用户推荐使用 denocn/deno_install 提供的安装器来安装。用法和官方一样。
macOS 和 Linux 系统上使用 shell:1
curl -fsSL https://x.deno.js.cn/install.sh | sh\
Windows 系统上使用 PowerShell:1
iwr https://x.deno.js.cn/install.ps1 -useb -outf install.ps1; .\install.ps1
Windows系统上iwr安装如果报错可以执行这个命令1
2Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr https://x.deno.js.cn/install.ps1 -useb -outf install.ps1; .\install.ps1
测试:1
2
3
4PS C:\Users\demo> deno --version deno 1.1.1
deno 1.1.1
v8 8.5.104
typescript 3.9.2
参数
必须使用参数,显式打开权限才可以。1
2
3
4--allow-read:打开读权限,可以指定可读的目录,比如--allow-read=/temp。
--allow-write:打开写权限。
--allow-net=google.com:允许网络通信,可以指定可请求的域,比如--allow-net=google.com。
--allow-env:允许读取环境变量。
服务器
1 | // 引入url |
1 | import { Router } from "https://deno.land/x/oak/mod.ts"; |
1 | import { Product } from "../types.ts"; |
启动Server
1 | PS C:\Users\demo\Desktop\ms-deno-rest-api-lesson-1> deno run --allow-net server.ts |