我需要在express 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');
});
我该如何解决?
(许多其他问题适用于快递3,我无法找到答案)
答案 0 :(得分:3)
app.get('/', function(req, res) {
res.render('./public/danial/forms/form1.html');
});
[编辑]
要渲染静态html文件,请使用静态中间件:
app.use(express.static(path.join(__dirname, 'public')));
这样做是告诉express在应用程序的公共目录中查找静态文件。
答案 1 :(得分:3)
在没有View引擎的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'
因为您缺少HTML节点模块。从项目根目录运行npm install html
命令以解决此问题。
答案 2 :(得分:0)
最后,我自己找到了答案。我使用ejs
模板并将HTML
文件的扩展名更改为ejs
并对其进行渲染,对于需要的文件,我使用公用文件夹。
答案 3 :(得分:0)
使用Node Js Express 4渲染静态HTML的示例
Dir struct。:
-> 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);