如何在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而不是玉,你可以按照以下步骤;
-
安装合并并swig到您的目录。
npm install consolidate npm install swig
-
添加以下行到你的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');
-
将视图模板添加为“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