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);