如何在Express中使用HTML作为视图引擎?

150
我尝试了这个简单的更改,从种子中创建了相应的.html文件(例如index.html)。
//app.set('view engine', 'jade');
app.set('view engine', 'html');

而这个文件保持不变:

exports.index = function(req, res){
  res.render('index');
};

但是在运行时我遇到了

500错误: 找不到模块“html”

那么我的唯一选择是使用“ejs”吗?我的意图是将纯HTML与AngularJS结合使用。


7
请参考以下主题获取答案: https://dev59.com/m2855IYBdhLWcg3wHwaH希望这能有所帮助。 - roland
3
app.engine('html', require('ejs').renderFile); - Dinesh Kanivu
16个回答

3

HTML不是视图引擎,但是EJS提供了在其中编写HTML代码的可能性。


3

安装ejs模板

npm install ejs --save

在app.js中引用ejs

app.set('views', path.join(__dirname, 'views'));`
app.set('view engine', 'ejs');

在视图目录下创建一个ejs模板,例如views/index.ejs,并在路由中使用该ejs模板。
router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

1

尝试使用这个简单的解决方案,对我有效

app.get('/', function(req, res){
    res.render('index.html')
  });

1
你应该添加所有的代码行,单独这一行是无法工作的。 - MushyPeas

1
通过路由向服务器传递html页面,我已经完成了这个任务。
var hbs = require('express-hbs');
app.engine('hbs', hbs.express4({
  partialsDir: __dirname + '/views/partials'
}));
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');

并将我的 .html 文件重命名为 .hbs 文件 - handlebars 支持纯 html。

1
为了使渲染引擎接受 HTML 而不是 Jade,您可以按照以下步骤进行操作:
Install consolidate and swig to your directory.

 npm install consolidate
 npm install swig

add following lines to your app.js file

var cons = require('consolidate');

// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');

add your view templates as .html inside “views” folder. Restart you node server and start the app in the browser.

这应该可以工作。

0
使用swig帮助渲染HTML模板。
//require module swig    
    var swig = require('swig');

// view engine setup    
    app.set('views', path.join(__dirname, 'views'));
    app.engine('html', swig.renderFile);
    app.set('view engine', 'html');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接