Node.js deno vs ts节点:什么';有什么区别
我正在从事一个相对较大的typescript项目,我正在使用Node.js deno vs ts节点:什么';有什么区别,node.js,ts-node,deno,Node.js,Ts Node,Deno,我正在从事一个相对较大的typescript项目,我正在使用ts node运行节点测试和示例。据我所知,ts节点将ts文件编译成js文件并执行 最近我听说了deno,这是一个typescript运行时。我在typescript中尝试了几个例子,它使用ts节点工作。我使用deno运行了这个示例,控制台中打印了许多编译消息,然后执行代码。后来我在/username/.deno中发现了缓存文件。我不觉得deno的执行速度比ts节点 似乎deno和ts节点都将使用缓存编译和运行。它们之间的区别是什么?t
ts node
运行节点测试和示例。据我所知,ts节点将ts
文件编译成js
文件并执行
最近我听说了deno
,这是一个typescript运行时。我在typescript中尝试了几个例子,它使用ts节点工作。我使用deno
运行了这个示例,控制台中打印了许多编译消息,然后执行代码。后来我在/username/.deno
中发现了缓存文件。我不觉得deno
的执行速度比ts节点
似乎deno
和ts节点
都将使用缓存编译和运行。它们之间的区别是什么?ts node基于node,而Deno是一种完全不同的全新服务器端运行时,在API、模块系统、安全模型等方面进行了设计更改(这更好地反映了ES6后的开发)。此外,TypeScript编译器直接位于单个Deno可执行文件中(通过V8快照),因此启动时间应该更短。TL;博士
Deno更像Node而不是ts Node,即它是基于V8的JS运行时。与Node不同,Deno包含TypeScript编译器。Deno不是Node/npm生态系统的一部分
另一方面,ts node是一个node.js模块,它使用TypeScript编译器传输TypeScript代码并在node中运行。ts节点是节点/npm生态系统的一部分
德诺跑得很快。见下文
Deno和ts节点相似性
- 它们都运行类型脚本代码
- 它们都在Linux、Mac和Windows上运行(但ts node也在SmartOS和AIX上运行)
- 他们都使用Google V8 JavaScript引擎(ts节点通过引擎盖下使用的节点)
Deno和ts节点差异
ts节点
- ts节点是node.js模块
- 它是用Node.js编写的
- 它安装了npm
- 它使用TypeScript编译器作为对等依赖项
- 它安装自己的依赖项
作为运行时,它使用C++编写的节点,使用LIHBV
德诺
- deno是一个独立的可执行文件
- 它不使用Node.js
- 它作为单个二进制文件分发
- 它包含作为V8快照的TypeScript编译器
- 它没有依赖关系
- 这是一个使用Tokio编写的Rust运行时
成熟
ts节点
ts node依赖于node.js运行时,因此在此处包含它是公平的:
- Node.js于2009年发布,最新的LTS版本是14.15.0
- npm于2010年发布,节点LTS中包含的版本为6.14.8
- ts节点于2015年发布,最新版本为9.0.0
德诺
Deno本身就是一个运行时,因此它不使用任何其他东西:
- Deno于2018年发布,最新版本为1.5.2
人气
GitHub:
堆栈溢出:
- :358962
- :132043
- :199
- :320
图书馆
ts节点
您可以使用npm上可用的所有节点库
(目前npm上有955263个包,不是所有都是针对Node的,但仍然很多)
npm上可用的节点库(即使它们最初是用TypeScript编写的)通常以传输到JavaScript的形式发布,并在*.d.ts
文件中添加类型定义(包括在npm包中或与@types
命名空间分开安装)
德诺
上有1256个第三方模块,上有56个库和工具(我没有检查它们是否都相同)
Deno库只是TypeScript文件
安装差异
ts节点
- 您可以安装Node.js
- Mac和Linux上的v10(当前LTS)在4500个文件中约为65MB
- 您可以安装
typescript
和ts节点
及其与npm
npm安装类型脚本ts节点
- 它安装10个npm模块,并将212个文件中的44MB放入
node\u模块中
德诺
- 你下载一个二进制文件
- Mac和Linux上v0.3.6的未压缩二进制文件约为47MB,Windows上约为41MB
您的代码差异
ts节点
- 您的代码的工作原理与使用
tsc
传输并使用节点运行时的工作原理相同(因为它位于引擎盖下)
- 您可以使用节点API
- 您可以使用所有内置节点模块
- 您可以使用npm中的模块
- 您可以使用相对路径(通常不带
.ts
后缀)导入文件
- 您可以
导入与npm
(或纱线
)一起安装在节点单元模块中的依赖项
德诺
- 您的代码与节点中的工作方式不同(因为它不是与节点一起运行的)
- 您可以使用denoapi
- 您可以使用Deno内置模块
- 您可以使用其他可用的Deno模块
- 您可以使用相对路径导入
文件(始终使用.ts
后缀!)
- 您可以直接从Web导入
URL(无需安装npm
)
例子
下面是一个发布用TypeScript编写的最小库并使用它的示例
创建和使用带有节点和ts节点的TypeScript库
这就是我现在正在做的一个示例项目:
创建库:
在npm上找到一个免费的名称(不再足够,请参见下文)
在GitHub上创建repo
使用npm init创建package.json
使用npm安装TypeScript
决定您是否在repo中保留package lock.json
(有
$ deno run hi.ts
Compiling file:///Users/rsp/talks/deno/hello-deno-test/hi.ts
Downloading https://raw.githubusercontent.com/rsp/deno-hello/master/hello.ts
Compiling https://raw.githubusercontent.com/rsp/deno-hello/master/hello.ts
Hello, TS!
$ deno run hi.ts
Hello, TS!
$ deno run hi.ts
Compiling file:///Users/rsp/talks/deno/hello-deno-test/hi.ts
Hello, TS!
$ time npx ts-node hi.ts
Hello, TS!
real 0m0.904s
user 0m1.300s
sys 0m0.083s
$ time deno run hi.ts
Hello, TS!
real 0m0.028s
user 0m0.010s
sys 0m0.015s
> import { serve } from "https://deno.land/std/http/server.ts";