Express.js 网页模板引擎之必须掌握 Pug

在前端开发中,模板引擎是一个非常重要的概念。模板引擎能够将数据和 HTML 模板进行渲染,生成最终的 HTML 页面。在 Node.js 中,常用的模板引擎有许多,其中 Pug 是一个非常流行的选择。本文将介绍 Pug 在 Express.js 中如何使用,以及掌握 Pug 的一些技巧和注意事项。

什么是 Pug?

Pug(前身为 Jade)是一个高效、健壮的模板引擎。其语法非常简洁,类似于 Python、Ruby 和 Haml 等其他模板引擎。Pug 不使用大括号、分号和冒号等符号,而是使用缩进和缩写的方式,简化了模板的编写。同时,Pug 支持变量、循环、条件、Mixin 等特性,使得模板的编写更加语义化和易于维护。下面是一个简单的 Pug 示例:

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

Pug 可以将上面的 Pug 模板编译成以下的 HTML 内容:

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

可以看到,Pug 语法相比 HTML 更加简单和易于理解。

在 Express.js 中使用 Pug

在 Express.js 中使用 Pug 非常简单,只需要安装 Pug 模块并在 Express.js 应用程序中设置模板引擎即可。下面是一段基本的 Express.js 应用程序,其中使用了 Pug 模板引擎:

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

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

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

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

上面的代码中,我们使用了 app.set('view engine', 'pug') 将 Pug 设置为 Express.js 的默认视图引擎。然后,在响应 / 路径的请求时,我们使用了 res.render('index', { title: 'My Pug Page', message: 'Welcome to Pug!' }) 渲染了名为 index 的 Pug 模板,并将 titlemessage 两个变量传递给模板。最后,我们监听了 3000 端口并启动了 Express.js 应用程序。

在 Express.js 中使用 Pug 还需要配置 Pug 的模板目录,默认情况下 Pug 会在应用程序根目录的 views 文件夹下查找模板。如果我们想指定不同的模板目录,可以使用如下代码:

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

上面的代码将模板目录设置为当前文件所在目录下的 templates 文件夹。

Pug 的语法和特性

除了上面提到的 Pug 的简洁语法外,Pug 还有许多其他有用的语法和特性。下面是一些需要了解的重要特性:

变量和表达式

Pug 支持在模板中使用变量和表达式。变量可以使用标准的 JavaScript 语法定义和解析,例如:

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

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

上面的代码中,我们使用了 - 符号表示 JavaScript 代码块。在 JavaScript 代码块中,我们可以使用 let= 定义和解析变量。当我们在 HTML 元素中使用 = 符号时,表示将 JavaScript 表达式输出到 HTML 中。

循环和条件

Pug 支持常见的循环和条件语句,例如:

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

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

上面的代码中,我们使用了 each 循环和 if/else 条件语句。在循环中,我们可以使用 each fruit in ['apple', 'orange', 'banana'] 来循环遍历数组,并将数组元素赋值给 fruit 变量。在条件语句中,我们使用 if userelse 来判断用户是否已登录,并输出相应的欢迎语句。

Mixin 和 include

Pug 还支持 Mixin 和 include,这两个特性可以让模板的重用变得更加容易。Mixin 可以为常用的 HTML 元素和组件定义一个模板,并在需要时进行调用,例如:

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

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

上面的代码中,我们使用了 mixin 定义了一个名为 box 的 Mixin,该 Mixin 包含了一个标题和一个内容。在需要渲染这个 Mixin 时,我们可以使用 +box('Hello', 'This is a box.') 的方式进行调用。

include 可以将其他 Pug 文件包含在当前文件中:

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

上面的代码中,我们使用了 include navbar.pugnavbar.pug 文件包含在当前文件中,这样就可以复用 navbar.pug 的模板内容。

总结

本文介绍了 Pug 在 Express.js 中的使用方法和常用的语法和特性。Pug 是一个高效、简洁和易于维护的模板引擎,为我们在开发中提供了许多便利。通过学习本文中的内容,我们可以更加熟练地掌握 Pug,提高我们在前端开发中的效率和质量。

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


猜你喜欢

  • Redux 中间件 thunk 的用法及详解

    在 Redux 中,Thunk 是一种中间件,可以让 Redux 处理异步操作和副作用。本文将详细介绍 Redux 中间件 thunk 的用法、原理以及实际应用。 什么是 Redux 中间件 thun...

    1 年前
  • 常用 Webpack 插件介绍及使用指南

    Webpack 是一个打包工具,可以对多个文件进行依赖分析,并将它们打包成一个或多个文件。在前端开发中,Webpack 已经成为一个不可或缺的工具。除了核心功能之外,Webpack 还提供了众多插件,...

    1 年前
  • Android Material Design 规范的设计思路及原理详解

    引言 在移动互联网的浪潮下,移动应用的开发越来越成为前端工程师面临的重要问题。而众所周知,应用的用户体验是衡量一个应用成功与否的重要指标。为了提升用户体验,Google推出了 Material Des...

    1 年前
  • RxJS 中 combineLatest 的原理及实现方式

    RxJS 中 combineLatest 的原理及实现方式 RxJS 是一种在前端开发中广泛使用的编程语言,它是一种基于事件流的响应式编程语言。在其中,combineLatest 是其中的一个方法,这...

    1 年前
  • 在 SPA 应用中使用 Mock 数据进行开发测试

    单页面应用(SPA)是一种新型的网站架构,它运用了现代 Web 技术,实现了无需刷新页面就能加载和展示数据的功能,给用户带来了更好的用户体验。在开发 SPA 应用的时候,我们需要频繁地进行测试,以保证...

    1 年前
  • ECMAScript 2021 (ES12) 中如何使用 Promise.allSettled 来优化异步操作

    随着前端开发中异步操作越来越普遍,Promise 成为我们处理异步操作的重要工具。在 ECMAScript 2021 (ES12) 中,Promise 新增了一个非常方便的 API —— Promis...

    1 年前
  • Promise 在 Web API 中的应用实例分享

    在前端开发中,我们经常会使用异步操作来执行一些耗时较长的操作,例如通过网络请求获取数据,或者执行大量计算。传统的做法是利用回调函数进行异步操作的处理,但是回调函数嵌套产生的回调地狱使得代码变得难以维护...

    1 年前
  • 如何利用 Koa.js 和 Apache Solr 构建全文搜索引擎

    在现代社会,搜索引擎已经成为人们获取信息的主要方式之一。因此,如何构建一款高效、精准的全文搜索引擎成为了很多开发者关注的问题。在本文中,我们将介绍如何利用 Koa.js 和 Apache Solr 构...

    1 年前
  • PM2 与 PM2 Backoff 的区别及使用场景

    前言 在前端应用的开发过程中,我们经常需要运行多个进程来处理不同的任务。这些进程可能因为各种原因而死亡,而 PM2 是一个流行的 Node.js 进程管理器,可以帮助我们管理这些多进程应用。

    1 年前
  • Web Components 中使用 slot 分发内容

    随着 Web 技术的不断发展,Web Components 也逐渐成为了前端开发的热门技术之一。Web Components 它提供了一种将 HTML、CSS 和 JavaScript 封装到自定义元...

    1 年前
  • Docker 部署 JavaWeb 应用实践

    前言 Docker 技术的出现改变了软件开发和部署的方式。Docker 能够将应用和其依赖的环境打包在一起,方便快捷地迁移和部署。JavaWeb 应用作为企业级常见应用,采用 Docker 容器化部署...

    1 年前
  • Mongoose 中使用 Schema.Types.Buffer 存储数据

    Mongoose 中使用 Schema.Types.Buffer 存储数据 什么是 Mongoose? Mongoose 是一个 Node.js 库,为 MongoDB 提供了对象模型工具,使得在 N...

    1 年前
  • 在 React Native 应用中使用 Socket.io 实现实时通讯

    Socket.io 是基于 WebSocket 的一个实时通讯库,支持跨平台、多种浏览器和设备的实时通讯。在 React Native 应用中集成 Socket.io,可以实现类似于聊天、游戏等实时通...

    1 年前
  • 使用 Angular 和 Azure 构建云原生应用程序的步骤和技巧

    随着云计算技术的快速发展,云原生应用程序成为了越来越受欢迎的开发模式。在这种模式中,应用程序会被拆分成多个微服务,可以在云端灵活扩展和部署。Angular 和 Azure 是目前比较流行的前端和云计算...

    1 年前
  • Kubernetes 多网络实现方案

    前言 Kubernetes 是一个流行的容器编排工具,它能够自动化地管理容器化应用程序的部署、扩展和故障恢复。然而,在 Kubernetes 集群中,如何利用不同的网络实现方式来满足不同的业务需求呢?...

    1 年前
  • Next.js 如何对项目进行打包压缩以提高访问速度

    在开发前端项目时,优化网站性能是非常重要的一部分。其中,对项目进行打包压缩可以大大提高访问速度和用户体验。本文将介绍如何使用 Next.js 进行项目打包压缩,详细说明其原理以及如何实现。

    1 年前
  • Cypress 中如何实现多种浏览器窗口尺寸切换?

    介绍 Cypress 是一款流行的前端自动化测试框架,可以用于编写 E2E 自动化测试。在编写自动化测试时,可能需要测试不同浏览器窗口尺寸下的 UI 布局。本文将介绍如何在 Cypress 中实现多种...

    1 年前
  • 使用 SSE 实现在页面上运行特定的代码

    本文介绍如何使用 SSE(Server-Sent Events)技术在网页上实现运行特定的代码,同时也探讨了 SSE 的基本原理以及如何在前端中使用它。本文涉及到的知识点包括 JavaScript、H...

    1 年前
  • 如何在 GraphQL 中实现模糊查询?

    GraphQL 是一种数据查询语言和运行时环境,可以用于前后端通信。在 GraphQL 中,模糊查询是常见需求之一。本文将介绍如何在 GraphQL 中实现模糊查询,让开发者更加灵活地进行数据查询。

    1 年前
  • 闪耀的 2018,这些前端技术你学会了吗?

    2018年,前端领域经历了许多重要的发展和新技术的涌现。如果你是一位前端开发人员,那么掌握这些技术将增加你的技能和竞争力,让你在职场上更具竞争力。在这篇文章中,我们来一起学习以及总结2018年最重要的...

    1 年前

相关推荐

    暂无文章