使用 Express.js 和 Handlebars 构建动态网页的完整教程

在前端开发中,构建动态网页是必不可少的一项技能。而使用 Express.js 和 Handlebars 可以轻松地构建出具有页面渲染和数据处理能力的动态网页。在本文中,我们将详细介绍如何使用 Express.js 和 Handlebars 构建动态网页,并提供示例代码以供参考。

什么是 Express.js 和 Handlebars?

Express.js 是一个基于 Node.js 平台的 Web 开发框架,提供了简单、灵活的 API,使得开发 Web 应用变得更加容易。它可以用于构建各种类型的 Web 应用,比如单页面应用、多页面应用等,而且还支持静态文件服务、请求路由和中间件等功能。

Handlebars 是一种流行的模板引擎,它可以通过简单的语法来生成 HTML 字符串,而且还支持数据绑定、逻辑处理等功能。使用 Handlebars 可以使我们更加方便地生成动态内容,并将这些内容渲染到网页上。

安装 Express.js 和 Handlebars

在开始构建动态网页之前,我们需要先安装 Express.js 和 Handlebars。在 Node.js 环境中,我们可以通过 npm 包管理器来进行安装。具体操作如下:

  1. 安装 Express.js
--- ------- ------- ------
  1. 安装 Handlebars
--- ------- ---------- ------

创建 Express.js 应用

安装完 Express.js 和 Handlebars 之后,我们可以开始创建一个简单的 Express.js 应用,用于演示如何使用 Handlebars 来构建动态网页。具体操作如下:

  1. 创建项目目录和文件

在命令行中输入以下命令来创建项目目录和文件:

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

其中,app.js 是我们的应用入口文件,views/index.handlebars 是我们的网页模板文件。

  1. 编辑 app.js 文件

app.js 文件中输入以下代码:

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

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

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

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

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

在代码中,我们首先引入了 Express.js 和 Handlebars,然后创建了一个 Express.js 应用。接着,我们使用 app.engine 方法来注册 Handlebars 作为我们的模板引擎,并设置默认的模板后缀名为 .handlebars。然后,我们定义了一个路由,当用户访问根路径时,会渲染 views/index.handlebars 文件并返回给用户。最后,我们使用 app.listen 方法来启动服务,监听 3000 端口。

  1. 编辑 index.handlebars 文件

views/index.handlebars 文件中输入以下代码:

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

在代码中,我们使用了 Handlebars 提供的模板语法,{{ title }}{{ body }} 分别表示渲染时要替换的内容。

  1. 启动应用

在命令行中输入以下命令来启动应用:

---- ------

然后,在浏览器中访问 http://localhost:3000,就可以看到我们刚刚创建的动态网页了。

向模板中传递数据

在上面的示例中,我们已经演示了如何使用 Handlebars 渲染简单的静态网页。但是,真正有用的网页肯定需要展示动态的数据。在 Express.js 中,我们可以使用 res.render 方法来将数据传递给模板,从而生成动态内容。具体操作如下:

  1. 在路由中传递数据

app.js 文件中,修改路由的处理逻辑,向模板中传递一些数据:

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

在代码中,我们首先定义了一个 data 对象,里面包含了 titlebody 两个属性,分别表示网页标题和正文内容。然后,在路由处理逻辑中,我们将 data 对象作为第二个参数传递给 res.render 方法。这里的第一个参数是模板文件名,可以省略后缀名。

  1. 在模板中使用数据

views/index.handlebars 文件中,修改模板文件以使用传递进来的数据:

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

在代码中,我们将 title 属性用于网页的标题,同时也渲染到了网页正文中。

  1. 重新启动应用

在命令行中输入以下命令来重新启动应用:

---- ------

然后,在浏览器中访问 http://localhost:3000,可以看到我们刚刚传递进去的数据已经被渲染在网页上了。

总结

使用 Express.js 和 Handlebars 构建动态网页是一项基本的前端开发技能。在本文中,我们详细介绍了如何安装 Express.js 和 Handlebars,并通过一个简单的示例演示了如何使用它们来构建动态网页。希望本文能够对你有所帮助。

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


猜你喜欢

  • ES6/ES7 的新特性学习总结

    ES6和ES7是JavaScript语言的重要进化版本,有很多新的特性和语法。本文将会介绍一些比较有意义的新特性,包括箭头函数、类、解构、异步编程等等,并提供相关的示例代码。

    1 年前
  • Docker 容器中配置 iptables 转发的方法

    随着云计算和容器技术的发展,Docker 已经被广泛应用于前端开发中,为了保障服务器的安全性,我们需要配置 iptables 转发规则。本文将介绍使用 Docker 容器中配置 iptables 转发...

    1 年前
  • ES11:全新的 String.prototype.matchAll()

    在 ES11 中,新增了一个非常实用的方法 String.prototype.matchAll(),用于获取字符串中所有匹配正则表达式的结果。这个方法不仅可以大大简化代码,同时也提高了程序的效率。

    1 年前
  • LESS 编译错误 “File to import not found”

    在使用 LESS 做前端工程时,经常会遇到这样的错误:LESS 编译过程中提示 “File to import not found” 。 问题分析 LESS 编译错误 “File to import ...

    1 年前
  • RxJS 中解决多个订阅者共享数据流的问题详解

    前言 在前端开发中,我们经常会遇到需要共享数据流的问题。例如,多个组件需要订阅某一事件,并接收到该事件的相关数据。在这种情况下,每个组件都需要单独发起请求来获取数据,这可能会导致大量冗余请求和数据的重...

    1 年前
  • Next.js 中如何解决部分页面更新的问题

    在前端开发中,我们经常会遇到需要更新部分页面内容的情况。传统的方式是使用 Ajax 技术,通过前端发送请求到服务器端获取数据,再根据数据更新页面内容。但是这种方式存在一些问题,比如需要手动维护路由和页...

    1 年前
  • 在 Angular 项目中实现 CSS 动画

    CSS 动画是一种在前端开发中非常常见的技术,它可以通过 CSS 属性来实现页面上各种各样的动画效果,如渐变、旋转、缩放、淡入淡出等。在 Angular 项目中,我们同样可以利用 CSS 动画来增强页...

    1 年前
  • JavaScript 学习笔记:解决你在 ECMAScript 2019 过程中遇到的 5 个常见问题!

    ECMAScript 2019 是由 ECMA 国际组织发布的一个 JavaScript 标准,提供了许多新功能和语言特性,可以让我们更方便地编写高效的 JavaScript 代码。

    1 年前
  • 如何通过 Bootstrap 框架快速实现响应式设计?

    随着移动设备的普及,响应式设计越来越受到关注。对于前端开发人员来说,如何快速实现响应式设计是一项必备的技能。Bootstrap 框架是一个流行的前端框架,它提供了许多实用的响应式设计工具和组件,可以帮...

    1 年前
  • Headless CMS 和机器学习:如何实现内容的自动化生成和优化?

    在当今数字化时代,内容创作已经成为各行各业的重要任务之一。为了保证内容的质量和数量,许多公司开始采用 Headless CMS 和机器学习来自动化生成和优化内容。 Headless CMS 传统的 C...

    1 年前
  • 使用 Tailwind CSS 时如何避免压缩导致的样式丢失

    Tailwind CSS 是一个流行的实用 CSS 框架,它的特点是使用大量的类名来定义样式的细节。虽然这种类名的方式可以带来便利和灵活性,但也有个缺点:编译后的 CSS 文件会非常庞大,这会导致加载...

    1 年前
  • Flexbox 实现固定区域布局解析:使用 overflow 和 align-self

    Flexbox 是一种强大的 CSS 布局方式,可以实现各种复杂的页面布局。本文将着重讲解如何使用 Flexbox 实现固定区域布局,同时介绍 overflow 和 align-self 属性的使用。

    1 年前
  • 如何在网格布局中控制元素的间距?

    网格布局是 CSS 中的一种新特性,它能够将元素组织成为网格形式,大大简化了网页的布局过程。但是在使用网格布局的过程中,控制元素之间的间距却是一件比较棘手的问题。本文将详细介绍如何在网格布局中控制元素...

    1 年前
  • 在 Mocha 测试套件中如何使用区块链?

    区块链是一种透明、不可篡改、高效安全的分布式数据库技术,近年来在国内外都受到了广泛关注和研究。随着区块链技术的不断应用,更多的开发者开始关注如何在自己的应用中直接应用这种技术,而使用 Mocha 测试...

    1 年前
  • SPA 应用中的优化技巧:利用 Tree-Shaking 和 Code Splitting 实现代码优化

    随着 Web 应用的发展,单页面应用(Single Page Application,SPA)越来越受欢迎。SPA 在用户体验、性能提升等方面有很多优势,但也有一些缺点,其中之一就是应用的代码体积太大...

    1 年前
  • PM2 进程守护实用技巧总结

    前言 在进行前端或后端开发时,经常需要启动多个进程并对其进行管理,以保证服务稳定运行。而 PM2 进程管理工具则能为我们提供方便的进程守护、日志记录、错误处理和集群管理等功能。

    1 年前
  • MongoDB 分片集群优化实战:让性能 “磨刀” 更出色!

    前言 在大数据应用场景下,数据量的增加和访问量的高峰期可能导致数据库性能瓶颈,影响应用的稳定性和用户体验。这时候,我们可以使用 MongoDB 分片集群来提高数据库性能。

    1 年前
  • 如何使用 Mongoose 实现 MongoDB 中的 TTL 和 Expire 操作

    前言 在 mongodb 中,我们可以使用 TTL 和 Expire 操作来自动删除过期的文档。这对于一些需要定期处理数据的应用非常有用。在本篇文章中,我们将介绍如何使用 Mongoose 实现 Mo...

    1 年前
  • 如何在 Deno 中进行文件读写操作

    Deno 是一个安全而现代的 JavaScript/TypeScript 运行时环境,可以用于构建 Web 应用、命令行工具和后端服务。Deno 自带安全性功能,其中包括文件系统访问控制,使得 Den...

    1 年前
  • 使用 ECMAScript 2021 (ES12) 中的标准 Queue 和 Stack 数据结构优化代码性能

    前言 随着前端应用程序的复杂度不断提高,如何优化代码性能成为了一个不可忽视的问题。在很多情况下,我们需要使用队列(Queue)和栈(Stack)等常见数据结构来处理复杂的业务场景,以使代码更具有可读性...

    1 年前

相关推荐

    暂无文章