读芯术又一阵后浪:横空出世的Deno会取代NodeJS吗?
全文共2180字 , 预计学习时长8分钟
本文插图
Deno 1.0.0版本于近期发布了 , 它是由Ryan Dahl发明的 , 他还因发明Node.js这个“小玩意儿”而闻名 。
Node.js听起来很熟悉吧?这是否意味着Deno实际上已经自动取代了Node而我们该开始计划重构冲刺呢?
现在下结论显然为时尚早 , 但以下几个事实可能在很大程度上决定了Deno的发布 。
从头说起
2018年 , Ryan在一次演讲中谈到了他认为Node存在的10大问题 。 演讲的最后 , 他展示了他当时正在构建的、还只是一个小系统的Deno , 也就是大家口中的Node.js 2.0版本 , 他对原有版本做了改进 , 也更加安全 。
两年后 , Deno 1.0正式发布 。 其后端有一个全新的JavaScript运行环境 , 但它是用Rust编写的 , 而不是用C++ 。 它以Tokio平台为基础(该平台为JavaScript提供其所需要的异步运行环境) , 仍可运行Google V8引擎 。
还有什么新鲜的吗?
我们不仅仅是在讨论一个和现有的Node.js完全兼容的新的JavaScript运行环境 , Ryan还利用了这个机会 , 在Deno中加入了一些他认为在早期创作中缺失的东西 。
安全集成
默认设置中 , Node.js允许用户访问所有内容 , 这意味着你可以读写文件系统、发出请求、访问环境变量等等 。 尽管作为开发人员 , 拥有这种访问权限是有利的 , 但如果在编写自己的代码时不够小心 , 也会带来安全风险 。
因此 , Deno使用命令行参数来启用或禁用对不同安全特性的访问 。 如果你需要让你的脚本访问/etc 文件夹 , 可以输入:
deno --allow-read=/etcmyscript.ts
你的代码将从文件夹中读取 , 你会得到一个安全异常提示 。 这类似于其他平台处理安全性的方式 。
如果你是Android用户 , 你一定已经收到了很多应用程序的要求 , 允许它们访问你手机中的不同系统(如联系人、电话、文件夹等) 。 这里也一样 。 通过在执行脚本的命令行中使用这些标志 , 可以提供代码所需的权限 。
一个更完整的标准库
自Node的第一个版本开始 , JavaScript就已经改进了它的标准库 , 但是与其他语言相比 , 它还有很多不足 。
本文插图
图源:unsplash
Deno也试图改进这一点 , 据说它会拥有一个非常完整的标准库 , 能让开发人员使用官方工具来执行基本任务 , 且只需使用外部库(alaNPM)来完成复杂的任务 。
从本质上讲 , Deno开箱即用 , 它的自带工具可以为终端文本添加颜色、处理外部数据结构(如二进制、csv、yaml和其他数据结构)、生成UUID , 甚至编写websockets 。 还有其他可用的更基本模块 , 比如文件系统访问、日期帮助器函数、与http相关的函数等等 。
集成版TypeScript
如果你是TypeScript的忠实用户 , 那么不需要外部工具 , Deno就会帮你搞定很多工作 , 默认情况下JavaScript的转换在内部即可完成 , 这一点无需担心 。
尽管默认情况下Deno会做很多工作 , 但你可以使用自己的tsconfig.json文件覆盖配置:
deno run -c tsconfig.json[your-script.ts]
默认模式是使用严格模式 , 因此 , 进行任何欠考虑的编码操作都会立即收到警告 。
不再需要NPM和node_modules文件夹
这是个大问题 。 会不会太臃肿了?这种分散依赖关系的方式是错误的吗?这自然是Node最具争议的一大方面 , Deno决定完全摆脱它 。
那Deno是如何处理依赖项的呢?目前的方法是 , 允许你从任何地方索取模块 。 换言之 , 你可以这样做:
推荐阅读
- 快活一阵子|妹子终于转身了,搞笑GIF:等了89576秒
- 快活一阵子|婚后是决战紫禁之巅!,搞笑GIF:婚前是一个人的武林
- 每日小情书|打在了我脸上,十条段子:一阵热烈的掌声
- 乔丹|毫无悬念,乔丹队友完胜我詹队友
- 大司马解说|一阵雨:你长的真像桃白白!,DNF:宝哥化身阴阳法王一喷四
- 一夜征人尽思乡|张雨绮分享怀孕秘籍,男同胞看了又是一阵心疼:不能让老婆看到
- 带你去看乐娱圈|詹姆斯9次带队进入总决赛!为啥却只遇到一个一阵对手?
- 阴阳|DNF:宝哥化身阴阳法王一喷四 一阵雨:你长的真像桃白白!
- 快活一阵子|搞笑GIF:你有一双善于发现美的眼睛吗
- 快活一阵子|搞笑GIF:妹子你的力气真是大
