本篇文章给大家分享的是有关Deno与Node.js的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1. Deno是一个基于V8构建的安全的TypeScript的Google运行时引擎。
它建立了:
l Rust(Deno的核心是用Rust编写的,node用C++编写的)
l Tokio(以Rust编写的事件循环)
l TypeScript(Deno支持开箱即用的JavaScript和typeScript)
l V8(谷歌在Chrome和node中使用的JavaScript进行时)
2. 它支持Type2.8开箱即用,没有package.json,没有npm 不追求兼容Node,通过URL方式引入依赖而非通过本地模块,并且在第一次运行的时候进行加载和缓存,并仅在代码使用运行,依赖才会更新。
n 可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;
n 最终创建单一可执行文件;
n 支持 top-level 的 await;
n 最终的目标是兼容浏览器;
n 可以作为库引入,用于建立自己的 JavaScript runtime。
这几个特性,有很多个都是针对目前 NodeJs 的痛点而来的,包括无 package.json、依赖的引入和更新方式,针对的就是被广泛吐槽的过大的。
同时,不再追求兼容 node,可以视为 ry 想彻底抛弃 node 包袱,打造一个更好的 JS 运行时。
它的安全性也是很放心的,它最重要的功能之一就是安全性很高,与NodeJs相反,Deno默认执行沙箱中代码,这就意味运行是无权访问。
我们来看看它的工作原理:
(async () => {
const encoder = new TextEncoder();
const data = encoder.encode('Hello world');
await Deno.writeFile('HelloWorld.txt', data);
await Deno.writeFile(' HelloWorld2.txt', data);
})();
该脚本创建了两个文本文件,其中包含一条消息。代码正在沙箱中执行,因此它无法访问文件系统。HelloWorld.txt HelloWorld2.txt Hello world
另请注意,我们正在使用Deno命名空间而不是fs模块,就像在Node中一样。Deno命名空间提供了许多基本的辅助函数。通过使用命名空间,我们正在失去浏览器兼容性。
当然我们用到Deno的时候,会想到浏览器的兼容性,Deno旨在浏览器兼容。从技术上讲,在使用ES模块时,我们不必使用任何构建工具(如webpack)来使我们的应用程序啊可以在浏览器中使用。
但是像Babel这样的工具会将代码转换成ES5版本的JavaScript,因此 即使在不支持该语言所用最新功能的旧版浏览器中,代码也可以运行。但这也是最终文件中包含大量不必要的代码并使输出文件膨胀为代价的。
由我们决定我们的主要目标是什么,并相应地做出选择。
TypeScript支持开箱即用
Deno使得无需任何配置文件即可轻松使用TypeScript。仍然可以用纯JavaScript编写程序并使用Deno执行它们而不会有任何麻烦。
Deno是TypeScript和JavaScript的新运行时,是一个有趣的项目,现在已经稳定增长了很长一段时间。但是在它被认为是生产就绪之前还有很长的路要走。
借助它的分散式方法,它需要从集中式软件包注册表(即npm)中释放JavaScript生态系统。
以上就是Deno与Node.js的区别是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。