You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js+Express项目中混用Jade与HTML?求Jade转HTML工具包

在Node.js+Express项目中混用Jade与HTML,及Jade转HTML方案

没问题,我来帮你梳理一下在Express项目里混用Jade(现在官方改名叫Pug啦,不过很多人还是习惯叫Jade)和HTML的方法,还有把Jade转成HTML的工具选项:

一、在Express中实现Jade与HTML混用

Express支持同时注册多个模板引擎,你可以根据文件后缀来区分使用哪种引擎,具体步骤如下:

1. 安装依赖

首先确保你装了Express和Pug(也就是原来的Jade),如果需要在HTML里传变量渲染,还可以装个支持HTML的模板引擎比如EJS:

npm install express pug ejs

2. 配置Express模板引擎

在你的Express入口文件(比如app.js)里,这样配置:

const express = require('express');
const path = require('path');
const app = express();

// 设置视图文件存放目录
app.set('views', path.join(__dirname, 'views'));

// 注册Jade/Pug引擎处理.jade后缀的文件
app.engine('jade', require('pug').__express);
// 注册EJS引擎处理.html后缀的文件(这样HTML里也能使用模板变量)
app.engine('html', require('ejs').__express);

// 设置默认模板引擎为Jade,也可以根据需求改成html
app.set('view engine', 'jade');

3. 在路由中使用不同模板

现在你就可以在路由里自由选择渲染Jade或者HTML模板了:

// 渲染Jade模板,自动用Pug引擎处理
app.get('/email-jade', (req, res) => {
  res.render('email-template.jade', { 
    username: '张三',
    subject: '你的邮件主题' 
  });
});

// 渲染HTML模板,用EJS引擎处理(如果是纯静态HTML,直接用res.sendFile更简单)
app.get('/email-html', (req, res) => {
  res.render('email-template.html', { 
    username: '李四',
    subject: '你的HTML邮件主题' 
  });
});

// 纯静态HTML页面,不需要传变量的话直接用sendFile
app.get('/static-html', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'static-page.html'));
});

二、将Jade文件转换为HTML的工具与方法

如果你需要把已有的Jade文件转成纯HTML,有几种常用的方式:

1. 用Pug命令行工具(最直接)

因为Jade已经改名为Pug,官方提供了CLI工具来转换:
首先全局安装CLI:

npm install -g pug-cli

然后执行转换命令:

# 转换单个文件,生成对应的.html文件
pug your-template.jade

# 转换整个目录下的Jade文件,输出到指定文件夹
pug ./views/jade-templates --out ./dist/html-templates

# 加上--pretty参数可以生成格式化的美观HTML
pug your-template.jade --pretty

2. 在Node.js代码中批量转换

如果需要在项目代码里动态转换,直接用Pug包的API即可:

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

// 单个文件转换(同步方式)
try {
  const htmlContent = pug.renderFile(path.join(__dirname, 'views', 'email.jade'), {
    // 这里可以传入模板需要的变量
    username: '测试用户'
  });
  fs.writeFileSync(path.join(__dirname, 'dist', 'email.html'), htmlContent);
  console.log('转换完成!');
} catch (err) {
  console.error('转换出错:', err);
}

// 如果是批量转换目录里的文件,可以用fs.readdir遍历处理

3. 集成到构建工具(适合工程化项目)

如果你的项目用Gulp/Grunt这类构建工具,可以用对应的插件来自动化转换:
比如用Gulp的话,安装依赖:

npm install gulp gulp-pug --save-dev

然后在gulpfile.js里写转换任务:

const gulp = require('gulp');
const pug = require('gulp-pug');

gulp.task('pug-to-html', () => {
  return gulp.src('./views/**/*.jade')
    .pipe(pug({ pretty: true })) // 格式化输出HTML
    .pipe(gulp.dest('./dist/html'));
});

// 执行任务:gulp pug-to-html

内容的提问来源于stack exchange,提问作者Nikhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:20