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

我尝试从种子这个简单的变化,并创build相应的.html文件(如index.html)。

//app.set('view engine', 'jade'); app.set('view engine', 'html'); 

这个文件保持不变:

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

但运行时我得到

500错误:找不到模块'html'

我唯一的select是使用“ejs”吗? 我的意图是与AngularJS结合使用纯HTML。

在另一个链接的答案将工作,但为了提供HTML,根本不需要使用视图引擎,除非你想build立时髦的路由。 相反,只需使用静态中间件:

 app.use(express.static(__dirname + '/public')); 

为了使渲染引擎接受HTML而不是玉,你可以按照以下步骤;

  1. 安装合并并swig到您的目录。

      npm install consolidate npm install swig 
  2. 添加以下行到你的app.js文件

     var cons = require('consolidate'); // view engine setup app.engine('html', cons.swig) app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'html'); 
  3. 将视图模板添加为“views”文件夹中的.html。 重新启动节点服务器并在浏览器中启动应用程序。

虽然这将使html没有任何问题,但我build议你通过学习使用JADE。 翡翠是一个了不起的模板引擎,学习这将帮助你实现更好的devise和可扩展性。

试试这个为你的服务器configuration

 app.configure(function() { app.use(express.static(__dirname + '/public')); // set the static files location app.use(express.logger('dev')); // log every request to the console app.use(express.bodyParser()); // pull information from html in POST app.use(express.methodOverride()); // simulate DELETE and PUT app.use(express.favicon(__dirname + '/public/img/favicon.ico')); }); 

那么你的callback函数路由将如下所示:

 function(req, res) { res.sendfile('./public/index.html'); }; 

在你的apps.js只需添加

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

现在,您可以使用ejs查看引擎,同时保持您的视图文件为.html

来源: http : //www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/

你需要安装这两个包:

 `npm install ejs --save` `npm install path --save` 

然后导入需要的包:

 `var path = require('path');` 

这样你可以保存你的视图为.html而不是.ejs
在使用支持html但不认识ejs的IDE的时候非常有帮助。

没有视图引擎是必要的,如果你想使用简单的纯HTML文件的angular度。 这是如何做到的:在你的route.js文件中:

 router.get('/', (req, res) => { res.sendFile('index.html', { root: 'yourPathToIndexDirectory' }); }); 

HTML文件可以使用ejs引擎渲染:

 app.set('view engine', 'ejs'); 

并确保“/ views”下的文件以“.ejs”命名。

例如“index.ejs”。

答案很简单。 你必须使用app.engine('html')来渲染* .html页面。 试试这个。它必须解决问题。

 app.set('views', path.join(__dirname, 'views')); **// Set EJS View Engine** app.set('view engine','ejs'); **// Set HTML engine** app.engine('html', require('ejs').renderFile); 

该.html文件将工作

为了使渲染引擎接受HTML而不是玉,你可以按照以下步骤;

 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. 

这应该工作

通过路由服务器的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文件 – 句柄支持纯html