NodeJS,如何使用Express 4呈现静态HTML?
我需要在快递4呈现HTML文件,我写这样的东西,但不是很好。
app.route('/form1').get(function(req,res){ res.sendfile('./public/danial/forms/form1.html'); });
这段代码可以发送HTML文件,但是它完全发送HTML文件,不发送HTML文件需要的css或js文件,这是日志:
GET /form1 304 2.743 ms - - GET /css/bootstrap.css 404 2.284 ms - - GET /css/bootstrap-theme.css 404 2.193 ms - - GET /css/bootstrap-switch.css 404 2.226 ms - - // and many others
我需要做这样的事情:
app.get('/', function(req, res) { res.render('index.html'); });
我该如何解决?
(许多其他问题是expression3,我无法find答案)
app.get('/', function(req, res) { res.render('./public/danial/forms/form1.html'); });
[编辑]
要呈现静态HTML文件,请使用静态中间件:
app.use(express.static(path.join(__dirname, 'public')));
这样做是为了在应用程序的公共目录中查找静态文件。
最后,我自己find我的答案。我使用ejs
模板,并将我的HTML
文件的扩展名更改为ejs
并呈现它们以及我使用公用文件夹所需的文件。
在没有View Engine的情况下在Express 4中渲染HTML
以下面的目录结构为例..
-> root -> node_modules -> express -> html -> public -> pages -> index.html -> app.js
app.js
var express = require('express'); var app = express(); var path = require("path"); // set static directories app.use(express.static(path.join(__dirname, 'public'))); app.get('/', function (req, res) { res.sendFile(path.join(__dirname+ '/public/pages/index.html')); }); var port = process.env.PORT || 5000; app.listen(port); console.log('Listening on port ', port);
注意:如果你得到这个错误.. Cannot find module 'html'
它是因为你缺lessHTML节点模块。 从项目根目录运行npm install html
命令来解决这个问题。
使用Node Js Express呈现静态HTML的示例4
Dir结构:
-> root -> node_modules -> views -> index.html -> app.js
app.js:
var express = require('express'); var app = express(); var path = require("path"); var engines = require('consolidate'); app.use(express.static(path.join(__dirname, 'views'))); app.engine('html', engines.mustache); app.get('/', function(req, res){ res.render('index.html'); }); app.listen(8080);