IPFS技术火币网招聘2020进展 | js-IPFS 0.51.0添加类型定义

原文链接:

https://blog.ipfs.io/2020-10-29-js-ipfs-0-50/

js-IPFS@0.51.0已经从 launchpad 起步,并且正在被传送到您的 node_modules 文件夹,它支持 TypeScript、自定义 DAG 格式和一种新的、更轻便的模块使用方式。

类型

TypeScript 已经席卷了 JS 世界,它允许开发者在他们编码的界面不是他们期望的时候得到提醒,并支持大量有用的工具,比如精确的代码完成和内联文档查看。

已经有几个社区领导了为js-IPFS提供类型信息的工作,但是由于项目进展如此之快,要保持与每个版本中出现的变化的兼容性是一项艰巨的任务。

js-IPFS@0.51.0中,类型现在是代码库中的一等公民。这个项目还没有转换成 TypeScript,我们不希望 TypeScript 知识成为贡献js-IPFS开发的先决条件,相反,所有类型都是使用 JSDoc 注释定义的,并在开发和持续集成期间构建和验证。

所有的新代码都需要有类型,所以为了帮助贡献者,aegir 最近为 JSDoc 注释添加了更严格的 linting,我们还在js-IPFS中添加了 typecheck github 动作,这样任何错误或缺少的类型都很容易在 PR 中发现。

SECIO 删除

过时的安全传输 SECIO 最终在js-IPFS@0.51.0中被删除。它的继任者 Noise 最初是在js-IPFS@0.47.0中发布的,现在是 libp2p 使用的默认安全传输。

go-IPFS@0.7.0最近也删除了 SECIO 支持,因为go-IPFS@0.6.0中引入了 Noise,这意味着js-IPFS@0.51.0go-IPFS@0.7.0只能火币网是如何变现的与运行go-IPFS@0.6.0js-IPFS@0.47.0或更高版本的其他节点通信。

如果您正在运行 IPFS 节点与各种各样的版本需要升级它们go-IPFS@0.6.0js-IPFS@0.47.0至少,否则你将会失去连通性与其它网络 SECIO 不再是得到同行的支持。

自定义 DAG格式

IPFS 的核心是文件,这意味着 UnixFS,而 IPLD 格式则意味着 dag-pb和ipld-raw。

IPFS 使您可以访问所有底层组件,从而允许您使用 dag-cbor 将数据结构连接在一起,并使它们可以通过 libp2p 在 Internet 上进行访问和分发。

但是,如果这些编解码器不符合您的要求,又想开发新的编解码器或使用不太常见的编解码器(如dag-jose)怎么办?

我们并没有将每个可用的编解码器与默认的js-IPFS安装捆绑在一起,因为其中一些会引入很大的依赖树,这将不必要地降低不打算使用它们的人的安装速度。

以前,您可以将自定义 IPLD 格式与ipfs-http-client一起使用,也可以在将IPFS作为应用程序的一部分作为进程内节点运行时使用,但现在您也可以在运行的守护进程中使用它们。

有关如何设置它的更多信息,请参阅js-IPFSrepo 中的新的 custom-ipld-formats 示例。

IPFS能提供新的更轻便工具

当您使用npm install ipfs时,您将获得核心 ipfs 节点以及用于运行守护进程、HTTP API 服务器和CLI的工具。如果您是在命令行上全局安装它,以便与 IPFS 桌面一起使用,或者只是为了让一个节点在网络上运行,那么这非常好,因为您希望额外的工具能够与您的节点通信。

安装这些工具需要时间,并且会占用硬盘空间,如果您在 js-IPFS 上构建应用程序,则不一定需要它们。

现在可以通过npm install ipfs-core来获得运行进程内节点所需的 IPFS 堆栈部分。由于没有安装所有不需要的额外依赖项,这使得js-IPFS的安装大小减少了一半。

你可以像以前一样使用这个模块,你所需要做的就是更改依赖项名称/版本和更新要求名称:

const IPFS = require('ipfs')asyncfunction () { const node = await IPFS.create() node.add(...) await node.stop()}

对此:

const IPFS = require('ipfs-core')asyncfunction () { const node = await IPFS.create() node.add(...) await node.stop()}

一切就绪!这是尝试使代码库更加模块化,并允许交换组件,并且可能不会一直提取所有内容,从而使高级用户可以创建仅包含所需功能的最小节点。

默认情况下 CORS 是禁用的

跨源资源共享是一种浏览器安全措施,可以防止运行在 web 上被破坏的站点上的恶意 JavaScript 对 api 的未经授权访问。

0.51.0之前的js-IPFS版本有一个非常宽松的 CORS 设置,允许来自任何地方的请求,尽管这使得针对 API 的开发非常简单,但在安全性方面还有一些不足之处。

0.51.0开始,CORS 在默认情况下是禁用的,所以如果您计划对 HTTP RPC API 进行请求,那么在启动它之前,您需要将相关的来源和您将使用的方法添加到节点配置中。

有关完整的概述,请参见自述文件的 CORS 部分。

新功能

类型检查并从 jsdoc(#3281)(bbcaf34)生成 defs

启用 dag put 和 get 的自定义格式(#3347)(3250ff4)

支持 Node.js 15(#3339)(66f2081)

在 message-port-client 上实现 ipfs.ls(#3322)(f642f1d)

webui v2.11.4(#3317)(7f32f7f)

突发的变化

对 SECIO 的支持已经被删除(#3295)(5f5ef7e)

默认禁用 CORS(#3275)(3ff833d)

从 ipfs-core(#3348)删除缓冲区导出(5cc6dfe)

Bug 修复

文件 ls 应该返回字符串(#3352)(16ecc74)

修复了“interface-ipfs-core”链接(#3334)(3e7e222)

尝试导出未定义的缓冲区(#3312)(5cc6dfe)

HTTP 客户端工厂:React Navtive 中的无效 URL(#3331)(4eb196c)

在 cli pin add/rm(#3306)中触发无效版本错误(69757f3)

在 worker 中加载 ipfs-js 包失败,ReferenceError:窗口未定义(#2349)(3f72e50)

接下来是什么?

查看 js-IPFS 项目路线图,其中包含按我们希望的顺序组织的主要特性。

路线图中只有大的特性被调用,预计在路线图项之间会有很多小的 bug 修复发布!

非常感谢所有能够发布此版本的人

@achingbrain(52次提交,33个PR,2个问题,78条评论)

@ acolytec3(1次提交,1个PR)

@acostalima(2个问题,5条评论)

@adamprocter(1个问题,1条评论)

@andrew(1条评论)

@aphelionz(1个问题,3条评论)

@aschmahmann(1条评论)

@AuHau(2个问题,4评论)

@autonome(1个问题,1条评论)

@bconnorwhite(1次提交,1个PR)

@bellbind(1个问题,1条评论)

@BlackGlory(1条评论)

@bluelovers(1次提交,1个PR,3条评论)

@chafey(2个问题,1条评论)

@chebyte(2条评论)

@cindywu(1次提交,1个PR)

@ codecov-commenter(2条评论)

@ codecov-io(1条评论)

@ conr2d(1次提交,1个PR)

@daviddias(1条评论)

@ DougAnderson444(1条评论)

@ duc811997(1个问题)

@EthanTheMaster(1次提交,1个PR,1条评论)

@gcohler(1个PR,1个问题,2条评论)

@georgyo(2个问题)

@Gozala(12次提交,15个PR,6个问题,33条评论)

@hugomrdias(1条评论)

@icidasset(3条评论)

@imestin(1次提交,1个PR,1个问题,3条评论)

@jacobheun(20次提交,6个PR,4个问题,29条评论)

@jakehemmerle(1条评论)

@Jonybang(1个问题,1评论)

@kottackalsulvin(3个问题,9评论)

@lidel(2次提交,3个PR,7条评论)

@mburns(1条PR,3条评论)

@mcclure(3问题,3评论)

@ mh-cbon(2问题,1条评论)

@mikeal(1次提交,1个问题,5条评论)

@mpetrunic(7次提交,1个PR,1条评论)

@negamaxi(2条评论)

@ obo20(1条评论)

@oed(1个问题,1条评论)

@olizilla(1个问题)

@onichandame(1问题,3评论)

@pepoospina(3条评论)

@ rafaelramalho19(1个问题)

@RobertFischer(1条评论)

@rvagg(5条评论)

@rysiekpl(3条评论)

@ simonovic86(2个PR,1个问题,7条评论)

@stale(9条评论)

@StationedInTheField(1个问题,3条评论)

@straiforos(1个问题,2条评论)

@tabcat(1次提交,1个问题,6条评论)

@Tcll(1个问题,4评论)

@tniessen(1条评论)

@tuyennhv(3次提交,3个PR,1条评论)

@ubernaut(1个问题,1条评论)

@ vasco-santos(30提交,25 PR,6个问题,42评论)

@vmx(11次提交,1个PR,8条评论)

@Weedshaker(1条评论)

@welcome(17条评论)

@wemeetagain(4次提交,1个PR,4条评论)

@woss(6条评论)

@Xmader(1次提交,1个PR,1条评论)

@ Xplorer123(1个问题)

@ yfs-2000(1个问题,1条评论)

@zebateira(1条评论)

@zoernert(1次提交,1个PR,1条评论)

想贡献?

你是否愿意为 IPFS 项目做贡献,但又不知道如何做?嗯,有几个地方你可以开始:

检查 js-IPFS 存储库中help wanted标签的问题

加入 IPFS 全员大会,介绍你自己并让我们知道你想在哪里做出贡献:https://github.com/ipfs/teammgmt/#weekly-ipfs-all-Hands

用 IPFS 破解并向我们展示您的成就!All Hands 呼叫也是进行演示的理想场所,请加入并向我们展示您创建的内容

通过 https://discuss.ipfs.io/加入讨论,并帮助用户找到答案。

加入 ipfs 核心实现每周同步,成为行动的一部分!

你有问题吗?

关于 IPFS 的问题、它是如何工作的,以及您可以用它做些什么,最好的地方是在 discuss.ipfs.io。

我们也可以在#ipfsFreenode 上的频道上找到。

作者:IPFS星际联盟,来源:星际联盟Filecoin



返回列表页>>> 比特币