npm 包 metalsmith-layouts-add-extension 使用教程

在前端开发中,Metalsmith 是一个强大的静态网站生成器,它是一个基于 Node.js 构建的工具,可以帮助开发者自动化完成构建、转换和优化网站的过程。Metalsmith 采用了类似于 Gulp 和 Grunt 的管道(Pipeline)方式,通过不同的插件来实现不同的功能。

Metalsmith-layouts 是 Metalsmith 的一个插件,可以帮助我们自动化渲染静态网站的布局。但是,这个插件有一个限制,就是只能支持 Handlebars、Mustache、Nunjucks 这三种模板引擎文件后缀名。如果你使用了其他的模板引擎,例如 Pug、EJS、Jade 等等,那么 Metalsmith-layouts 就无法正常工作了。

为了解决这个问题,我们可以使用另外一个 Metalsmith 插件:metalsmith-layouts-add-extension。这个插件可以让 Metalsmith-layouts 支持读取其他模板引擎的文件,例如 Pug、EJS、Jade 等等。

安装

在项目的根目录下执行以下命令来安装 metalsmith-layouts-add-extension:

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

使用

在 Metalsmith JavaScript 文件中,先引入插件:

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

然后,将 layoutsAddExtension 插件作为 layouts 插件的参数使用:

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

在上面的代码中,我们指定了 Pug 作为模板引擎,engine 参数指定了 Pug 的变量名。如果你使用的是 EJS,那么将变量名指定为 ejs;如果是 Jade,则指定为 jade。然后,指定了 Pug 模板文件所在的目录、局部模板文件所在的目录、默认的页面布局文件,接着使用 layoutsAddExtension 插件,并将 Pug 引擎传递给它,就完成了对 Pug 的支持。

接下来,我们可以在 Pug 文件中使用 extends 指令来继承父布局文件,例如:

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

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

在上面的代码中,我们继承了 default.pug 文件,同时使用 block 块语句来定义了内容块。在父布局文件中,我们可以使用 block 块语句来引用这个内容块,例如:

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

在上面的代码中,我们使用 block 块语句来引用了 content 内容块。当 Metalsmith 运行时,会自动将子布局文件中的内容块插入到父布局文件中。

此外,如果你想要使用自己的模板引擎并支持 Metalsmith-layouts,请确保你的模板引擎符合标准的模板引擎语法。在 Metalsmith-layouts 插件中,使用了一个变量 locals 来存储传递给模板引擎的数据,你的自定义模板引擎需要支持该变量的使用。

示例

使用 Pug 模板引擎的示例:

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

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

在项目的 src 目录下,我们创建了多个 .pug 文件,例如 index.pugabout.pug 等等。这些 .pug 文件都继承了 default.pug 布局文件,在子文件中使用 block 块语句来定义自己的内容,例如:

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

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

default.pug 布局文件中,我们使用 block 块语句来引用了子文件中的 content 内容块。

build 目录下,我们可以看到生成了多个 HTML 文件,这些 HTML 文件就是由 Metalsmith 生成的静态网站。其中,每个 HTML 文件都应用了自己的布局文件,并将子文件中的内容块嵌入到父布局文件中,最终生成了完整的页面。

结论

Metalsmith-layouts 是一个强大的静态网站生成器,可以帮助我们自动化渲染静态网站的布局,但是它只支持 Handlebars、Mustache、Nunjucks 这三种模板引擎文件后缀名。为了使用其他的模板引擎,我们可以使用 metalsmith-layouts-add-extension 插件来扩展它的功能。这个插件可以让 Metalsmith-layouts 支持读取其他模板引擎的文件,非常方便。

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


猜你喜欢

  • npm包ngx-datatable的使用教程

    在前端开发的过程中,我们需要经常处理大量的数据,为了增强数据的可视性和易读性,我们通常需要使用数据表格进行展示。ngx-datatable是一个开源的Angular数据表格组件,它可以快速地实现复杂的...

    2 年前
  • npm 包 postinstall-build-yarn 使用教程

    前言 在前端开发中,我们经常需要使用 npm 包,但是这些包都有一个共性,那就是需要通过构建工具进行编译、打包等操作才能使用。而 postinstall-build-yarn 这个 npm 包则提供了...

    2 年前
  • npm 包 power-assert-match 使用教程

    前言 在前端开发中,我们经常需要写测试用例来保证代码的质量,而一个好的测试工具是非常必要的。本文将介绍一款 npm 包 power-assert-match,这是一个基于 power-assert 的...

    2 年前
  • npm 包 readers 使用教程

    前言 在前端开发中,我们经常需要从文本文件或者网络资源中读取数据,这就需要使用到文件读取和 http 请求等相关功能。而在 JavaScript 中,我们可以通过使用 npm 包 readers 来解...

    2 年前
  • npm 包 usa-states 使用教程

    介绍 usa-states 是一个 npm 包,它提供了美国州名及其简称的数据,用于在前端开发中显示美国地图或表格时使用。 它的定位是一个轻量级、易使用的包,可以帮助开发者省去手头编写州名数据的烦恼。

    2 年前
  • npm 包 chasen-number-input 使用教程

    chasen-number-input 是一个易于使用的 npm 包,可以方便地实现数字输入框。本文将详细介绍如何使用此 npm 包,并提供示例代码和一些高阶应用技巧。

    2 年前
  • npm 包 simple-mock-promise 使用教程

    简介 simple-mock-promise 是一个可以帮助开发者快速进行前端单元测试的 npm 包,它可以模拟各种异步、同步操作的返回值,并且可以控制 Promise 相关操作的结果。

    2 年前
  • npm 包 react-asciidoc-generator 使用教程

    介绍 react-asciidoc-generator 是一个基于 React 的 AsciiDoc 文档生成器,可以帮助用户快速生成符合 AsciiDoc 格式的文档。

    2 年前
  • npm 包 aspect-to-rect 使用教程

    什么是 aspect-to-rect? aspect-to-rect 是一个用于计算纵横比并返回相应矩形尺寸的 npm 包。在前端开发过程中,我们经常会遇到需要计算图片或视频等资源的尺寸,而 aspe...

    2 年前
  • npm 包 ios-parallax 使用教程

    前言 在现代前端开发中,随着技术的发展,我们越来越重视用户体验,通过各种动画效果来提高网站或应用的用户体验。ios-parallax 这个 npm 包就是一种可以帮助我们实现视差效果的工具包。

    2 年前
  • npm 包 ciscospark-cli 使用教程

    前言 随着互联网的发展,以及越来越多的人使用互联网进行工作和学习,在线办公已成为一个不可忽略的趋势。Cisco Spark 是 Cisco 公司开发的一个企业级聊天工具,可以方便地进行在线沟通、文件共...

    2 年前
  • npm 包 angular-test-library 使用教程

    在前端开发中,我们经常需要测试 Angular 应用程序的各个功能。为了更方便地进行测试,我们可以使用 npm 包 angular-test-library。 该库是由 Testing Library...

    2 年前
  • npm 包 didi-console 使用教程

    前言 前端工程师在进行项目开发时,离不开npm包的使用。而 dadi-console 就是一款质量极高的 npm 包,它能够快速地接入大量系统,并通过简单的命令实现可靠的系统监控。

    2 年前
  • npm 包 generator-jack-js 使用教程

    在前端开发中,我们经常需要使用一些代码生成器(generator)来帮助我们快速生成项目骨架、组件、页面等。而 npm 上有很多开源的 generator,其中就有一款值得推荐的 generator-...

    2 年前
  • npm包coripo-generator-menstruation使用教程

    介绍 coripo-generator-menstruation是一个基于Node.js的npm包,用来生成经期记录的HTML页面。它可以帮助用户简易的记录经期,方便用户更好地了解自己的经期规律,也是...

    2 年前
  • npm 包 koc-todo 使用教程

    简介 koc-todo 是一个基于 React 实现的简单 TodoList 应用,它提供了完整的功能,包括添加、删除、修改任务等操作。它的设计简洁明了,易于上手,适合新手学习 React 开发应用时...

    2 年前
  • npm 包 generator-jack-license 使用教程

    引言 在前端开发中,我们常常需要创建一些新项目。这些项目需要有一份符合法律要求的软件许可证。要进行许可证的创建,我们需要进行繁琐的操作,这会耗费我们大量的时间。因此,我们需要一款工具,使得许可证的创建...

    2 年前
  • npm 包 magnet-sequelize-fixtures 使用教程

    简介 在开发前后端分离的应用程序时,我们通常需要开发一定的测试来验证我们的 API 能够正确地处理数据。通常,我们需要定义一些测试数据来插入到数据库中以验证我们的 API 是否能够正确地处理数据。

    2 年前
  • npm 包 lazysizes-umd 使用教程

    简介 lazysizes-umd 是一个前端 JavaScript 库,用于实现网页中的图片懒加载。相比其他类似的库,lazysizes-umd 能够自适应处理不同屏幕大小的图片,从而提高页面性能。

    2 年前
  • npm 包 react-seekr 使用教程

    介绍 react-seekr 是一个基于 React 的代码片段搜索组件。它提供了一个简单易用的 UI,方便用户查找并复制代码片段,用于学习或快速构建项目。 安装 使用 npm 安装 --- ----...

    2 年前

相关推荐

    暂无文章