Nodejs中如何利用moment.js在xxx.ejs页面格式化日期?

Nodejs中如何利用moment.js在xxx.ejs页面格式化日期?

大家是如何在页面利用moment.js格式化日期的?比如<%=格式化日期%>

6 回复

当然可以!以下是一个关于如何在Node.js项目中使用moment.jsxxx.ejs页面中格式化日期的详细解答。

Node.js 中如何利用 moment.js 在 xxx.ejs 页面格式化日期?

背景

在Web开发中,我们经常需要将日期以特定格式展示给用户。moment.js 是一个非常强大的JavaScript库,用于解析、验证、操作以及显示日期和时间。下面我们将介绍如何在EJS模板引擎中使用moment.js来格式化日期。

步骤

  1. 安装 moment.js

    首先,确保你已经在项目中安装了moment.js。你可以通过npm来安装它:

    npm install moment
    
  2. 设置 Express 和 EJS

    确保你的Express应用已经配置为使用EJS作为视图引擎,并且你已经正确设置了路由来渲染包含日期的页面。

    const express = require('express');
    const app = express();
    const moment = require('moment');
    
    // 设置 EJS 为视图引擎
    app.set('view engine', 'ejs');
    
    // 示例数据
    const data = {
        date: new Date()
    };
    
    // 渲染页面并传递日期数据
    app.get('/', (req, res) => {
        res.render('xxx', { formattedDate: moment(data.date).format('YYYY-MM-DD') });
    });
    
    app.listen(3000, () => {
        console.log('Server is running on port 3000');
    });
    
  3. 在 EJS 模板中使用 moment.js

    接下来,在你的EJS文件(例如xxx.ejs)中,你可以直接使用传递过来的变量来显示格式化的日期。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Date Formatting Example</title>
    </head>
    <body>
        <h1>Formatted Date:</h1>
        <p><%= formattedDate %></p>
    </body>
    </html>
    

解释

  • 在上述代码中,我们在服务器端使用moment()函数来格式化日期。moment(data.date).format('YYYY-MM-DD') 将日期对象转换为指定格式的字符串。
  • 这个格式化的日期被传递给EJS模板,然后在HTML中通过<%= formattedDate %>标签显示出来。

这样,你就能够使用moment.js在EJS模板中轻松地格式化日期了。希望这对你有所帮助!


可以扩展到locals上

resp.render("foo.ejs", { moment: require("moment") });

具体怎么扩展? 我现在的做法是在控制层把moment对象作为参数传递到页面

res.render(‘back/usermanage/userList’,{users:users,moment:moment}); 然后在页面 <%=moment.xxx()%> 如果页面多的话,这种做法相当繁琐.

写一个 defaultValue,写一个 getDefaultRenderValue 的方法。

方法里面深拷贝 defaultValue 并返回。defaultValue 里面放所有你要预留的变量。

最后每次 render 都先用 getDefaultRenderValue 然后再在里面扩展你自己当前页面所需变量。

要在Node.js项目中的xxx.ejs页面使用moment.js来格式化日期,你需要先确保已经安装了moment.js。接下来,在EJS模板中引入并使用moment.js即可。

步骤1: 安装moment.js

如果你还没有安装moment.js,可以使用npm来安装:

npm install moment

步骤2: 在EJS文件中使用moment.js

假设你有一个日期对象dateObj,你想在EJS文件中以特定格式显示它。例如,将日期格式化为"YYYY-MM-DD"。

示例代码

在你的Node.js后端代码中,你可以将日期传递给EJS模板:

const express = require('express');
const moment = require('moment'); // 引入moment.js
const app = express();

app.get('/show-date', (req, res) => {
    const dateObj = new Date(); // 获取当前时间
    res.render('xxx', { formattedDate: moment(dateObj).format('YYYY-MM-DD') });
});

app.listen(3000);

然后在EJS文件(如xxx.ejs)中使用:

<!DOCTYPE html>
<html>
<head>
    <title>Date Example</title>
</head>
<body>
    <h1>Formatted Date:</h1>
    <p><%= formattedDate %></p>
</body>
</html>

解释

  • 在Node.js中,我们首先引入了moment.js库。
  • 我们创建了一个日期对象,并使用moment()函数将其转换为moment对象,然后调用.format('YYYY-MM-DD')方法来格式化日期。
  • 将格式化后的日期作为变量传递给EJS模板。
  • 在EJS模板中,通过<%= formattedDate %>输出格式化后的日期。

这样,你就可以在EJS文件中轻松地格式化并显示日期了。

回到顶部