首页 > 其他分享 >Jekyll 教程——模块化(includes)

Jekyll 教程——模块化(includes)

时间:2023-01-04 14:36:47浏览次数:68  
标签:footer 模块化 includes Jekyll html 模块 include


我们知道,软件工程里面有一个很重要的概念,叫「高内聚低耦合(High cohesion & Low coupling)」。

意思是说,程序结构中各模块的内聚程度越高,模块间的耦合程度就越低,一个好的内聚模块应当恰好做一件事。

Jekyll 的 includes 便是这个概念的产物。利用 inlcudes,我们可以将页面的通用模块提取出来,单独维护。

例如,所有页面共享的导航、分享、脚注:

Jekyll 教程——模块化(includes)_建站

includes 用法

按照 Jekyll 惯例,首先创建一个符合约定的文件夹 ​​_includes​​ ,用于存放对应的模块文件。

然后在该文件夹下创建不同模块所对应的 html 文件,再将它们通过 Liquid 的 ​​include​​ 指令引用到目标页面中。

上一篇介绍 ​​Jekyll 布局文件​​时,我们定义过一个默认布局文件 ​​default.html​​:

_layouts/default.html

<!DOCTYPE html>
<html>
<body>
<main class="page-content" aria-label="Content">
<div class="wrapper">
{{ content }}
</div>
</main>
</body>
</html>

这里稍加改造,利用 includes 为它增添脚注——​​footer.html​​:

<!DOCTYPE html>
<html>
<body>
<main class="page-content" aria-label="Content">
<div class="wrapper">
{{ content }}
</div>
</main>
{%- include footer.html -%}
</body>
</html>

​footer.html​​​ 是标准 HTML 代码,具体可参考 ​​minima/_includes/footer.html​​。

includes 传参

includes 通过模块的概念把通用功能抽象成一个个相对独立的文件,这些文件还可以通过参数来实现个性化。

我们以页面中常用的图片模块为例,在 ​​_includes​​​ 文件下创建一个名为 ​​image.html​​ 的文件,它的内容如下:

<figure>
<a href="{{ include.url }}">
<img src="{{ include.file }}" style="max-width: {{ include.max-width }};"
alt="{{ include.alt }}"/>
</a>
<figcaption>{{ include.caption }}</figcaption>
</figure>

可以看出,它一共定义了 5 个参数:

  • url
  • max-width
  • file
  • alt
  • caption

这 5 参数可以由外部直接传入:

{% include image.html url="http://jekyllrb.com"
max-width="200px" file="logo.png" alt="Jekyll logo"
caption="This is the Jekyll logo." %}

这样就实现了 ​​image.html​​​ 的定制化,有点类似于 ​​class​​ 的构造方法。

​include_relative​

除了从 ​​_includes​​ 文件夹下引用文件,Jekyll 还提供了另外的方式。

不过命令从 ​​include​​​ 换成了 ​​include_relative​​。顾名思义,引用的文件路径是相对路径。

{% include_relative somedir/footer.html %}

这里的 ​​somedir/footer.html​​​ 是一个相对于当前文件的路径,不支持引用上级目录(​​../​​)。

下一篇我们来看看如何用 Jekyll 构建个人博客。


标签:footer,模块化,includes,Jekyll,html,模块,include
From: https://blog.51cto.com/u_15929756/5988607

相关文章

  • 深入浅出es6模块化
      天下苦CommonJs久矣EsModule的独特之处在于,既可以通过浏览器原生加载,也可以与第三方加载器和构建工具一起加载。支持Esmodule模块的浏览器可以从顶级......
  • 31_Java中的模块化
    Java中的模块化一、模块化概述​ Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来......
  • 20、前端基础-ES6---模块化
    ......
  • VUE3 全局共享数据方案之一 VUEX企业级模块化设计(详细流程)
    Vue3,webpack,vite通用适用于中大型项目中1.安装vuexnpmivuex 2.创建仓库与文件结构(核心)一,创建入口在src目录下创建store文件夹,store文件夹下创建下面文件结......
  • webpack学习一:什么是模块化开发,什么是webpack,以及二者之间的关系。
    文章目录​​前言​​​​一、模块化开发、webpack​​​​一、模块化开发(前端模块化)​​​​1.JavaScript原始功能​​​​2.匿名函数的解决方案​​​​3.使用模块作为......
  • Day 04 模块化
    模块化一、模块化概念模块化指解决一个复杂问题时,自顶向下逐层把系统划分为若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。二、Node.js中的模块......
  • Selenium35-模块化设计
    模块化设计模块化用来分隔,组织和打包软件每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要的功能在系统结构中,模块是......
  • SOLIDWORKS模块化设计
    SOLIDWORKS模块化设计的核心思想是将产品分成不同的模块,以模块作为基本单元来进行产品的设计和生产。新产品的研发也可以通过对模块的改进、变更来进行。产品模块化现已成......
  • Node.js 中的模块化
    1Node.js中模块的分类Node.js中根据模块来源的不同,将模块分为了3大类,分别是:⚫内置模块(内置模块是由Node.js官方提供的,例如fs、path、http等)⚫自定义模块(用户......
  • 解决es6的模块化函数无法被远程引入的问题 (后端返回js文件,前端使用)
    问题:带export的js只能使用import或 require引入,     但是 import或 require 导入的方法或者文件,它是依赖于本地环境的,必须在编译阶段可以解析路径。......