诞生的原因
node.js 的作者 Ryan Dahl(ry),因为感觉node.js存在设计上的严重缺陷,而node.js 的大量用户使得node.js 如果要经过大的修改变得非常的困难,所以ry 选择离开node.js 开发 deno.
发布时间
2009年5月,node.js 发布。11年后, 2020 年5月13号 Deno发布了1.0版本,1.0版本的正式发布引起了IT界很大的关注。
-
迄今node.js 在github上的star:
-
Deno在github的star:
可以看到deno是在迅猛的发展,虽然说一个新的东西要完全超越或者覆盖一个旧的东西需要一个很长时间的过渡,或者不大的可能性。
但是笔者对于Deno的流行,抱有必然的信心。
将来Deno和nodejs一定会像Vue和React在前端领域一样, 在js语言的后端界并驾齐驱。
安装
- Windows安装使用PowerShell:
iwr https://deno.land/x/install/install.ps1 -useb | iex
- mac安装:
$ curl -fsSL https://deno.land/x/install/install.sh | sh
- 使用choco安装:
choco install deno
- 查看deno的版本
$ deno --version
安装Deno的 VSCode插件
因为Deno的基于ES的标准的模块系统,使用import url的导入模块的形式,以及Deno全局对象并未被VSCode支持,所以需要借助插件 [Deprecated] Deno,进行支持,并且将settings 中将 deno.enabled 设置为 true。
这里有可能查询deno的环境变量不存在,所以需要配置deno的环境变量。
-
安装前:
-
安装后:
Helloworld
- 新建js文件或者ts文件都可以:
console.log('hello world');
运行:
deno run hellowWorld.ts # hello world
Deno的特点
- 内置就支持TypeScript,这一点比node.js 只支持js如果要写TS就需要使用转译的方式。
- 基于ES的标准的模块系统。
- 简化的安装方式。
- 既是运行时又是包管理器。
- 安全性能大大提升。
Deno 内置API使用
const dir = Deno.readDirSync(Deno.cwd());
for (const file of dir) {
console.log(file);
};
运行:
$ deno run --allow-read dir.ts
Deno 默认支持TS
// index.ts
let num:number = 123;
num = 'deno';
运行:
deno run index.ts
结果: 这个时候会出现类似以下提示错误
Type 'deno' is not assignable to type 'number'.
Deno运行权限设置
Deno默认是没有 网络、文件读、文件写、环境变量读取等权限,所以如果要运行时使用可以 添加上如下:
-A, --allow-all 允许所有的权限。
--allow-env 允许环境获取和设置环境的权限。
--allow-hrtime 允许高精度的定时器。
--allow-net 允许访问网络的权限。
--allow-plugin 允许加载插件权限。
--allow-read 允许读文件的权限。
--allow-write 允许写文件的权限。
--allow-run 允许运行子进程,注意子进程并没有与deno进程相同的安全性,请谨慎使用。
参考文档
因为只是初次尝试,所以暂时只写到这里,之后会有更加深入的研究,或者系统的归纳,期待deno有更好的发展。