当前位置: 首页 > 后端技术 > Node.js

好程序员分享什么是Deno以及它和Node.js的区别

时间:2023-04-03 10:19:37 Node.js

好程序员分享什么是Deno以及它和Node.js的区别。是时候研究deno了,它是一种新的JavaScript运行时,可以解决Node的所有固有问题。  不要误会我的意思,Nodejs本身就是一个很棒的服务器端JavaScript运行时,主要是因为其庞大的生态系统和JavaScript。然而,Node.js的创建者RyanDahl承认他应该考虑更多-安全性、模块和依赖性,仅举几例。  在他看来,平台在这么短的时间内能发展到什么程度,他自己也无法想象。此外,早在2009年,JavaScript仍然是这种每个人都取笑的奇怪的小语言,它的许多功能还不存在。  那么Deno是什么,它的主要特点是什么?1.Deno是基于V8构建的安全TypeScriptGoogle运行时引擎。  它构建:?Rust(Deno的核心是用Rust编写的,节点是用C++编写的)?Tokio(用Rust编写的事件循环)?TypeScript(Deno支持开箱即用的JavaScript和TypeScript)?V8(JavaScript实现Google在Chrome和node中使用)  2。开箱即用支持Type2.8,不带package.json,不带npm,不追求与Node的兼容,通过URL引入依赖而不是本地模块在第一次运行时加载缓存,依赖只在代码更新时更新用于运行。?可控制文件系统和网络访问权限运行沙盒代码,默认访问只读文件系统,无需网络权限即可访问。V8和Golang之间的访问只能通过protobuf中定义的序列化消息来完成;?创建单个可执行文件;?支持顶层等待;?最终目标是兼容浏览器;?可以作为库引入,用于构建你自己的JavaScript运行时。  这些特性,很多都是针对目前NodeJs的痛点,包括没有package.json、引入依赖、更新方法等,针对的是被广泛吐槽的过大的问题。  同时,不再追求节点兼容性,可见ry是想彻底抛弃节点包袱,打造更好的JS运行时。它的安全性也非常令人放心。其最重要的功能之一是高安全性。与NodeJs相反,Deno默认执行沙盒中的代码,也就是说它没有运行权限。让我们看看它是如何工作的:  (async()=>{constencoder=newTextEncoder();constdata=encoder.encode('Helloworld');awaitDeno.writeFile('HelloWorld.txt',data);awaitDeno.writeFile('HelloWorld2.txt',data);  })();  此脚本创建两个包含消息的文本文件。该代码正在沙箱中执行,因此它无法访问文件系统。HelloWorld.txtHelloWorld2.txtHelloworld  另请注意,我们使用的是Deno命名空间而不是fs模块,就像在Node中一样。Deno命名空间提供了许多基本的辅助函数。通过使用名称空间,我们正在失去浏览器兼容性。  当然,当我们使用Deno时,我们会考虑浏览器兼容性。Deno旨在浏览器兼容性。从技术上讲,当使用ES模块时,我们不必使用任何构建工具(例如webpack)来使我们的应用程序在浏览器中可用。  但像Babel这样的工具会将代码转换为ES5版本的JavaScript,因此即使在不支持该语言使用的最新功能的旧版浏览器中,代码也能运行。但这也是以在最终文件中包含大量不必要的代码并使输出文件膨胀为代价的。  由我们来决定我们的主要目标是什么并做出相应的选择。开箱即用的TypeScript支持  Deno让您无需任何配置文件即可轻松使用TypeScript。仍然可以用纯JavaScript编写程序并使用Deno毫无问题地执行它们。  Deno是一个新的TypeScript和JavaScript运行时,是一个有趣的项目,长期以来一直在稳步发展。但在它被认为可以投入生产之前,还有很长的路要走。凭借其去中心化的方法,它需要从集中的包注册表(即npm)中释放JavaScript生态系统。