Deno
他来了来了,他带着成吨的知识走来了
Deno
的1.0版本出来以后可以预见一大波的:
学不动了
再不学就被淘汰了
Deno
的xx
实现原理PHP
最牛逼
......
创造Deno
的原因
Deno
是 Ryan Dahl
在2017年创立的。这位巨佬同时也是 Node.js
的创始人,从2007年一直到2012年,他后来把Node.js
移交给了其他开发者之后,就跑去搞研究人工智能了。但是相传他不是很喜欢 Python
,所以时间久了就想搞一个 JavaScript
的人工智能开发框架。等到他再回过头捡起 Node.js
,发现这个项目已经背离了他的初衷,有一些无法忽视的问题。
巨佬的说法是:
But why!? Isn't this exactly what Node does? JavaScript & the web have changed significantly since Node was designed in 2009:
Promises. async functions
Async iterators/generatos
ES Modules
Typed Arrays Node has problems:
Problems with its module system. with centralized distribution
Lots of legacy APIs that must be supported
No security model
An explosion of tooling (grunt, gulp, webpack, babel, parcel, typescript, is-node, ...)
简单来说ES6
标准引入了大量新的语法特性。其中,影响最大的语法有两个:Promise
接口(以及 async
函数)和 ES
模块。Node.js
对这两个新语法的支持,都不理想。由于历史原因,Node.js
必须支持回调函数(callback)
,导致异步接口会有 Promise
和回调函数两种写法;同时,Node.js
自己的模块格式 CommonJS
与 ES
模块不兼容,导致迟迟无法完全支持 ES
模块。
其次就是众所周知的npm
问题:)
再次,Node.js
的功能也不完整,导致外部工具层出不穷,初始化一个项目先来一吨依赖:webpack
,babel
,typescript
、eslint
、prettier
......
由于上面这些原因,巨佬决定放弃 Node.js
,从头写一个替代品,彻底解决这些问题。deno
这个名字就是来自 Node
的字母重新组合,表示"拆除Node.js
"(de = destroy, no = Node.js)
。
根据[官网](https://deno.land/)的说明:
Deno
是使用V8
并内置于Rust
的JavaScript
和TypeScript
的简单,现代且安全的运行时。
默认为安全。除非明确启用,否则没有文件,网络或环境访问权限。
开箱即用地支持
TypeScript
。仅发送一个可执行文件。
具有内置的实用程序,例如依赖项检查器
(deno info)
和代码格式化程序(deno fmt)
。拥有一组保证能与Deno一起使用的经过审查(审核)的标准模块:deno.land/std
安装
Deno
与Node.js
不同的是Deno
只有一个可执行文件,所有操作都通过这个文件完成,同时也是跨平台的。所以可以直接在GitHub release
上下载对系统的二进制文件或利用官方提供的脚本进行下载安装:
使用 PowerShell
:
iwr https://deno.land/x/install/install.ps1 -useb | iex