Node.js 中的 Ejs

2025年5月2日 | 阅读7分钟

在 Web 开发的世界里,Node.js 在 2010 年之前并不受欢迎,直到有人决定创建一个服务器端 JavaScript 框架。Node.js 几乎已成为开发可扩展、高效的服务器端应用的代名词,尽管这并非绝对的定义。毫无疑问,在 Web 应用开发中,涉及在客户端渲染动态内容是重要活动之一。这就是像 EJS (嵌入式 JavaScript) 这样的模板引擎发挥作用的地方,它为开发人员提供了一个出色的工具,可以快速生成 HTML 标记。

理解 EJS

EJS 是一种基于 HTMLJavaScript 的语法,它允许开发人员将纯 JavaScript 集成到 HTML 标签中。它允许我们将 JavaScript 代码直接嵌入到 html 文件中,这意味着我们可以轻松地在视图中添加动态内容和逻辑。EJS 不采用新的模板语法,这意味着对于了解 HTML 和 JavaScript 的开发人员来说,EJS 易于理解和实现。

具体来说,EJS 可以用于设计 Node 应用中的视图/模板,就像其他模板引擎一样,它也可以按照如下方式进行设置:JS

安装后,我们可以配置我们的 Node.js 应用程序使用 EJS 作为视图引擎。下面是一个使用 Express.js 的基本示例。

输出

Hello, EJS!
Welcome to my EJS-powered website!

使用 EJS 创建动态视图

一旦我们在 Node.js 应用程序中设置好了 EJS,我们就可以通过在 HTML 文件中嵌入 JavaScript 代码来开始创建动态视图。下面是一个简单的 EJS 模板示例:

输出

Hello, EJS!
Welcome to my EJS-powered website!

在这里,<%= title %> 和 <%= message %> 是文本标签,在模板渲染时会被替换为实际数据。数据可以通过在 Express 路由处理程序的 res.render() 方法的第二个参数传递的对象中设置来传递给模板。

利用 EJS 的特性

我们已经确定了 EJS 的几个特性,这使得该工具在动态构建 Web 应用程序方面非常有效。其中一些特性包括:

  • 控制结构:除了输入和输出语句外,我们还可以使用实际应用程序中的控制结构,如 if 语句和循环。
  • 部分视图:例如,我们可以将视图分解成可以多次使用的较小元素,然后借助 partialName 团队和要输入的代码 <%- include('partialName') %> 来管理它们。
  • 自定义标签:EJS 能够创建可定义的标签和函数,这些可以添加到 EJS 中以进一步自定义。
  • 易用性:在 EJS 中,HTML 以纯 JavaScript 的形式编写,这使得开发变得容易,而且我们不需要学习新的语法。对于已经掌握 JavaScript 和 HTML 的开发人员来说,这非常方便,因为它只是对这两种编程语言的补充。
  • 无缝集成:通过中间件,EJS 与包括 Express 和其他 Node.js 框架在内的多个 Web 框架实现了无缝兼容,可以协同工作,创建一个统一的环境来构建全栈应用程序。
  • 动态内容:允许轻松地将动态数据嵌入到我们的 HTML 中,这增强了其可用性,同时能够根据用户或其他可变因素实时更新浏览器显示。
  • 可重用组件:使用部分视图,可以将所有视图分解成更小、更易于管理的组件,这也能增强代码的分离,从而符合 DRY 原则。

社区和支持

谈到优点,EJS 是一个非常流行的模板引擎,这意味着它拥有活跃的社区,并且可以在网上找到更多的资源,当出现问题或遇到特定问题时,这非常有用。

研究讨论了使用 EJS 构建传统和 RESTful Web 应用程序的最佳实践,以及如何与其他工具集成,特别是数据库系统。

  • 组织我们的视图:它告诉我们按照目录结构来组织视图文件,以帮助检索所需的视图。将具有共同功能的视图放在一个目录中,如果应用程序很大且分成几个部分,则为每个部分创建子目录。
  • 明智地使用部分视图:使用部分视图来避免频繁编写相同的组件,例如页眉、页脚和导航栏。这不仅鼓励代码重用,而且增强了模板的组织和管理。
  • 最小化模板中的逻辑:虽然 EJS 允许我们在网站模板中使用 JavaScript,但不应该将业务逻辑放入视图中。否则,请在路由处理程序中处理数据,只将需要显示的数据提供给模板。
  • 安全注意事项:这是第三个建议,也是最重要的建议之一,因为它指出在模板中转义用户输入始终很重要,这样我们才不会受到跨站脚本攻击(XSS)的威胁。EJS 在使用 <%= %> 语法时会修改输入以显示为 HTML,但我们应该考虑潜在的安全威胁。

高级 EJS 技术

Node.js 中的一些高级 EJS 技术如下:

  • 自定义过滤器和助手:通过使用插件或页面函数(如自定义过滤器或助手函数)添加到我们的模板中。配置可以推断日期、货币或任何其他数据类型,从而在整个应用程序中一致地应用格式。
  • 模板继承:然而,EJS 通常不像其他模板引擎那样使用模板继承,但可以通过部分视图来实现。开发基本框架并相应地对其进行编码,通过集成与部分相关的程序化方面。
  • 条件包含:在运行时使用条件包含布局的特定部分,以根据用户角色、他们的选择或任何其他因素更改显示的组件。
  • 预编译模板:如果我们的网站在性能关键区域大量依赖 EJS 模板,那么预编译我们的 EJS 模板可能会对我们有益。它还可以消除潜在的过度图内存消耗,而不会带来可感知的优势,并直接有助于更快的渲染帧。

以下是 EJS 的各种典型应用的细分:

  • 单页应用程序(SPA):它提供 EJS 来提供应用程序的初始 HTML,并渲染动态视图,以保持对使用 React 或 Angular 的 SPA 的支持层。
  • 多页应用程序:对于使用许多 HTML 页面构建的普通可点击 JS 应用程序,EJS 特别适用,因为它在页面上渲染动态内容和快速导航方面提供了灵活性。
  • 仪表板和管理面板:当使用 EJS 快速开发动态和数据驱动的应用程序界面时,包括仪表板和管理界面,它支持管理复杂嵌套的数据结构。
  • 电子邮件模板:通过使用 EJS,可以创建动态生成 HTML 模块来发送电子邮件,但需要严格的模板来与客户和潜在客户进行通信,所有这些都带有不同的内容。

故障排除和调试技巧

Node.js 中的 EJS 技术的一些故障排除和调试技巧如下:

  • 详细错误日志:如果设置为“Debug”,请确保在分发或部署到生产环境时关闭我们的调试设置,这将帮助我们养成良好的编码习惯并防止模板出现问题。
  • 模板验证:定期检查模板,这样我们就不会遇到在放入数据集时出现问题的情况。
  • 使用 Linter 工具:使用 Linter 来捕获语法错误并确保在 EJS 模板中满足代码标准。
  • 模块化测试:我们应该测试我们的模板,隔离各个模块,并分别检查每个模块的输出,以确保在将它们组合成最终模板之前,模板的所有部分都能正常工作。

结论

总之,在 Node.js 中学习 EJS 通过集成 JavaScript 和 HTML 来简化创建过程,这为开发人员提供了简单的方法来创建强大的应用程序,而无需担心通常涉及的复杂语法或配置过程。EJS 是任何想要开始进行服务器端渲染的人,或者想要快速便捷地创建实际内容的人的绝佳选择。

通过 EJS 中可用的部分视图和标签,开发人员可以创建出易于在其应用程序中管理的出色视图。为了向用户提供积极的体验,EJS 使我们能够即时更改视图的外观或将显示给用户的数据。但是,如果您打算处理 js 应用程序,您应该投入必要的时间来掌握 EJS,因为这将使您能够将 Web 开发技能提升到前所未有的水平。