npm 包 metalsmith-pager 使用教程

阅读时长 25 分钟读完

前言

在日常的前端开发中,我们经常需要介绍一些比较长的内容,例如博客文章、新闻报道、论述等,这时候就需要将内容分页来呈现。而对于静态网站生成器 Metalsmith,则有一个专门的 npm 包可以实现这个功能,它就是 metalsmith-pager

本文将介绍 npm 包 metalsmith-pager 的使用方法,帮助大家轻松实现网页内容分页功能。

安装

使用 npm 在命令行中安装 metalsmith-pager:

集成

在 Metalsmith 的配置文件中加入 pager 插件,例如:

上述代码中 use 方法的参数 pager() 是 metalsmith-pager 插件的实例化对象,构造函数可以接受一些参数。例如:

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

详细说明:

参数 描述 默认值
articlesPerPage 每页文章的数量 5
paginationLayout 分页链接的容器 HTML class 或 id pagination
paginationKey 用于生成 HTML class 或 id 的 key 值 pagination
nextPageTitle 下一页链接的文本 Next →
prevPageTitle 上一页链接的文本 ← Prev
pageMetadata 文章的元数据,将在分页链接处呈现,可以是字符串或函数 undefined
pageTemplate 文章的模板文件,例如 page.hbs。模板文件应该放在顶层目录的 templates 文件夹中 undefined

代码示例

为了演示 metalsmith-pager 的效果,我们在 ./src/articles 目录中增加了三篇博客文章 article1.mdarticle2.mdarticle3.md,内容分别如下:

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

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

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

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

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

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

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

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

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

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

为了让演示页面更丰富,我们在 ./src 目录下创建了一个名为 index.hbs 的 Handlebars 模板文件,内容如下:

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

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

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

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

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

./src 文件夹中的 metalsmith.js 文件会读取以上目录结构,使用 Metalsmith 进行输出:

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

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

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

将以上所有文件复制到项目文件夹中,然后运行以下命令,即可在 ./public 目录下生成网站:

效果展示

图片展示题面:传送门

在网站中访问 http://localhost:8080/articles/index.html,即可看到已经生成的带分页功能的文章列表页面:

总结

通过本文的介绍,您现在已经理解了如何使用 metalsmith-pager 实现网页内容分页功能。由于作者的能力有限,本文可能存在纰漏或不足之处,如果大家有更好的建议或补充,请随时在评论中提出。同时,我们也欢迎更多的前端开发者来参与 Metalsmith 及相关 npm 包的开发,共同推动静态网站生成器的发展。

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

纠错
反馈