npm 包 @jimpick/distjs-dat 使用教程

简介

npm 包 @jimpick/distjs-dat 是一个提供 de-centralized web 服务的 JavaScript 库。它基于 Hypercore Protocol 构建,用于在多个节点之间同步数据。

它提供了一个优雅的接口,使得在 de-centralized web 上创建和共享数据变得非常简单。它也可以帮助一些开发人员只使用少量代码即可在 P2P 网络中同步数据。

在本文中,我们将介绍如何使用 @jimpick/distjs-dat。

安装

使用 npm 进行安装:

--- ------- -------------------

使用

在我们介绍如何使用 @jimpick/distjs-dat 前,首先需要了解一些基础概念。

Hypercore Protocol

Hypercore Protocol 是 @jimpick/distjs-dat 的基础。它使用基于哈希的 P2P 网络协议,通过 TCP/IP 连接将数据同步到不同的节点。

Hypercore Protocol 的核心概念是 hypercore,它是一个类似于数组的数据结构,可以由许多节点共享。我们可以使用 hypercore 进行数据存储和同步。与 IPFS 不同,Hypercore Protocol 是只写的,每个 hypercore 只能由一个用户写入。

DatArchive

DatArchive 是一个用于访问 hypercore 数据的接口,类似于访问本地文件系统。

一个 DatArchive 除了可以添加、删除、更新文件,还可以被许多节点同时共享。所有的修改将会被同步到其他节点,即使你的设备没有联网也不会影响 sync。

这跟 Git 的方式非常相似,如果你熟悉 Git,对于 @jimpick/distjs-dat 的使用可能就更加得心应手了。

初始化 DatArchive

要初始化一个 DatArchive ,只需要使用如下命令:

----- --- - -------------------

------------------ -------- ----- ---- -
  -- ----- ----- ---

  --- ------- - -----------

  ------------------------------ -------- ----- ----- -
    ----------------- -- ------- -------- -- --- ---- -- -------
    ------------------------ -- ------- --- --- -- --- -------
  --
--

./my-folder 是存储本地数据的文件夹。在这个例子中,数据将被存储在 ./my-folder 目录下。

你可以使用 archive.writeFile 写入一个文件到本地数据中。

------------------------------ ------- ---------- -------- ----- -
  -- ----- ----- ---
--

共享数据

我们需要创建两个不同的 DatArchive,来演示如何在两个 DatArchive 之间共享数据。使用 Dat 函数初始化两个不同的 DatArchive:

--------------------- -------- ----- ----- -
  -- ----- ----- ---

  -- --- - ---- -- ----
  --- -- - -----------------------------------------------
  ------------- ----------

  --- ---- - ----------------

  --------------------- ----- ---------- -------- ----- ----- -
    -- ----- ----- ---

    -- ---- - ---- ---- ----
    ---------------------------------- -------- ----- ----- -
      ---------------------------- -- ------- ------ -------

      --- ---- - ----------------

      -- --- --- ---- ------ -- --- ----
      -----------------
      -----------------
    --
  --
--

在这个例子中,我们创建了两个不同的 DatArchive:dat1dat2

我们向dat1中添加了一个文件:Hello World!

使用Dat函数初始化dat2并通过dat1.key参数让dat2知道本地需要与哪个HypercoreProtocol节点同步数据。

现在,我们就可以使用dat2获取到dat1中保存的数据。

Hyperdrive

Hyperdrive是一个建立在HypercoreProtocol之上的高级协议。它提供了使用file路径和directory路径在分布式系统中使用文件夹和文件的能力。

Hyperdrive有时候表现得比DatArchive更好。

初始化一个Hyperdrive需要使用Hyperdrive函数。如下所示:

----- ---------- - ---------------------

----- ----- - -------------------------

./my-folder是本地存储应用数据的目录。

一旦你调用了Hyperdrive函数,它会返回一个drive,你就可以使用drive读/写数据了。

现在你就可以使用 writeFilereadFile 函数来读写数据了。这些函数的调用方式和DatArchive是一样的。在下面的示例中,我们使用writeFile向 Hyperdrive 写入一个文件。

--------------------------- ------- -------- ------------- -
  -- ----- ----- ---
  
  ----------------- ----------
--

处理文件和文件夹

Hyperdrive使用 Unix 风格的路径,我们可以使用路径名来访问文件和目录。根目录以/开头。使用mkdir函数来创建目录:

-- ------ ---------
--------------------- ------------- -
  -- ----- ----- ---
  ---------------------- ----------
--

-- ------ ------ ---------
--------------------------- ----------- ------ ------------- -
  -- ----- ----- ---
  ------------------- --------- ----------
--

删除文件或文件夹可以使用unlinkrmdir函数。

-- ------ ----
------------------------ ------------- -
  -- ----- ----- ---
  ----------------- ----------
--

-- ------ ---------
--------------------- ------------- -
  -- ----- ----- ---
  ---------------------- ----------
--

使用 metadata 和 Extended Attributes (xattrs)

Hyperdrive支持元数据和扩展文件属性(xattrs),以保存文件的额外信息。

当你小时,你可以通过创建一个对象并将其传递给metadata参数来设置元数据。如果你需要设置有关特定文件的附加信息,比如时间戳或作者等等,那么这个特性就非常有用。

---------------------- -------- ----- -
  -- ----- ----- ---
  ---------------------------------- ----- ------ -------- ----- -
    -- ----- ----- ---

    ----- ------------ - -
      ------- --------
      ----------- ----------
    -
    --------------------------------- ------------- -------- ----- -
      -- ----- ----- ---

      ----------------------------- -------- ----- ----- -
        -- ----- ----- ---

        -------------------------- -- - ------- -------- ----------- ------------- -
      --
    --
  --
--

如果你想要删除元数据,你只需要将metadata参数传递给null

和元数据一样,你也可以设置一个文件的 xattrs。具体实现方式也类似于元数据的设置。你需要将所需的 xattrs 作为一个对象传递给xattrs参数:

----- ------ - -
  ---------- ----------------------
  ------- -------
-

---------------------------- ------ -------- -------- ----- -
  -- ----- ----- ---
  ------------------------------ ------- -------- ----- -
    -- ----- ----- ---

    ------------------------------ -------- ----- --------- -
      -- ----- ----- ---

      ---------------------------- -- - ---------- ---------------- ------- ------- -
    --
  --
--

-- -- ------ ------- --- ---- -- ----
------------------------------ -------- ------ -------- ----- -
  -- ----- ----- ---
  ------------------- ---------
--

在上面这个例子中,我们在drive中设置了一个 xattr,并将xattrs参数设为以下值:

----- ------ - -
  ---------- ----------------------
  ------- -------
-

然后,我们使用setMetadata函数将这个xattrs设置为一个文件。如果xattrs设置为null,则用来存储 xattrs 的空间将被释放。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005726681e8991b448e8983


猜你喜欢

  • npm 包 ibird-open 使用教程

    简介 ibird-open 是一款由 ibird 团队开发的 npm 包,用于在前端应用中调用第三方的开放接口。该 npm 包提供了简单易用的 API,可以简化前端调用开放接口的过程。

    3 年前
  • npm 包 react-native-allaudio-meta-data 使用教程

    介绍 react-native-allaudio-meta-data 是一个可以用于解析音频文件 meta data(元数据)的 React Native npm 包。

    3 年前
  • npm 包 utopian-api-ts 使用教程

    前言 在进行前端开发的过程中,我们常常需要借助一些 npm 包来辅助我们完成工作。这些 npm 包提供了各种各样的工具和库,方便我们编写高效、优雅的代码。 而今天我们要介绍的就是一款名为 utopia...

    3 年前
  • npm 包 koa-huiji-signature 使用教程

    koa-huiji-signature 是一个用于 koa 框架的中间件,它可以帮助开发者对请求的参数进行签名验证,保障数据的安全性。本篇文章将为您详细介绍如何使用这个 npm 包。

    3 年前
  • npm 包 vue-loading-status 使用教程

    前端开发中经常需要加载不同类型的数据,例如 Ajax 请求返回 JSON 数据、图片资源、视频等等。由于加载时间不确定,所以我们需要给用户一个良好的体验,提示他们当前页面正在加载。

    3 年前
  • npm 包 @async-generators/subject 使用教程

    在前端开发中,经常需要进行数据处理和异步编程等操作。而在实现这些操作时,@async-generators/subject 是一个非常实用的 npm 包。它提供了一个方便的 API,允许我们轻松创建异...

    3 年前
  • npm 包 gulp-importcsstowxss 使用教程

    简介 gulp-importcsstowxss 是一个通过 Gulp 自动化构建工具将 CSS 文件转换为 WXSS 文件的 npm 包。WXSS 是指微信小程序中所使用的样式表语言。

    3 年前
  • npm 包 @oblakotilo/plants 使用教程

    简介 @oblakotilo/plants 是一个用于前端开发的 npm 包,它提供了一些常用植物的图片和名称,让我们在前端开发中更加便捷地使用这些资源,从而提高开发效率。

    3 年前
  • npm 包 prevent-router-transition 使用教程

    在前端开发中,路由的跳转是一个非常常见的操作。有些情况下,我们希望在路由跳转时能够提醒用户当前的页面还有未保存的内容,避免用户误操作导致数据丢失。而 npm 包 prevent-router-tran...

    3 年前
  • npm 包 react-countdown-button 使用教程

    倒计时组件在前端开发中是常用的功能之一,但是如果每次都需要手写,势必会浪费很多时间和精力。这个时候,npm 包就可以给我们省下很多功夫。今天我们要介绍的是一个叫做 react-countdown-bu...

    3 年前
  • npm 包 react-retailer-map 使用教程

    如果您正在开发一个电商网站或者与小区商铺相关的应用,那么您一定会需要一个地图来展示商铺的地理位置。而 react-retailer-map 就是一个非常好用的 npm 包,可以帮助您快速地在应用中引入...

    3 年前
  • npm包@arkandos/inquirer-autocomplete使用教程

    简介 在前端开发过程中,我们常常需要和用户进行交互,获取一些输入信息。Inquirer是一个流行的交互式命令行用户界面(CLI)工具,它提供了丰富的界面元素,使得我们可以通过CLI与用户进行交互,并获...

    3 年前
  • npm 包 hologger-applicationinsights 使用教程

    在前端开发中,我们经常需要记录和监控用户的行为和操作。这时,使用日志系统和监控工具是非常必要的。 本文将介绍 npm 包 hologger-applicationinsights,该包可以方便地将前端...

    3 年前
  • npm 包 angular-trumbowyg 使用教程

    简介 angular-trumbowyg 是一个使用 AngularJS 封装的 Trumbowyg 编辑器的包,它提供了一种简单的方法来在 AngularJS 应用程序中嵌入编辑器。

    3 年前
  • npm 包 @genny-project/react-places-autocomplete 使用教程

    在前端开发中,常常需要使用地址自动完成组件来帮助用户填写地址。其中 @genny-project/react-places-autocomplete 是一个强大的 npm 包,提供了 Google 地...

    3 年前
  • npm 包 gulp-css-to-wxss 使用教程

    在前端开发中,我们经常需要将基于 CSS 编写的样式文件(.css)转换成小程序专用的样式文件(.wxss),这时候就需要用到 npm 包 gulp-css-to-wxss。

    3 年前
  • npm 包 gulp-dev-middleware 使用教程

    前言 gulp-dev-middleware 是一种功能强大的 Node.js 模块,它可以帮助我们快速而方便地构建前端项目。在实际项目中,我们经常需要借助同一个主机中的其他应用程序进行开发,而 gu...

    3 年前
  • npm包 presentation-node-build-tools 使用教程

    介绍 随着前端技术的不断发展,构建工具和自动化工具的重要性一直都是不可忽视的。在这个过程中,npm包 presentation-node-build-tools 出现了,它是一个可以帮助前端工程师快速...

    3 年前
  • npm 包 @teanocrata/jsfundamentals 使用教程

    引言 @teanocrata/jsfundamentals 是一个面向初学者的 JavaScript 基础教程库。通过该库,初学者可以快速掌握 JavaScript 的基本语法、常用 API 和编程思...

    3 年前
  • npm 包 oauth2orize-google 使用教程

    在现代的前端开发中,我们经常需要在应用中集成第三方授权登录。Google 提供了 OAuth 2.0 授权服务,让我们可以通过 OAuth 2.0 协议实现用户的认证和授权。

    3 年前

相关推荐

    暂无文章