Node.js 中如何使用 Handlebars 模板引擎

在现代 Web 开发中,模板引擎是一个非常重要的环节。在 Node.js 程序中,可以使用 Handlebars 来进行模板渲染。Handlebars 是一个常用的模板引擎,它基于 Mustache 模板语言,并加入了更为强大的功能,支持嵌套,包含,条件等等。

本文将详细介绍使用 Handlebars 模板引擎的基本用法,并结合代码示例,以便读者更加深入地了解如何在 Node.js 中使用 Handlebars。

安装 Handlebars

在 Node.js 中使用 Handlebars 需要先进行安装,可以使用 npm 进行安装。在控制台输入以下命令:

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

使用 Handlebars

在安装完成后,可以使用以下方式来使用 Handlebars。

编写 template

用 Handlebars 来编写模板十分简单。这里介绍一个简单的例子:

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

上面例子中的模板使用了 mustache 语法来插入数据。例如,{{#each posts}} 与 {{/each}} 这一段代码是一个标准的 mustache 语法循环模板。它表示将渲染数据中的 posts 数组。

编写数据源

接下来需要编写数据源,它是一个普通的 JSON 对象,如下:

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

上面的数据源包含了两个文章,每个文章有对应的 title 和 content。

渲染模板

渲染模板也十分简单,只需要读取模板和数据源,然后调用一下 Handlebars.compile() 方法就可以了。

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

以上代码定义了一个数据源 context,然后使用 Handlebars.compile() 方法编译模板,最后将编译好的模板和数据源合并渲染出 HTML。运行结果就是渲染后的 HTML 代码。

使用 partials

Handlebars 提供了 partials 功能,可以将一个模板定义在另一个模板中。这样可以在一个大的模板中拆分成若干个小的模板。例如:

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

上面的模板定义了一组文章,然后通过 {{> post}} 这个语法调用了另一个模板。这个模板需要保存为 post.hbs 文件:

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

以上就是使用 Handlebars 的基本用法,接下来通过代码示例更好地理解他们的使用。

代码示例

我们以一个使用 Handlebars 渲染一个界面的示例来介绍 Handlebars 的用法。

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

在这个例子中,我们读取了一个名为 index.hbs 的 Handlebars 模板。然后运用 Handlebars.compile() 方法编译代码并进行渲染,最后将渲染后的 HTML 输出到浏览器。

这个模板将渲染一些菜单项和一段欢迎语,其中包含三个菜单项,分别是 Home、About 和 Contact。

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

这个模板将对数据进行处理并输出渲染结果。这本质上是一个 HTML 文件,只不过使用了 handlebars 的模板引擎语法来构建一个动态的 HTML 页面。

结论

Handlebars 是一个非常好用的模板引擎,它为我们构建动态 HTML 带来了很大的便利性。在 Node.js 中使用 Handlebars,可以通过 npm 进行安装,渲染模板需要编写模板和数据源,这样就可以进行渲染了。Handlebars 还提供了很多其他的用法,例如 partials,可以大大提高代码的可读性和可维护性。

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


猜你喜欢

  • 响应式设计实战练习:实现一个响应式网页

    响应式设计实战练习:实现一个响应式网页 随着移动设备的普及,响应式设计已经成为了前端开发的一个重要技能。响应式设计能够提供优秀的用户体验,并且可以让网站在不同的屏幕大小下看起来舒适自然。

    6 天前
  • Redis 使用场景详解(五)—— 排行榜

    前言 Redis 作为内存型的 NoSQL 数据库,具有很高的读写性能,广泛应用于缓存、队列、计数器等场景。在前面的文章中,我们讨论了 Redis 在缓存、消息队列、分布式锁、分布式哈希表等场景中的使...

    6 天前
  • 如何优化 GraphQL 数据加载速度?

    作为前端开发者,在构建现代化网络应用程序时,您必须同时考虑功能和性能。 GraphQL 是一种强大的查询语言,它使您能够查询服务器上的数据,而无需编写多个 API 端点或多个请求。

    6 天前
  • Flexbox 布局中元素的换行方式

    Flexbox 是一种强大的布局方式,它提供了非常灵活的布局方式,可以轻松实现各种布局需求。在 Flexbox 中,元素的换行方式可以通过 flex-wrap 属性进行设置。

    6 天前
  • 构建 SEO 友好的 Headless CMS:如何优化下沉渲染?

    前端工程师们都知道,搜索引擎优化 (SEO) 对于网站流量和排名的重要性。然而,如何为一个 Headless CMS 系统制定有效的 SEO 策略,这可不是一件简单的事情。

    6 天前
  • 如何在 Cypress 测试中模拟使用鼠标进行操作

    Cypress 是一个流行的前端测试框架,可以方便地编写自动化测试脚本。在编写 Cypress 测试时,有时需要模拟用户使用鼠标进行操作,例如单击、双击、拖拽等。本文将介绍如何在 Cypress 测试...

    6 天前
  • 如何使用 TypeScript 重构 Angular 应用程序

    随着前端技术的发展,TypeScript 作为一种静态类型检查的 JavaScript 越来越受欢迎。Angular 是一种基于 TypeScript 开发的大型 Web 应用程序框架。

    6 天前
  • 在 React 中使用 HOC 的最佳实践

    HOC(Higher-Order Components)是一种在 React 中用于重复使用组件逻辑的高级技术。它是一种函数,可以接受一个组件作为参数,并返回一个新的组件。

    6 天前
  • 为什么考虑无障碍可以帮助你的网站性能

    随着互联网的普及和使用,网络无障碍性 (Web Accessibility) 已经成为了前端开发中不可忽视的一个关键问题。在现代社会中,有越来越多的用户需要用特殊的技术工具来访问互联网,例如屏幕阅读器...

    6 天前
  • PWA 应用开发中常见的数据缓存问题及解决方法

    PWA 应用的优点之一是支持离线访问,但这也引发了数据缓存的问题。在 PWA 应用中,很多数据需要缓存,如静态资源、API 响应等。在本文中,我们将讨论 PWA 应用开发中常见的数据缓存问题及解决方法...

    6 天前
  • 如何使用 Kubernetes 进行多租户应用的管理

    引言 在现代云原生应用的开发和部署过程中,Kubernetes 已经成为了不可或缺的一部分。而在大型企业和机构中,有很多不同的团队和部门需要共享一个 Kubernetes 集群,每个团队只能访问其负责...

    6 天前
  • Bootstrap 响应式框架的实现原理与优化

    随着移动设备的普及和应用,现代 web 开发中,响应式设计越来越成为前端开发者所必须掌握的技能。Bootstrap 框架广泛应用于响应式 web 设计中,因为其提供了简洁易用的 CSS 和 JavaS...

    6 天前
  • Promise 中 then 和 catch 方法参数的使用技巧

    Promise 在前端开发中被广泛应用,通过 Promise 帮助我们处理异步操作,避免回调陷阱和层层嵌套。then 和 catch 方法是 Promise 的两个常用方法,本文将从具体应用和实际效果...

    6 天前
  • 在 Angular 应用中使用 PWA 的最佳实践

    随着 PWA(渐进式 Web 应用程序)的流行,越来越多的前端开发人员开始探索如何在 Angular 应用中使用 PWA 技术。在本文中,我们将深入探讨在 Angular 应用中使用 PWA 的最佳实...

    6 天前
  • 如何在 Fastify 中添加中间件

    Fastify 是一个快速、低开销和高度可定制的 Web 框架,可以帮助开发者构建出高性能的应用程序。在 Fastify 中添加中间件是一个非常常见的需求,本文将会详细介绍如何在 Fastify 中添...

    6 天前
  • 使用 CSS Grid 实现自适应的图片布局

    CSS Grid 是一个强大的布局工具,它能够帮助我们轻松地实现复杂的布局结构。在本文中,我们将介绍如何使用 CSS Grid 实现自适应的图片布局。 CSS Grid 简介 CSS Grid 是一个...

    6 天前
  • 如何解决 GraphQL Schema 报错问题?

    GraphQL 作为一种语言,其 Schema 是十分重要的组成部分。在使用 GraphQL 进行前后端交互时,当我们进行 Schema 开发时,往往会遇到各式各样的错误,本文将为前端开发者提供一些解...

    6 天前
  • Vue.js 中使用动画的详细使用方法

    动画是现代前端开发中的不可或缺的一部分,可以为页面增加生动感和交互性,提高用户体验。Vue.js 自带动画库,能够轻松地在 Vue 组件中使用动画。 本篇文章将介绍 Vue.js 中动画的使用方法,包...

    6 天前
  • PM2 常常出问题?如何进行日志快速定位问题

    在前端开发中,我们经常会使用 PM2 来进行进程管理。但是,有时候我们会发现 PM2 常常出问题,而且很难定位问题。本文将会分享一些技巧,教你如何快速定位 PM2 的问题。

    6 天前
  • PWA 应用中缓存机制的具体实现方式

    随着移动设备的使用越来越普及,PWA(Progressive Web App)成为了一个热门的话题。PWA 应用的一个重要特性就是离线缓存,它可以帮助应用在离线状态下保持功能和数据的准确性。

    6 天前

相关推荐

    暂无文章