Deno 是一个简单、先进且安全的 JavaScript 和 TypeScript 运行时环境,其基于 V8 引擎并采用 Rust 编程语言构建。
为什么放弃Node.js
随着JavaScript的发展,ES6标准引入大量新的语法特性,例如Promise、ES模块,Node对着两个新语法的支持并不是很好。其次Node的模块管理工具npm,逻辑越来越复杂,模块安装目录过于庞大,难以管理,功能不全,导致外部工具过多。基于以上问题Ryan Dahl决定放弃Node.js。
Deno的优点
1、Deno在支持解释JavaScript的同时,也支持TypeScript,可以直接运行,不必显式转码,它内部会根据文件后缀名判断,.ts后缀先调用TS编译器,.js直接运行。
2、使用Rust语言开发,所以也可以直接运行 WebAssembly。
3、Deno只有一个可执行文件,所有操作都通过这个文件完成,支持跨平台(Mac、Linux、Windows)。
4、Deno具有安全控制,默认情况下脚本不具有读写权限。
5、Deno支持Web API,提供window全局对象,同时支持addEventListener等事件操作函数,此外Deno所有的异步操作,一律返回Promise。
6、Deno只支持ES模块,没有npm,没有npm_modules目录,没有require()命令,也不需要package.json文件。模块通过URL加载,比如 import { bar } from "https://foo.com/bar.ts" 或 import { bar } from './foo/bar.ts'。但Deno下载模块以后,依然会有一个总的目录,在本地缓存模块,因此可以离线使用。
7、Deno内置了开发者需要的各种功能,不再需要外部工具。打包、格式清理、测试、安装、文档生成、linting、脚本编译成可执行文件等,都有专门命令。内置工具集。
deno bundle:将脚本和依赖打包
deno eval:执行代码
deno fetch:将依赖抓取到本地
deno fmt:代码的格式美化
deno help:等同于-h参数
deno info:显示本地的依赖缓存
deno install:将脚本安装为可执行文件
deno repl:进入 REPL 环境
deno run:运行脚本
deno test:运行测试
使用方法
官方提供下载方式
macOS 和 Linux 系统上使用 shell
curl -fsSL https://deno.land/x/install/install.sh | sh
Windows 系统上使用 PowerShell
wr https://deno.land/x/install/install.ps1 -useb | iex
国内deno_install 会从 GitHub Release 下载 Deno 可执行文件,所以国内用户推荐使用以下方式
macOS 和 Linux 系统上使用 shell
curl -fsSL https://x.deno.js.cn/install.sh | sh
Windows 系统上使用 PowerShell
iwr https://x.deno.js.cn/install.ps1 -useb -outf install.ps1; .\install.ps1
也可通过链接手动下载 github.com/denoland/deno/releases
安装成功后通过命令deno --version 查看版本
REPL
输入deno命令,会启动一个REPL(Read-Execute-Print-Loop,读取-求值-输出,是一个简单的,交互式的编程环境。)
demo
缺点
报错查找比较困难,当我import过多链接的时候,若其中有一个链接import失败,就会导致一下情况,且难以排查错误
Node兼容
从 v1.15 开始,Deno 提供了 Node 兼容模式,可以直接在 Deno 中运行为 Node.js 编写的程序子集。兼容模式可以通过--compat在 CLI 中传递标志来激活。