您的位置: 游戏资讯 > 游戏问答

deno和node关系,node可以代替做后端吗

来源:[db:H1] 浏览:0 2024-04-10 08:41:59

【CSDN编者按】日前,Node之父Ryan Dahl和Deno团队正式为我们带来了Deno 1.0。据官方介绍,它是一个使用V8引擎和Rust构建的JavaScript/TypeScript运行时。作为Node 之父两年前推出的新项目,Deno 在业界引起了不小的争议。本文作者Fernando Doglio 是著名的Node.js 大师,撰写了多本技术书籍,包括《Scaling Your Node.js Apps》、《REST API Development with Node.js》 和《Reactive Programming with Node.js》。由图灵用中文介绍。在这篇文章中,Fernando 剖析了Deno 的诸多特性以及开发者是否特别关心Deno 是否会取代Node.js。 CSDN由Fernando背书并发布给读者。

作者| Fernando Doglio,作者授权翻译

译者| 苏本如,编辑| 唐晓音

deno和node关系,node可以代替做后端吗

头图| Deno 官网

制作| CSDN(ID:CSDNnews)

译文如下。

什么是德诺?它会取代Node.js 吗?

显然,这个问题的简短答案是“现在下结论还为时过早”,但有一些事实可能会在做出这样的决定时发挥作用。

首先,Deno 是由Ryan Dahl(Node 之父)创建的,他也因创建Node.js 而闻名。这是否意味着Deno 将自动取代Node?我们都应该开始计划重构冲刺吗?当然不!但如果您想了解更多,请继续阅读。

让我们从头开始

2018 年,Ryan 发表了一次演讲,反思了人们在Node.js 上犯的十大错误。在演讲的最后,他宣布了Deno 项目,这在当时只是一个小项目。在这个项目中,Ryan 将构建一个名为Node.js v2 的东西。坚固且安全。

下面是Ryan当时的演讲视频(请自备梯子进入)。

https://youtu.be/M3BM9TB-8yA

两年后,该项目的发布日期定为2020 年5 月13 日,即Deno 1.0 正式发布的那一天。 Deno 是一个在服务器端运行的新JavaScript 运行时,但它是用Rust 而不是C++ 编写的。它基于Tokio平台(提供JavaScript所需的异步运行时)并继续运行Google的V8引擎。

Deno 有哪些新功能?

Deno 不再是与当前Node.js 完全兼容的新JavaScript 运行时。相反,Ryan 利用这个机会在Deno 中构建了一些他认为在Node.js 最初创建时缺失的功能。

综合安全

默认情况下,Node.js 允许您访问所有内容。这意味着您可以读取和写入文件系统、执行请求、访问环境变量等等。尽管拥有此访问权限对于开发人员来说是一个优势,但如果您在编写自己的代码时不小心,它也可能会带来安全风险。

另一方面,Deno 使用命令行参数来启用或禁用各种访问安全功能。例如,如果您需要启用脚本对/etc 文件夹的访问,可以执行以下步骤:

deno --allow-read=/etc myscript.ts 这样你的脚本代码就可以从/etc 文件夹中读取任何内容,而尝试执行相同读取操作的任何其他内容都将是不安全和异常的。这与其他平台处理安全性的方式类似。如果您是Android 用户,可能有很多应用程序要求您允许访问手机上的各个系统(联系人、电话、文件夹等),这里也适用相同的概念。Masu。您可以在运行脚本的命令行上使用这些标志来为您的代码提供必要的权限。

更完整的标准库

尽管自Node.js 第一个版本以来,JavaScript 已经改进了其标准库,但与其他语言相比,它仍然有很长的路要走。 Deno 正在尝试改进这一点,并声称拥有非常完整的标准库。这使得开发者可以使用官方工具来执行基本任务,而复杂的任务只需要使用外部库(例如NPM)。

基本上,Deno 提供了几种开箱即用的工具。例如,您可以为终端文本添加颜色、使用外部数据结构(二进制、csv、yaml 等)、生成UUID、编写WebSocket 等。它还提供其他更基本的模块,例如文件系统访问、日期帮助函数和HTTP 相关函数。

集成打字稿

如果你是TypeScript 爱好者,Deno 可以满足你的需求。不需要外部工具,TypeScript 代码到JavaScript 的转换默认是在内部完成的,所以你不用担心。

Deno 默认处理很多事情,但您可以覆盖自己的tsconfig.json 文件中的默认设置。

deno run -c tsconfig.json [your-script.ts] 默认配置使用严格模式,该模式会立即标记任何考虑不周的编码实践。

不再有NPM 或node_modules 文件夹

这是一个大问题,因为所有软件都需要尽可能与以前的软件兼容。你的Node.js 文件夹是否臃肿?这是分发依赖项的错误方式吗?这绝对是Node.js 最具争议的方面之一,Deno 已经完全解决了这个问题。我决定删除它。

那么Deno 如何处理依赖关系呢?这个版本通过允许您从任何地方导入您需要的模块来实现这一点。这意味着您可以轻松地:

import * as log from \'https://deno.land/std/log/mod.ts\';Deno 不再需要有自己的中央存储库,但它不受第三方控制,所以这样做时要小心需要来源import 可以公开暴露的模块,暴露给外界。

事实上,我们的朋友不再使用package.json 文件,并且通过将模块列表及其相应的URL 放入名为deps.ts 的文件中来简化依赖项管理。版本控制允许您在URL 上指定包的版本,因此它不是很复杂,但很有用。

典型的deps.ts 文件如下所示:

从\'https://deno.land/std@v0.39.0/testing/asserts.ts\' {assert } 导出;从\'https://deno.land/std@v0.39.0/fmt/colors.ts\ {绿色、粗体}导出';这将重新导出该模块。如果要更改版本,只需更改相应的URL即可。

顺便说一下,导入的代码在脚本第一次运行时会被缓存,直到使用--reload 标志再次运行为止。

还有其他新功能吗?

Deno 还包括其他功能,例如大量即用工具,包括测试运行器、调试器和文件观察器。然而,需要指出的是,其中一些只是该语言提供的API,您需要编写自己的工具来使用它们。

例如,考虑Deno.watchFs 提供的文件监视API。如果您正在寻找类似于nodemon 的解决方案,则必须自己构建它。下面是一个解决类似问题的23 行脚本。这是代码:

用户Caesar2011 已将上述脚本作为其代码库的一部分发布。完整的代码可以在这里找到。

Deno 很快就会取代Node.js 吗?

一定。说实话,这个标题看起来有点像标题党。自0.10 版本发布以来,我们中的一些人一直在使用Node.js,有些人甚至在生产中使用它。我有点害怕告诉你真相,但当时没有这样的事情,所以我就这么做了。 PHP、Python 甚至Ruby(更不用说Java 和.NET)都无法与支持JavaScript 和服务器端异步I/O 模型的软件竞争。多年来,Node.js(和JavaScript)不断发展以满足整个行业的需求。但它完美吗?当然不是!然而,就像生活中的任何其他语言一样,没有一种编程语言是完美的。

德诺也不例外。 Deno 的这个版本只是我们两年来一直致力于的一个想法的巅峰之作。尚未商业化和测试。我们还没有审查和引入各种奇怪和不寻常的用例来看看我们如何处理不同的边缘情况。在这项工作完成之前,Deno 只是早期采用者的一个玩具。也许一年后,我们将开始听到公司分享他们的经验以及他们如何解决新发现的问题。最终,支持社区将对其进行调整,使其更加有用。那么Deno 最终会取代Node.js 吗?没有人知道答案!我们得拭目以待。

中文: Deno 是什么?它会取代NodeJS 吗?

链接:https://blog.bitsrc.io/what-is-deno-and-will-it-replace-nodejs-a13aa1734a74

作者简介:Fernando Doglio,Globant 技术经理,多本技术书籍的作者,包括《Python 性能分析与优化》、《Scaling Your Node.js Apps》、《REST API Development with Node.js》。其中《Reactive Programming with Node.js》是由图灵引进并上架中国的。在中国。

译者:苏本如,编辑:唐晓音

更多技术人士,微信搜索“donyintxy”(注:姓名+公司+职位),将文章提交到CSDN。

华为5G、阿里巴巴病毒检测算法、腾讯AI 1分钟诊断,国内防疫技术大巡游!

获得!这篇文章足以理解数据科学和机器学习。

天才程序员的陨落:我创办了一家名为Cloudflare 的公司作为副业,但在公司上市之前,我生病了,生活不能自理。

远远超越Python,机器学习人才严重短缺来自全球16655名程序员的真相

抱歉,我们也抓取了您的应用

Hyperledger Fabric 中的Protobuf 到底是什么?