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 包 gobserver 使用教程

    前言 在前端开发中,我们需要经常检查组件的性能和状态,这时候就需要用到一些监控工具。gobserver 就是一款非常实用的监控工具,可以帮助我们实时地监控组件状态和性能。

    3 年前
  • npm 包 valley-module 使用教程

    valley-module 是一个适用于前端的模块加载模块,使用起来非常简便,但是它有着深度的学习和指导意义。在本文中,我们将提供一个详细的教程,以便您轻松地学习和使用该模块。

    3 年前
  • npm 包 web-pull-to-refresh 使用教程

    在现代 Web 应用中,用户体验是至关重要的一环。其中,下拉刷新是一种非常常见的用户体验需求。 本文将介绍如何使用基于 npm 包 web-pull-to-refresh 实现 Web 应用中的下拉刷...

    3 年前
  • npm 包 cordova-plugin-android-tv-quick 使用教程

    在开发 Android TV 应用时,使用 Cordova 可以提升开发效率和跨平台能力。而 cordova-plugin-android-tv-quick 是一款针对 Android TV 的 Co...

    3 年前
  • npm 包 xync 使用教程

    引言 前端开发在日常工作中,经常需要用到异步请求来获取数据或修改页面内容。虽然现代浏览器提供了许多原生的异步 API,如XMLHttpRequest,fetch等,但这些 API 的使用还是存在一些问...

    3 年前
  • npm 包 moment-recur-ts 使用教程

    简介 moment-recur-ts 是一个使用 TypeScript 编写的 npm 包,用于生成可重复的时间序列。它的基础是 moment.js,如果你熟悉 moment.js,那么你将非常容易地...

    3 年前
  • npm 包 eslint-config-schauwem 使用教程

    简介 eslint-config-schauwem 是一个用于 JavaScript 代码检查工具 ESLint 的配置包,它继承了 eslint-config-airbnb-base 的所有规则,并...

    3 年前
  • npm 包 sails-leveldb 使用教程

    简介 sails-leveldb 是一个基于 LevelDB 的 Sails.js 模型适配器。它通过使用 LevelDB 数据库进行数据存储,提供了高性能、可扩展性和易于配置的解决方案。

    3 年前
  • npm 包 @tohru/gm 使用教程

    简介 @tohru/gm 是一个非常实用的 npm 包,它可以帮助前端开发者快速处理并转换图片。@tohru/gm 基于 GraphicsMagick 开发,提供了很多图片处理的方法,例如:缩放、裁剪...

    3 年前
  • npm 包 ckeditor5-custom 使用教程

    在前端开发中,常常会用到富文本编辑器,而 CKEditor 5 是一款优秀的富文本编辑器工具,可以方便地进行富文本编辑。但是,CKEditor 5 默认提供的版本并不满足所有场景的需求,这时我们可以使...

    3 年前
  • npm 包 egg-view-handlebars 使用教程

    前言 近年来,Node.js 作为前端工程师最熟悉的技术之一,逐渐受到越来越多的关注。其中,npm 包成为了 Node.js 非常重要的组成部分,可以让开发者快速地开发出高质量、高效率的应用程序。

    3 年前
  • npm 包 git-bump-cli 使用教程

    在前端开发中,我们经常需要更新代码版本号。此时,使用 git-bump-cli 这个 npm 包可以轻松实现版本号的更新。本文将为大家介绍 git-bump-cli 的安装和使用方法。

    3 年前
  • npm 包 react-native-ali-push 使用教程

    前言 在移动应用的开发中,推送功能是非常重要的一项。 阿里云移动推送是一款支持在各种场景下推送消息到移动设备的推送系统。React Native 是一款非常受欢迎的开源移动应用框架,它可以帮助开发者快...

    3 年前
  • hexop

    Short and sweet package that converts a hex color and an opacity value and converts it to an 8 digit...

    3 年前
  • npm 包 glitch-cli 使用教程

    在前端开发中,我们经常会需要快速搭建一个简单的应用程序进行测试,有时候甚至需要快速搭建一个测试服务器,这时候使用 Glitch 是一个非常不错的选择。而 Glitch-cli 是一个基于命令行工具,通...

    3 年前
  • npm 包 kchoo-q 使用教程

    kchoo-q 是一个基于 React 的前端组件库,提供了丰富的 UI 组件和工具函数,可以方便开发人员快速搭建出美观、易用的前端界面。本文将详细介绍如何使用 kchoo-q。

    3 年前
  • npm 包 sunset-bot 使用教程

    随着前端技术的发展,人们对于项目中的依赖包管理越来越重视。npm 是当今最流行的 JavaScript 包管理器之一。它的强大和灵活为开发者提供了便利,但是它任何好的事物都有一个批判的一面——包过多,...

    3 年前
  • npm 包 sunset-lite-bot 使用教程

    什么是 sunset-lite-bot sunset-lite-bot 是一个专门为 Telegram 开发的机器人框架,可以方便的实现自动回复、消息处理和群组管理等常见功能。

    3 年前
  • npm 包 theoremreach 使用教程

    在前端开发中,我们经常需要引入各种第三方库来帮助我们完成各种功能,而 npm 是目前最流行的 JavaScript 包管理器,有数以万计的包可供选择。其中一个叫做 theoremreach 的包可以帮...

    3 年前
  • npm 包 @soleng-fuze/activedirectory2 使用教程

    前言 在前端开发中,我们常常需要与后端进行交互,从而获取数据并进行渲染。有些情况下,我们还需要去查询 Active Directory 来获取相应的用户信息。而这个过程是不可避免的,因此本文将介绍如何...

    3 年前

相关推荐

    暂无文章