1.Node.js的弊端
Node.js之父Ryan Dahl(瑞安达尔)承认当初创建Node的时候,犯下了一些不可逆的错误。
主要可以总结为以下十种错误:
没有作用的index.js设计
Node没用JavaScript异步处理Promise对象
安全性较低
使用gyp来实现build系统
没有提供FFI而继续保留gyp
内建package.json,这样太过依赖npm和yarn
内建package.json造成的模块概念不准确
容易使用require(“任意模块”)
require进入的module没有强制加上.js拓展名
直接npm下载进来的模块太多太多 ,导致node_module的安装包太过臃肿。
2.Deno初步介绍
实现语言:Rust语言编写而成。
Deno这门语言,可想而知,它是node颠倒后的变成的deno,寓意着Deno是将替代node的一门全新的技术。
然而,Deno在一两年里真的能替代Node吗?
我们分析了Node很多缺点,但是一门语言的发展的好与坏,取决的不仅仅是这门语言的原始属性,而且更关键的是一个语言的社区发展,社区力量的贡献是非常强大的。就如同一个公司的企业理念是十分强大,但是你总能在他的网站首页看到一个“加入我们”的链接,这是因为多个团体的多思维和多技术开发,对于一个集体而言,是十分之有力的。
而Node作为2009年就开始蔓延在编程社区之中,其成熟而强大的生态系统,是我们一直在用Node的原因之一。因此,短期内,Deno是不太可能替代Node的。
而deno是一个追逐者,我们对Deno只需对他慢慢地了解即可。
Deno特征
说了这么久,我们聊聊其特征
1. 可以直接使用typescript的.ts文件
2. 具有安全控制即权限管理
3. 去掉中心化package
4. 标准库
5. modern js
6. ES modules
7. 顶级await
8. 内置测试
9. 浏览器兼容的API
10. 执行wasm二进制文件
Deno特征细节
(1)聊一聊去掉中心化package
顾名思义,其没有package.json,而其package是通过URL来加载,并且把他加载在硬盘上。
引入例子: import {apllication} from 'http://deno.land/x/oak/mod.ts'
(2)聊一聊去掉中心化package
广泛的标准库模块,例如:fs,http,datetime
引入例子: import {server} from 'http://deno.land/std/http/server.ts'
(3)聊一聊运行程序的返回错误
利用deno运行ts文件,会打印ts文件中的错误,标明其错误的位置
Deno安装
Shell (Mac, Linux):
$ curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
$ iwr https://deno.land/x/install/install.ps1 -useb | iex
Homebrew (Mac):
$ brew install deno
Chocolatey (Windows):
$ choco install deno
Scoop (Windows):
$ scoop install deno
Build and install from source using Cargo
$ cargo install deno
See deno_install for more installation options.
开始一个简单的demo
$ deno run https://deno.land/std/examples/welcome.ts
Or a more complex one:
import { serve } from "https://deno.land/std@0.56.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
VSCODE插件deno
由于deno采用URL引入模块,因此,例如,import {} from “https://deno.land/xxxx/xx/xx.ts”
其中引入的URL会出现红色的下划线,我们可以在vscode商店下载deno插件,重新启动VSCODE即可。
了解更多
[DENO的官方网址](deno官方地址)