Node.js的Web模板引擎ejs的入门使用教程

什么是模板引擎?

在 Node.js 开发中,我们通常需要把数据渲染到一个 HTML 页面中展示给用户,这就需要一个模板引擎。模板引擎是将数据和模板进行组合,生成的最终的 HTML 页面。ejs 是 Node.js 中最流行的一种模板引擎。

安装 ejs

在 Node.js 中安装 ejs 最简单的方法是使用 npm 包管理器,在命令行中输入以下命令安装 ejs:

npm install ejs

使用 ejs

1. 编写模板文件

ejs 的模板文件后缀名为 .ejs,它本质上是一个普通的 HTML 文件,只不过在其中使用 ejs 提供的语法。

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ejs 渲染示例</title>
</head>
<body>
    <h1> <%= title %> </h1>
    <p>文章内容:</p>
    <% for(var i=0; i < articles.length; i++) { %>
        <div>
            <h2><%= articles[i].title %></h2>
            <p><%= articles[i].content %></p>
        </div>
    <% } %>
</body>
</html>

2. 使用 ejs 渲染数据

在 Node.js 中使用 ejs 渲染数据非常简单,通过 ejs.render() 函数即可实现。

示例:

const ejs = require('ejs');
const fs = require('fs');

// 读取模板文件
const template = fs.readFileSync(__dirname + '/views/index.ejs', 'utf8');

// 渲染数据
const data = {
    title: '使用 ejs 渲染数据',
    articles: [
        {
            title: '大数据时代的 Node.js',
            content: 'Node.js 的强大性能,在大数据处理方面发挥了更加重要的作用。'
        },
        {
            title: 'Node.js 开发微服务',
            content: '微服务架构是 Node.js 重要的应用场景之一。'
        },
        {
            title: '异步编程思维',
            content: 'Node.js 异步编程思维的重要性与基本原理。'
        }
    ]
};
const html = ejs.render(template, data);

console.log(html);

第一步是通过 Node.js 内置的 fs 模块读取 views/index.ejs 文件内容,第二步是定义要渲染的数据 data,第三步是通过 ejs.render() 函数渲染数据。最后输出渲染后的 HTML 内容。

ejs 的语法

ejs 这种模板引擎的语法有很多,这里只介绍最常用的几个语法。

输出数据

在 ejs 中,要输出数据使用 <%= %> 语法,如:

<h1> <%= title %> </h1>

执行语句

在 ejs 中,执行语句使用 <% %> 语法,如:

<% if (articles.length > 0) { %>
    <ul>
        <% for (var i = 0; i < articles.length; i++) { %>
            <li><%= articles[i] %></li>
        <% } %>
    </ul>
<% } else { %>
    <p>暂无文章</p>
<% } %>

注释语句

在 ejs 中,注释语句使用 <%# %> 语法,如:

<%# 代码注释 %>

包含子模板

在 ejs 中,可以使用 <%- include(file) %> 语法引入其他模板文件。

示例:

假如我们有两个文件 parent.ejschild.ejs,其中 parent.ejs 引用了 child.ejs

child.ejs 内容:

<h2>子模板</h2>

parent.ejs 内容:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>模板引用</title>
</head>
<body>
    <%- include('child.ejs') %>
    <p>主模板</p>
</body>
</html>

控制流语句

在 ejs 中,有一些特殊的语法,可以用来循环、判断等。

示例:

<% for(var i=0; i<list.length; i++) { %>
    <li><%= list[i] %></li>
<% } %>

<% if (user) { %>
    <h2><%= user.name %></h2>
<% } %>

<% switch (type) { %>
    <% case 'fruit': %>
        <p>水果</p>
    <% case 'vegetable': %>
        <p>蔬菜</p>
    <% default: %>
        <p>未知类型</p>
<% } %>

示例1:使用 ejs 渲染动态网页

下面是一个简单使用 ejs 渲染动态网页的示例。

假设我们有一个用户信息的数据对象:

const user = {
    name: '王妍',
    age: 20,
    gender: '女'
};

接下来我们使用 ejs 模板来渲染这个用户信息:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>用户信息</title>
</head>
<body>
    <h1><%= user.name %> 的个人信息</h1>
    <ul>
        <li>姓名: <%= user.name %> </li>
        <li>年龄: <%= user.age %> </li>
        <li>性别: <%= user.gender %> </li>
    </ul>
</body>
</html>

注意:在 ejs 中,我们可以使用 <%= %>语法来展示变量的值。

最后通过 ejs 的渲染函数来渲染这个模板:

const ejs = require('ejs');
const fs = require('fs');

const user = {
    name: '王妍',
    age: 20,
    gender: '女'
};

const template = fs.readFileSync(__dirname + '/views/user.ejs', 'utf8');
const html = ejs.render(template, { user: user });
console.log(html);

示例2:使用 ejs 来编写一个简单的文章列表

下面是一个示例,使用 ejs 模板引擎来渲染一个文章列表。

模板文件:views/articles.ejs

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>文章列表</title>
</head>
<body>
    <h1>文章列表</h1>
    <ul>
        <% for (var i = 0; i < articles.length; i++) { %>
            <li><a href="<%= articles[i].url %>"><%= articles[i].title %></a></li>
            <p><%= articles[i].summary %></p>
        <% } %>
    </ul>
</body>
</html>

数据对象:

const articles = [
    {
        title: 'Node.js 进阶教程',
        summary: '本教程详细讲解了 Node.js 的进阶特性和使用技巧。',
        url: 'http://www.example.com/nodejs-advanced'
    },
    {
        title: '如何学习 HTML5',
        summary: 'HTML5 是现代 Web 应用开发的核心技术,本文教你如何学习它。',
        url: 'http://www.example.com/learn-html5'
    },
    {
        title: 'React Web 开发实战',
        summary: '本课程详细讲解 React Web 开发的实战技巧和经验。',
        url: 'http://www.example.com/react-web'
    }
];

渲染代码:

const ejs = require('ejs');
const fs = require('fs');

const template = fs.readFileSync(__dirname + '/views/articles.ejs', 'utf8');
const html = ejs.render(template, { articles: articles });

console.log(html);

以上就是使用 ejs 的入门教程了,相信读者已经对其基本使用有所掌握了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js的Web模板引擎ejs的入门使用教程 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • PyTorch中关于tensor.repeat()的使用

    下面是关于PyTorch中tensor.repeat()的使用攻略: 简介 PyTorch中的tensor.repeat()函数可以用于在某一个维度上复制tensor的数值。 它的语法格式如下: torch.repeat(input, repeats) 这里的input指的是需要重复的tensor,repeats是一个元组(tuple),定义了每个维度上需要…

    人工智能概论 2023年5月25日
    00
  • python疲劳驾驶困倦低头检测功能的实现

    Python疲劳驾驶困倦低头检测功能的实现是一种人脸识别技术,它可以通过摄像头捕捉图像,识别人的面部特征,判断其是否疲劳、困倦或者低头,给出警报提醒,从而保障驾车安全。实现该功能的方法有很多种,以下是其中的一种攻略: 步骤一:安装必要的Python第三方库 要实现该功能需要使用到Python的第三方库,最重要的是OpenCV库和dlib库,需要先在Pytho…

    人工智能概览 2023年5月25日
    00
  • PHP汉字转换拼音的函数代码

    关于“PHP汉字转换拼音的函数代码”的攻略,我会详细讲解如下: 一、初步认识汉字转拼音 汉字转拼音是指将汉字转换成相应的拼音字符,例如把“中国”转换成“zhong guo”。在PHP中,可以通过调用相关的函数来实现汉字转拼音的功能。 二、使用PHP拼音转换函数库 PHP中有很多拼音转换函数库可供使用,例如Overtrue的Pinyin和top-think的T…

    人工智能概论 2023年5月24日
    00
  • Python Celery动态添加定时任务生产实践指南

    Python Celery动态添加定时任务生产实践指南 什么是Celery Celery 是一个基于 Python 实现的分布式任务队列,用于处理大量的异步任务。Celery 可以让你的应用程序分布式地运行,而不必担心每个任务在哪台机器上运行。Celery 提供了简单易用的 API,可以让我们将代码实现成一个异步任务,并且能够在多个 worker 中执行,支…

    人工智能概览 2023年5月25日
    00
  • nginx 基本配置与参数说明详细介绍

    Nginx 基本配置与参数说明详细介绍 什么是 Nginx Nginx 是一款高性能的 Web 服务器软件,也可以作为反向代理、负载均衡器和 HTTP 缓存服务器使用。Nginx 采用事件驱动异步非阻塞模型,可以处理高并发连接。 安装和启动 Nginx 在 Ubuntu 系统中可以使用 apt-get 命令来安装 Nginx: sudo apt-get up…

    人工智能概览 2023年5月25日
    00
  • Python利用Faiss库实现ANN近邻搜索的方法详解

    Python利用Faiss库实现ANN近邻搜索的方法详解 Faiss是一款Facebook AI Research开发的专门用于高效向量检索的库,可以实现范围内搜索和最近邻搜索等功能。本文将详细讲解如何使用Python中的Faiss库实现ANN近邻搜索。 安装 在开始使用Faiss之前,你需要先安装Faiss库。可以使用如下命令进行安装: pip insta…

    人工智能概览 2023年5月25日
    00
  • nginx提示:500 Internal Server Error错误的解决方法

    针对“nginx提示:500 Internal Server Error错误的解决方法”的问题,本文将为大家提供一个完整的攻略。下面将采用如下的结构对该问题进行逐一分析: 1.问题分析 2.解决方法 3.示例说明 1.问题分析 关于“nginx提示:500 Internal Server Error错误的解决方法”,首先我们需要知道的是,这是一个服务器端的错…

    人工智能概览 2023年5月25日
    00
  • Django使用 Bootstrap 样式修改书籍列表过程解析

    下面是关于“Django使用 Bootstrap 样式修改书籍列表过程解析”的完整攻略,包含两条示例说明: 核心思路 使用 Bootstrap 样式修改书籍列表涉及到以下核心思路: 引入 Bootstrap 样式文件 在 Django 中使用 Bootstrap 样式需要先引入相关 CSS 和 JavaScript 文件。可以从 Bootstrap 官网下载…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部