CSDN|Deno 是面向代码的浏览器?


【CSDN编者按】很多人仍然对Deno的模型感到怀疑 , 很多新手对其采取的一些策略持反对意见 , 但真正接触过Deno并尝试了解它的不同工作方式后 , 你还这么认为吗?
CSDN|Deno 是面向代码的浏览器?
本文插图
作者 | Kitson Kelly译者 | 弯月 , 责编 | 夕颜头图 | Deno官网出品 | CSDN(ID:CSDNnews)以下为译文:
2018年5月 , 在Ry发布Deno的原型后不久 , 我便开始为其贡献代码 。 人们最常问的问题是:“打包管理在哪里?”通常人们都不是以提问的形式 , 他们会说:“我认为Deno非常重视安全性 , 只不过从互联网上下载资源不是很安全 。 ”或者“我该如何管理依赖关系?”
【CSDN|Deno 是面向代码的浏览器?】
我认为 , 我们需要改变思维模式 。 无处不在的打包管理器和集中式的代码仓库 , 让很多人认为拥有一个软件包管理器和一个集中式代码仓库是必须的 。 虽然它们存在 , 但并不意味着它们就是必需品 。 它们之所以存在 , 是因为它们以特定的方式解决了问题 , 而人们则想当然地认为它们是解决这个问题的唯一方法 。 但我认为这不对 。
浏览器
假设发布网站的方法并不是登录到Google服务器并将网站上传到服务器上 。 如果有人想访问网站 , 他们需要使用一个命令行工具 , 该工具会在本地计算机的browser.json文件中添加一个条目 , 然后把整个网站以及任何该网站链接到的网站都下载到本地的websites目录中 , 然后再启动浏览器显示网站 。 感觉很不可思议 , 是吧?那么为什么运行代码需要采用这种模型呢?
Deno CLI的工作方式与浏览器类似 , 只不过它操作的是代码 。 只需要导入一个代码的URL , Deno就会获取这些代码 , 并缓存在本地 , 就像浏览器一样 。 此外 , 与浏览器一样 , 你的代码在沙盒中运行 , 而沙盒对正在运行的代码的信任度为零 , 无论这些代码来自何处 。 你(调用代码的人)从外部告诉代码可以做些什么以及不能做什么 。 而且 , 就像浏览器一样 , 代码会要求执行操作的权限 , 而你可以选择授权或拒绝 。
HTTP协议足够提供有关代码的信息 , 而且Deno会设法利用该协议 , 因此不必创建新协议 。
发现代码
首先要考虑的是 , 我们希望Deno CLI像浏览器一样对你运行的代码不持任何意见 。 它只给出代码应当怎样获取 , 以及怎样将代码放在沙盒中运行 。 我认为 , 运行时应当持有的意见仅此两点 。
在Node.js/npm生态环境中 , 代码管理位于本地 , 再加上一个中心化的代码仓库来辅助代码发现 。 我认为这两者都有很严重的缺陷 。
在互联网的早期 , 我们曾尝试过npm这种发现机制 。 那时 , 你需要把网站添加到雅虎正确的分类下供人们查找 , 也许会使用搜索功能 , 但这都是根据内容提供者的意见时构建的 , 而且不是按照罪有利于消费者的方式构建的 。 最后终于Google出现了 。 为什么Google能取得胜利?因为Google对很好用 。 它会按照简单的搜索关键字对网站进行索引 , 同时考虑多个因素 , 包括内容提供商的元数据等 。
虽然Deno对于代码的模型与此不太一样 , 但也很好用 。 此外 , 我们使用Google的原因是Google能解决我们的问题 , 而不是别人要求我们“必须使用Google”或者任何Google的替代品 。
我在推特上与Laurie Voss讨论过一次 , 他非常了解npm生态系统 。 他认为Deno需要包管理器 , 而这篇文章更详尽地介绍了我的想法 , 但是Laurie提出的一个观点很有道理 。
CSDN|Deno 是面向代码的浏览器?
本文插图