秀秀科技|又一阵后浪:横空出世的Deno会取代NodeJS吗?

全文共2180字 , 预计学习时长8分钟
秀秀科技|又一阵后浪:横空出世的Deno会取代NodeJS吗?
文章图片
Deno1.0.0版本于近期发布了 , 它是由RyanDahl发明的 , 他还因发明Node.js这个“小玩意儿”而闻名 。
Node.js听起来很熟悉吧?这是否意味着Deno实际上已经自动取代了Node而我们该开始计划重构冲刺呢?
现在下结论显然为时尚早 , 但以下几个事实可能在很大程度上决定了Deno的发布 。
秀秀科技|又一阵后浪:横空出世的Deno会取代NodeJS吗?
文章图片
从头说起
2018年 , Ryan在一次演讲中谈到了他认为Node存在的10大问题 。 演讲的最后 , 他展示了他当时正在构建的、还只是一个小系统的Deno , 也就是大家口中的Node.js2.0版本 , 他对原有版本做了改进 , 也更加安全 。
两年后 , Deno1.0正式发布 。 其后端有一个全新的JavaScript运行环境 , 但它是用Rust编写的 , 而不是用C++ 。 它以Tokio平台为基础(该平台为JavaScript提供其所需要的异步运行环境) , 仍可运行GoogleV8引擎 。
秀秀科技|又一阵后浪:横空出世的Deno会取代NodeJS吗?
文章图片
还有什么新鲜的吗?
我们不仅仅是在讨论一个和现有的Node.js完全兼容的新的JavaScript运行环境 , Ryan还利用了这个机会 , 在Deno中加入了一些他认为在早期创作中缺失的东西 。
安全集成
默认设置中 , Node.js允许用户访问所有内容 , 这意味着你可以读写文件系统、发出请求、访问环境变量等等 。 尽管作为开发人员 , 拥有这种访问权限是有利的 , 但如果在编写自己的代码时不够小心 , 也会带来安全风险 。
因此 , Deno使用命令行参数来启用或禁用对不同安全特性的访问 。 如果你需要让你的脚本访问/etc文件夹 , 可以输入:
deno--allow-read=/etcmyscript.ts你的代码将从文件夹中读取 , 你会得到一个安全异常提示 。 这类似于其他平台处理安全性的方式 。
如果你是Android用户 , 你一定已经收到了很多应用程序的要求 , 允许它们访问你手机中的不同系统(如联系人、电话、文件夹等) 。 这里也一样 。 通过在执行脚本的命令行中使用这些标志 , 可以提供代码所需的权限 。
一个更完整的标准库
自Node的第一个版本开始 , JavaScript就已经改进了它的标准库 , 但是与其他语言相比 , 它还有很多不足 。
秀秀科技|又一阵后浪:横空出世的Deno会取代NodeJS吗?
文章图片
图源:unsplash
Deno也试图改进这一点 , 据说它会拥有一个非常完整的标准库 , 能让开发人员使用官方工具来执行基本任务 , 且只需使用外部库(alaNPM)来完成复杂的任务 。
从本质上讲 , Deno开箱即用 , 它的自带工具可以为终端文本添加颜色、处理外部数据结构(如二进制、csv、yaml和其他数据结构)、生成UUID , 甚至编写websockets 。 还有其他可用的更基本模块 , 比如文件系统访问、日期帮助器函数、与http相关的函数等等 。
集成版TypeScript
如果你是TypeScript的忠实用户 , 那么不需要外部工具 , Deno就会帮你搞定很多工作 , 默认情况下JavaScript的转换在内部即可完成 , 这一点无需担心 。
尽管默认情况下Deno会做很多工作 , 但你可以使用自己的tsconfig.json文件覆盖配置:
denorun-ctsconfig.json[your-script.ts]默认模式是使用严格模式 , 因此 , 进行任何欠考虑的编码操作都会立即收到警告 。
不再需要NPM和node_modules文件夹
这是个大问题 。 会不会太臃肿了?这种分散依赖关系的方式是错误的吗?这自然是Node最具争议的一大方面 , Deno决定完全摆脱它 。
那Deno是如何处理依赖项的呢?目前的方法是 , 允许你从任何地方索取模块 。 换言之 , 你可以这样做:


推荐阅读