如何使用 Express.js 和 Handlebars.js 实现模板引擎

在前端开发中,模板引擎是一个非常重要的工具,用于生成 HTML 页面。其中,Express.js 是一款非常流行的 Node.js Web 框架,而 Handlebars.js 则是一款优秀的 JavaScript 模板引擎。本文将介绍如何使用 Express.js 和 Handlebars.js 实现模板引擎,并提供详细的示例代码、工作流程和指导意义。

Express.js

首先,我们需要安装 Express.js。您可以使用以下命令:

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

接下来,创建一个 app.js 文件并在其中输入以下代码:

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

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

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

我们使用 require 函数导入 Express.js 模块,并使用 express() 函数创建一个新的应用程序实例。接着,我们在应用程序中创建了一个主页路由,并在启动服务器时将其绑定到端口 3000 上。

Handlebars.js

接下来,我们需要安装 Handlebars.js。您可以使用以下命令:

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

Handlebars.js 在 HTML 视图中使用模板引擎生成 HTML 页面。

首先,我们需要创建一个新文件夹 views。在该文件夹中,我们将创建所有的 HTML 视图。例如,我们可以在 views/index.handlebars 文件中创建以下代码:

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

在上面的代码中,我们使用 Handlebars.js 的模板语言包装了 HTML 标签。花括号 ({{}}) 中的变量是我们将在 Express.js 应用程序中动态设置的变量。例如,我们可以将 pageTitlepageContent 插入到 HTML 中。

使用 Handlebars.js 编译器

然后,我们需要设置 Express.js 应用程序来使用 Handlebars.js。我们需要导入 Handlebars.js 并将其与一个标准的 JavaScript app.use 函数绑定:

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

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

在上面的代码中,我们使用了 Handlebars.js 编译器。app.engine 函数是 Express.js 提供的用于将模板引擎与指定文件扩展名匹配的函数。我们调用 app.engine 函数并传递 handlebars 作为模板引擎的名称、exphbs 作为模板引擎的实例、defaultLayout 作为默认HTML布局文件的名称。

接着,我们调用 app.set 函数来设置默认视图引擎为 handlebars

在 Express.js 中渲染视图

现在,我们已经设置好了 Express.js 应用程序和 Handlebars.js 模板引擎。接下来,我们需要在我们的代码中使用它们。

例如,我们可以创建以下代码:

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

app.get 路由使用了 res.render 函数,该函数接受两个参数:要呈现的视图文件的名称(在 views 文件夹中查找,扩展名为 handlebars),以及传递到该视图文件的任意数据,以便在该视图中进行渲染(例如 pageTitlepageContent)。

现在,我们已经创建了 about HTML 视图,它将在 /about 路由中呈现。在访问此路由时,Handlebars.js 将在 HTML 视图中将变量替换为动态的值。

Express.js 和 Handlebars.js 的优点

总之,使用 Express.js 和 Handlebars.js 可以实现有效的、动态的 HTML 视图。这使开发人员能够在代码中轻松合并动态数据和 HTML。此外,Express.js 和 Handlebars.js 的使用非常广泛,因此有大量的文档和社区支持。

示例代码

您可以在以下 GitHub 仓库中找到本文介绍的示例代码:

https://github.com/duolaAOIFE/using-express-and-handlebars-together

总结

本文介绍了如何使用 Express.js 和 Handlebars.js 实现模板引擎,提供了详细的步骤和示例代码。使用 Express.js 和 Handlebars.js 可以轻松创建动态的 HTML 视图,这使得开发人员可以构建高效、动态和动人的 Web 应用程序。

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


猜你喜欢

  • 了解 Sequelize ORM 中的 Models 什么时候才会初始化

    引言 Sequelize 是一个 Node.js 的 ORM 库,用于操作关系型数据库。在使用 Sequelize 时,我们需要定义一些 Models,来描述数据表的结构。

    1 年前
  • Angular 应用中解决跨域请求 API 的问题

    在前端开发中,跨域请求是非常常见的问题。在使用 Angular 框架进行开发时,如果需要从其他域名的 API 获取数据,就需要面临跨域请求问题。本篇文章将介绍如何使用 Angular 来解决跨域请求 ...

    1 年前
  • ES9 的 Symbol.prototype.description 详解和使用场景分析

    ES9 的 Symbol.prototype.description 详解和使用场景分析 在 ES9 中,新增加了一项特性——Symbol.prototype.description。

    1 年前
  • 如何在 ES8 中正确处理 JavaScript 数字值的精度

    如何在 ES8 中正确处理 JavaScript 数字值的精度 在前端开发中,我们经常需要对浮点数进行精确计算。但是由于 JavaScript 的数值类型是基于 IEEE 754 标准的浮点数格式,这...

    1 年前
  • SPA 应用中的多语言处理技巧

    在全球化的今天,一个贴近用户需求的多语言应用已成为前端开发工作中不可或缺的一部分。尤其在 SPA(单页应用)应用中,如何优雅地实现多语言处理是我们需要探讨的主题。在本文中,我们将从多语言方案设计、如何...

    1 年前
  • iOS11 无障碍 API 中 UIKit 增强

    随着社会的不断进步,无障碍访问的需求日益增加,特别是对于一些视力、听力、触觉等方面有障碍的人士。在 iOS 系统中,苹果公司提供了丰富的无障碍 API,以便开发者能够更容易地为所有人提供一个无障碍的访...

    1 年前
  • Express.js 如何处理 HTTP 请求的重试问题

    Express.js 如何处理 HTTP 请求的重试问题 在前端开发中,HTTP 请求是十分常见的一个操作,但有时候我们会遇到这样的情况:当请求出现错误或超时时,我们需要自动重试请求,直至请求成功或抛...

    1 年前
  • 为什么你的 Vue 应用速度这么慢?另一种性能优化思路

    Vue 是一个流行的前端框架,但是我们经常会遇到 Vue 应用速度变慢的问题。这可能是由于以下原因: 数据大小:如果你的数据集很大,那么 Vue 应用的性能就会受到影响。

    1 年前
  • Server-Sent Events POI 解密:通过 SSE 实现位置信息的实时获取

    随着 Web 技术的不断发展,前端技术也越来越受到重视。Server-Sent Events (SSE) 是一种用于接收服务器推送数据的技术,常用于实时数据更新和消息通知等场景中。

    1 年前
  • 如何在 GraphQL 中实现数据的分组平均值计算

    #如何在 GraphQL 中实现数据的分组平均值计算 GraphQL 是一种用于构建 API 的查询语言,现已成为前端开发中广泛使用的技术之一。在 GraphQL 中,数据的获取和处理都是基于类型的,...

    1 年前
  • 如何在 Deno 中使用 WebSocket 进行 P2P 通信

    前言 随着互联网技术的发展,P2P(点对点)通信越来越受到大家的关注。与传统的C/S(客户端/服务器)模式不同,P2P模式不需要中心服务器的介入,而是直接将数据传递给其他客户端。

    1 年前
  • Enzyme 中如何模拟用户交互事件

    Enzyme 中如何模拟用户交互事件 Enzyme 是 Facebook 开发的一个 React 测试工具库,用于方便地测试 React 组件。其中一个重要的功能就是可以模拟用户交互事件。

    1 年前
  • Koa 中使用 Koa-body 模块处理多种类型请求体的详解

    前言 在 Web 应用程序中,经常需要处理请求体。请求体是从客户端发送到服务器的数据,通常使用 POST、PUT、PATCH 等请求方法。HTTP 请求体可能具有不同的格式,如 URL 编码表单数据、...

    1 年前
  • 如何使用 PM2 监控 Node.js 应用的并发连接数

    在开发 Node.js 应用时,我们常常会面临高并发的挑战。对于具有大量用户请求的应用程序,我们需要确保它们能够同时处理大量的请求并且不会崩溃。使用 PM2 工具可以实现对 Node.js 应用的监控...

    1 年前
  • 在 Nuxt.js 应用程序中使用 Headless CMS 的最佳实践

    在现代的 Web 开发中,使用 Headless CMS 成为了一个不可或缺的选择,特别是在前端开发中。Headless CMS 不仅提供了管理 Web 内容的能力,还可以通过 API 来访问数据,可...

    1 年前
  • 解决 TailwindCSS 和 Bootstrap 混用时的样式冲突问题

    作为前端开发人员,我们会经常使用不同的CSS库来完成页面的样式设计。其中,TailwindCSS和Bootstrap是非常流行的两个CSS库。但是,当我们同时使用这两个库时,有可能会出现样式冲突的问题...

    1 年前
  • 在 PWA 应用中如何使用 JSBridge 进行原生调用

    随着移动互联网的不断发展,PWA 应用在 Web 开发领域内得到了越来越广泛的应用。然而,PWA 在某些场景下需要调用原生功能,如拍照、扫描二维码、获取地理位置等。

    1 年前
  • 使用 Mocha 测试中的 before、after、beforeEach、afterEach 钩子函数

    测试是前端开发工作中非常重要的一环,它能够帮助我们验证我们编写的代码是否按照预期正常工作。而 Mocha 就是一个流行的 JavaScript 测试框架,它支持使用钩子函数来在测试过程中提供更多的控制...

    1 年前
  • React Native 集成腾讯 Bugly 实现错误监控

    React Native 集成腾讯 Bugly 实现错误监控 React Native 是一种使用 JavaScript 构建原生移动应用程序的框架,它已经成为前端工程师入门移动端开发的首选框架。

    1 年前
  • Mongoose 中的缓存查询结果的实现方法

    Mongoose 是 Node.js 中一款流行的 MongoDB 驱动程序,它提供了强大的对象模型抽象,简化了与 MongoDB 的交互。在开发过程中,我们往往会遇到需要频繁查询数据库的情况,这时候...

    1 年前

相关推荐

    暂无文章