想问个问题,不用框架(比如express),我怎么整合ejs或者jade到Nodejs中?

想问个问题,不用框架(比如express),我怎么整合ejs或者jade到Nodejs中?

就是纯原生的nodejs中怎么使用ejs或jade模板?

4 回复

当然可以!以下是如何在不使用任何框架的情况下,将 EJS 或 Jade (现在称为 Pug) 整合到 Node.js 中的详细步骤和示例代码。

使用 EJS

首先,你需要安装 EJS 模板引擎:

npm install ejs

然后你可以创建一个简单的服务器来渲染 EJS 模板。以下是一个示例代码:

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

// 创建一个 EJS 模板字符串
const template = `
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%= title %></title>
</head>
<body>
    <h1>Welcome to <%= title %></h1>
    <p>This is a simple EJS template example.</p>
</body>
</html>
`;

// 渲染模板
const renderedHtml = ejs.render(template, { title: 'My First EJS Page' });

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end(renderedHtml);
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

使用 Pug (Jade)

同样地,你需要先安装 Pug 模板引擎:

npm install pug

然后你可以创建一个简单的服务器来渲染 Pug 模板。以下是一个示例代码:

const http = require('http');
const path = require('path');
const pug = require('pug');

// 创建一个 Pug 模板文件
const templatePath = path.join(__dirname, 'template.pug');

// 渲染模板
const renderedHtml = pug.renderFile(templatePath, { title: 'My First Pug Page' });

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end(renderedHtml);
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

确保你有一个 template.pug 文件在你的项目目录中,内容如下:

doctype html
html(lang="en")
  head
    meta(charset="UTF-8")
    meta(name="viewport" content="width=device-width, initial-scale=1.0")
    title #{title}
  body
    h1 Welcome to #{title}
    p This is a simple Pug template example.

通过这些示例代码,你可以看到如何在没有使用任何框架的情况下,将 EJS 或 Pug 整合到 Node.js 应用程序中。希望这对你有帮助!


利用模板的 API 来生成,比如 jade 的:http://jade-lang.com/api/

那我在express之外用jade 直接npm install jade? 然后用jade自身的api来做?

要在纯原生的 Node.js 中整合 EJS 或 Jade(现在称为 Pug)模板引擎,你需要先安装相应的模板引擎库。以下是整合 EJS 和 Pug 到 Node.js 中的示例代码和步骤。

整合 EJS

  1. 安装 EJS:
npm install ejs
  1. 示例代码:
const http = require('http');
const fs = require('fs');
const path = require('path');
const ejs = require('ejs');

// 设置静态文件目录
const publicDir = path.join(__dirname, 'public');

http.createServer((req, res) => {
    if (req.url === '/') {
        // 读取模板文件
        fs.readFile(path.join(publicDir, 'index.ejs'), 'utf-8', (err, template) => {
            if (err) throw err;
            
            // 渲染模板
            const renderedHtml = ejs.render(template, {
                title: 'EJS Example',
                message: 'Hello from EJS!'
            });

            // 发送响应
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(renderedHtml);
        });
    } else {
        res.writeHead(404);
        res.end();
    }
}).listen(3000, () => console.log('Server is running on port 3000'));

整合 Pug (Jade)

  1. 安装 Pug:
npm install pug
  1. 示例代码:
const http = require('http');
const fs = require('fs');
const path = require('path');
const pug = require('pug');

// 设置静态文件目录
const publicDir = path.join(__dirname, 'public');

http.createServer((req, res) => {
    if (req.url === '/') {
        // 读取模板文件
        fs.readFile(path.join(publicDir, 'index.pug'), 'utf-8', (err, template) => {
            if (err) throw err;
            
            // 渲染模板
            const renderedHtml = pug.render(template, {
                title: 'Pug Example',
                message: 'Hello from Pug!'
            });

            // 发送响应
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(renderedHtml);
        });
    } else {
        res.writeHead(404);
        res.end();
    }
}).listen(3000, () => console.log('Server is running on port 3000'));

在这两个示例中,我们创建了一个简单的 HTTP 服务器,并根据请求 URL 渲染相应的模板文件。确保你的模板文件(如 index.ejsindex.pug)位于 public 目录下。这样,你可以通过简单的 Node.js 代码实现模板渲染功能,而不需要依赖任何框架。

回到顶部