首页 > 编程知识 正文

nodejs和golang(nodejs和js的区别)

时间:2023-05-04 22:38:29 阅读:97004 作者:1865

全文2827字,预计学习时长8分钟。

资料来源:unsplash

Deno是一种全新的编写服务器端JavaScript的方法,和Node非常相似,解决了很多和Node.js一样的问题,甚至连创建者都和Node.js的创建者一样。

Deno在后台使用v8 JavaScript引擎,但运行时的其余部分是用Rust和JavaScript实现的。自发布以来,Deno已经获得了相当大的人气,您可以通过查看其GitHub存储库来查看它。

GitHub存储库

在进一步学习之前,让我们使用强大而安全的Deno来设置机器。

安装

对于带shell的Mac和Linux,运行:

curl-FSsl https://deno.land/x/install/install.sh | sh

对于带电源外壳的Windows,运行:

iwr https://deno.land/x/install/install.ps1-useb | iex

此外,您可以使用软件包管理器,如家酿(苹果)、巧克力(视窗)、勺子(视窗)和货物来安装Deno:

brew install deno choco install deno scoop install deno cargo install deno

让我们弄清楚

我们的Deno之旅从一个TypeScript文件开始。在这个文件中,我们可以访问运行时环境中的所有类型,这意味着我们可以编写强类型的代码,并直接在IDE中获取文档,而无需修改ts配置文件。可以从Deno命名空间访问运行时属性。

在工作目录中创建一个名为main.ts的TypeScript文件。然后,控制台. log文件系统的当前工作目录:

console . log(Deno . CWD());

我们可以使用以下命令来执行脚本:

deno run main.ts

未经许可获取许可时出错

1.内置权限

上面的代码抛出了一个错误,因为Deno默认是安全的。在处理安全性方面,Deno比Node好得多。例如,为了运行应用程序,访问您的文件系统或互联网需要您明确地传递权限。

如果你在Node中导入了一个软件包,而这个软件包被接管的人破坏了,输入了错误的代码,它会删除你电脑上的所有文件。但是在Deno中,除非明确赋予程序从计算机中删除文件的功能,否则损坏的包将无法做任何事情,因为它没有权限。

有了这些内置的权限,Deno大大提高了它的安全性,因此您不必担心其他软件包在计算机或web服务器上执行不需要的操作。因此,我们需要在运行时授予执行不同操作的权限。您可以在此使用允许读取标志来允许此操作:

deno运行-允许-读取main.ts

的正确输出

2.基于承诺

Deno开发人员似乎更加关注安全性,但我最喜欢的是异步。

的一切都是基于promise来构建的(告别,回调)。

如你所见,可以使用fetch API发出网络请求,就像我们在浏览器中做的那样。因为它支持顶级 wait,所以在这里甚至不需要异步函数。不仅如此,还可以在没有任何额外样板代码的情况下解决promises:

const url = Deno.args[0]; const res = await fetch(url);

3.Deno尝试使你的代码尽可能与浏览器兼容

Deno包含一个窗口对象,其中包含开发人员可以侦听的生命周期事件,这使开发人员的生活更轻松:

window.onload = e => console.log(‘good bye nodejs’);

对了,我忘了提到它还可以执行Web程序二进制文件。根据其网站:“ WebAssembly(缩写为Wasm)是一种基于堆栈的虚拟机器的二进制指令格式。”

const wbs = new Uint8Array([61,63,73]); const wsm = new WebAssembly.Module(wbs);

4.它包含一个标准库,其中有一堆非常有用的软件包

Deno更进一步,它包含一个标准库,其中有一堆非常有用的软件包,用于处理日期、时间、颜色以及浏览器中尚未内置的内容,这使你可以利用浏览器的功能并将其添加到浏览器中。标准库的好处在于,你可以在所有的Deno项目中使用它,而不必依赖于从npm中导入模块。

5.没有海量的Node Modules文件夹

相反,我们使用现代的ES模块语法导入软件包。在这里,远程模块由其URL引用。甜美的小懒猪第一次运行脚本时,它将在本地下载此代码并进行缓存。JSON和代码不能从任何URL中引用软件包,这与浏览器中的工作方式非常相似。

如前所述,这里没有Node modules文件夹,所有这些都在后台为你处理。你所有的附件都保存在电脑的中央位置,因此不必担心海量的modules文件夹或难处理的package.json:

import { Response } from “https://deno.land/std@0.63.0/http/server.ts"; import { Server } from “https://deno.land/std@0.63.0/http/server.ts";

下载的附件

6.提供了一组解决常见用例的标准模块

此外,Deno还提供了一组标准模块来解决常见用例。例如,从HTTP模块中导入 serve。然后,使用它来创建一个被当作异步可更改的服务器。之后,等待来自服务器的每个请求,并相应地对其响应。对于服务器端JavaScript应用程序来说,这是一个很棒的起点。

这只是对Deno的一个简单介绍。如果你想了解有关Deno及其编程实践的更多信息,请访问其官方网站:https://deno.land/。

结论及缺点

如你所见,Deno比Node具有很多额外的特性。不过,虽然它具有许多强大的功能,但它仍处于早期阶段。它最近才推出了第一版,很多尝试还在进行中。例如,浏览器的兼容性仍然不是100%。

另外,我提到过npm不能和Deno一起使用,这是它的一个缺点,因为JavaScript是基于npm的。现在有很多npm软件包,问题在于,并不是所有这些软件包都将与Deno兼容;并且,它还没有所有基于Node的API。

Deno距离真正流行还需要一段时间,但我相信,未来必然会有它的一席之地。

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。