Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js deno vs ts节点:什么';有什么区别_Node.js_Ts Node_Deno - Fatal编程技术网

Node.js deno vs ts节点:什么';有什么区别

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

我正在从事一个相对较大的typescript项目,我正在使用
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";