在 Node.js 中使用模板引擎 EJS 的完整教程

EJS 是一种简单、高效的模板引擎,它可以帮助我们在 Node.js 应用程序中实现动态的 HTML 页面生成。在本篇文章里,我们将深入讲解 EJS 的使用方法,并提供详细的指导和示例代码,帮助你快速掌握这一技术。

什么是 EJS?

EJS(Embedded JavaScript Templating) 是一个简单的 JavaScript 模板引擎,可以帮助我们在 Node.js 中创建动态的 HTML 页面。EJS 的工作原理是将 JavaScript 代码嵌入到 HTML 页面中,然后根据数据源动态生成 HTML 内容。EJS 本身非常灵活,可以支持布局、数据缓存、模板继承等功能。

EJS 的最大特点是使用简单,即使你没有学过其他模板引擎,也可以很快上手。

安装 EJS

在开始学习 EJS 之前,需要先安装该模板引擎。可以使用 npm 命令进行安装:

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

安装完成后,你可以在项目文件夹下创建一个名为 index.ejs 的文件作为 EJS 模板,然后在 Node.js 中运行该模板以生成 HTML 内容。

使用 EJS

创建 EJS 模板

首先,我们需要创建一个 EJS 模板文件。在模板文件中,可以通过 <% %> 标签来嵌入 JavaScript 代码。

下面是一个简单的 EJS 模板示例:

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

在这个模板中,我们使用了 <%= %> 标签来输出 JavaScript 变量 title 的值。

渲染 EJS 模板

当我们创建好 EJS 模板后,就需要在 Node.js 应用程序中渲染该模板了。可以使用 ejs.render() 方法来实现模板的渲染。

下面是一个简单的 Node.js 应用程序示例,用于渲染上文中创建的 EJS 模板:

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

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

在这个 Node.js 应用程序中,我们使用了 fs.readFile() 方法来加载 EJS 模板文件,然后使用 ejs.render() 方法渲染该模板。注意,第二个参数是一个对象,它包含了要传递给模板的数据。

最后,我们使用 http.createServer() 方法创建了一个 HTTP 服务器并将渲染后的 HTML 内容发送给客户端。

渲染 EJS 模板和数据

当我们要在 EJS 模板中使用数据时,可以通过 JavaScript 对象来传递数据。

下面是一个示例,演示了如何使用 JavaScript 对象来传递数据:

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

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

在这个示例中,我们使用了 JavaScript 对象 {name: "World"} 来传递数据到模板中。

EJS 的高级用法

条件判断

在 EJS 模板中,可以使用 <% if () {} %> 标签来实现条件判断。下面是一个示例:

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

在这个示例中,我们使用了 <% if () {} %> 标签来判断 name 是否存在,根据条件输出不同的内容。

循环

在 EJS 模板中,可以使用 <% for () {} %> 标签来实现循环。下面是一个示例:

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

在这个示例中,我们使用了 <% for () {} %> 标签来循环遍历一个包含多个用户的数组,然后输出每个用户的名称。

布局

在 EJS 模板中,可以使用布局来组织页面结构。布局是一种在多个页面中重复使用共同元素的方式。EJS 支持 include 标签来引入其他模板的内容。

下面是一个示例:

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

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

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

在这个示例中,我们使用了 include 标签来引入三个不同的模板:

  • partials/head:该模板包含了页面中的头部信息,如 CSS 和 JS 文件的链接。
  • partials/header:该模板包含了页面的导航栏和页眉。
  • partials/footer:该模板包含了页面的页脚信息。

在这个示例中,<%- body %> 标签是一个动态的占位符,用于填充页面的内容。当你在 Node.js 中使用 ejs.render() 方法渲染该模板时,可以将实际内容传递到该标签中。

结论

在本篇文章中,我们介绍了 EJS 模板引擎的概念、使用方法和高级用法。EJS 是一种非常简单、灵活的模板引擎,可以帮助 Node.js 开发者快速构建动态的 HTML 页面。如果你还没有尝试过 EJS,赶快动手试试吧!

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


猜你喜欢

  • 用 Angular 的 Ngrx 库管理应用数据的最佳实践

    简介 在一个 Angular 程序中,数据是非常重要的。在前端页面中,数据是用来填充页面的动态内容。在一个典型的 Angular 应用中,需要管理各种各样的不同类型的数据。

    6 天前
  • CSS Grid 与 Flexbox 区别及使用场景分析

    CSS Grid 和 Flexbox 都提供了一种新的布局方式,能够灵活地控制元素的位置和间距,使得页面布局和排版更加自由和优美。但是它们有不同的工作原理和使用场景,需要根据实际需求来选择合适的方案。

    6 天前
  • 深入分析 GraphQL 中最常见的 5 个错误

    GraphQL 是一种用于 API 构建的查询语言和运行时环境。它被广泛使用于前端开发中,帮助开发人员更好地管理数据和 API 调用。然而,在使用 GraphQL 时,很容易遇到一些常见的错误。

    6 天前
  • Tailwind CSS 常见问题解决方案合集

    Tailwind CSS 是一款流行的前端 CSS 框架,它被广泛应用于许多 Web 开发项目中。然而,即使是对于经验丰富的开发人员来说,使用 Tailwind CSS 时仍然可能出现各种问题。

    6 天前
  • Vue.js 开发遇到什么问题时如何提升自己的解决能力?

    Vue.js 是一款流行的 JavaScript 前端开发框架,它可以帮助开发者快速创建复杂的单页应用程序。但是,即使是经验丰富的开发人员在使用 Vue.js 时也会遇到一些问题。

    6 天前
  • 无障碍设计要点及其录制、播放的流程

    在当今数字化时代,无障碍设计成为越来越重要的话题,这是因为无障碍设计可以帮助更多的人接触和使用网站或者应用,特别是那些有视觉或听力障碍的人。这篇文章将介绍无障碍设计的要点以及如何将其录制和播放。

    6 天前
  • TypeScript 中的 Type Guards: 判断变量类型的方法

    随着 TypeScript 的快速发展,它现在已成为前端领域中最受欢迎的编程语言之一。TypeScript 强类型的特性可以确保我们的代码更加规范和可靠,提高代码的重用性和可维护性。

    6 天前
  • SSE 消息格式问题解读及优化:网络通信优化指南

    SSE 消息格式问题解读及优化:网络通信优化指南 前言 随着网站应用的普及,网页客户端向服务器发起异步请求的需求日益增加,但是 AJAX 不足以解决实时通信的问题。

    6 天前
  • 在 React 中正确使用 setState 方法

    在 React 中,使用 setState 方法可以触发组件的重新渲染,以更新组件的状态。然而,如果不正确地使用 setState 方法,可能会导致组件出现不受预期的行为,甚至影响整个应用程序的性能。

    6 天前
  • 使用 JavaScript 和 CSS 实现 Material Design 卡片效果

    Material Design 是一种设计语言,由 Google 推出。它的设计风格规范具有美观、干净、现代和直观等特点,适合用于构建 Web 应用程序。本文将介绍如何使用 JavaScript 和 ...

    6 天前
  • 在 Kubernetes 集群中如何管理 Secret

    Kubernetes 是一个容器编排平台,它可以让开发者更加方便地进行容器应用的管理和部署。在 Kubernetes 中,Secret 是一种用于存储敏感数据的对象,如 API 密钥、凭证等,这些数据...

    6 天前
  • Sequelize 模型定义中字符串长度限制不生效怎么办?

    Sequelize 是一个基于 Node.js 的 ORM(对象关系映射)框架,提供了简单易用的方式来连接和操作不同数据库(如 MySQL、PostgreSQL、SQLite)。

    6 天前
  • 解决在 Angular 应用中使用 @Input 和 @ViewChild 遇到的坑

    Angular 是一款流行的前端框架,其中的两个装饰器 @Input 和 @ViewChild 是很常用的。但是,在使用这两个装饰器时,有时候会遇到一些坑。在本文中,我们将探讨这些问题,并为您提供解决...

    6 天前
  • Promise.allSettled 方法详解及与 Promise.all 比较

    在前端开发中,使用异步编程技巧是很常见的。Promise 是一种广泛应用的 JavaScript 异步编程的解决方案,它可以使异步操作更加方便易读。 Promise.all 方法是用于处理多个异步操作...

    6 天前
  • 如何解决 ESLint 逼疯你的问题

    什么是 ESLint ESLint 是 JavaScript 代码静态检测工具,可以帮助我们在编写代码时避免一些常见的错误,规范化代码风格。在团队协作开发中非常有用。

    6 天前
  • MongoDB 如何实现数据复制

    MongoDB 是一种流行的 NoSQL 数据库,它的分布式架构使得它非常适合处理大规模和高性能的数据存储需求。在 MongoDB 中,数据复制是非常重要的一部分,因为它可以提高系统的可靠性和可用性。

    6 天前
  • 在 Deno 中使用 MongoDB 进行数据存储

    前言 Deno 是一种新型的 JavaScript 和 TypeScript 运行时,它的设计目标是解决 Node.js 中存在的问题。MongoDB 是一个非关系型数据库,被广泛应用于现代Web应用...

    6 天前
  • Vue.js 和 Angular 的异同及其使用场景

    Web 开发中,前端框架是必不可少的一部分。Vue.js 和 Angular 是目前广泛使用的两个前端框架,它们具有很多相似点,但也存在很多不同之处。本文将深入探讨这两个框架的异同以及它们的使用场景,...

    6 天前
  • Mongoose 实现 MongoDB 数据表间关联查询

    在使用 MongoDB 时,关系型数据表之间的查询一直是一个问题。Mongoose 是一个流行的 MongoDB 这个领域应用程序编写框架,它提供了一种优雅、灵活和高效的方式来访问 MongoDB 数...

    6 天前
  • 如何在 Node.js 中使用 Passport 进行身份验证

    前端开发中一个重要的问题就是如何进行身份验证。为了解决这个问题,我们可以使用 Node.js 中的 Passport。Passport是一个非常流行的 Node.js 身份验证库,它提供了很多不同的身...

    6 天前

相关推荐

    暂无文章