npm 包 metalsmith-downloader 使用教程

阅读时长 9 分钟读完

在前端开发过程中,我们经常需要使用一些数据,比如 API、图片等。这些数据往往需要从远程服务器上下载,一般情况下我们需要手动下载这些数据并手动保存。这样做的缺点是,比较麻烦,容易出错,而且浪费时间。下面介绍一个可以帮助我们自动下载数据的 npm 包 metalsmith-downloader。

简介

metalsmith-downloader 是一个基于 metalsmith 的 npm 包,主要是用来自动从远程服务器下载数据并保存到本地。metalsmith 是一个静态网站生成器,使用 metalsmith-downloader 可以为静态站点自动下载数据。

安装

使用 npm 安装 metalsmith-downloader:

使用

Configuration

在 metalsmith 中使用 metalsmith-downloader 配置参数:

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

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

Options

必选项:

  • pattern,一个 glob 字符串,用于匹配需要下载的文件路径。

可选项:

  • downloader,一个对象,用于配置下载器。
    • url,必选项,一个字符串,用于指定需要下载的文件的路径。
    • headers,可选项,一个对象,用于指定需要传递的 headers。
    • handler,必选项,一个函数,用于处理从远程服务器下载的数据。

在上面的例子中,我们使用了两个 patterns,'/*.md' 和 '/*.jpeg'。它们分别用于匹配需要下载的 markdown 文件和 jpeg 图片。对于这两个 pattern,我们都需要配置 downloader。我们给 outducker 对象传递一个 url、 headers 和一个 handler。url 用于指定需要从远程服务器下载的文件路径,headers 用于指定需要传递的请求头,handler 用于处理从远程服务器下载的数据。

例如,我们有一个远程 API 的地址是 'https://example.com/api/content',它会返回一个 JSON 格式的字符串,我们需要把这个字符串里面的所有 markdown 转换成一个 {path: xxx, content: yyy} 的数组,最后返回这个数组。这个 handler 函数的实现如下:

对于一个是从远程服务器下载并保存 jpeg 图片,handler 的实现如下:

示例

metalsmith-downloader 的使用方法可能有点复杂,为了更好地说明它的用法,下面给出一个完整的例子。

我们需要根据从一个 API 中获取的数据创建一个静态站点,API 的地址是 'https://example.com/api/content',它返回的数据结构如下:

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

我们需要把上面的数据保存到本地使用 metalsmith-downloader,例如,我们需要下载一个 markdown 文件和一个 jpg 文件,它们的 api 路径分别是:

我们需要将上面的数据转化为 {path: 'path/to/file', content: 'file content'} 的形式。具体操作如下:

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

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

上述代码中,我们使用 metalsmith 计算器 pdf,自动从远程服务器下载数据并保存到本地。在下载器的配置选项中,我们给下载器对象传递了一个 url 和一个 handler。url 指定了需要下载数据的 API 路径,handler 负责把下载的数据处理成形如 {path: xxx, content: yyy} 的形式。对于一个是从远程服务器下载并保存 jpeg 图片,handler 的实现如下:

我们还使用了其他 metalsmith 插件,在 markdown 中使用了 markdownit 插件,在 layouts 中使用了 handlebars 排版引擎。

总结

使用 metalsmith-downloader 可以帮助我们自动从远程服务器下载数据并保存到本地。使用方法比较复杂,但是使用起来也比较灵活。根据个人的需要,可以配置不同的下载选项,handler 函数可以灵活处理下载的数据,适配不同的场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f3e1d8e776d08040b6d

纠错
反馈