Express 仅加载主页
Posted
技术标签:
【中文标题】Express 仅加载主页【英文标题】:Express Only loads main page 【发布时间】:2017-09-08 16:58:02 【问题描述】:我正在努力学习表达。我正在使用 FS 加载我的 html 页面。通过 google 搜索,我唯一能找到的就是使用 ASP.NET 而不是 Express。
Server.js:
var express = require('express');
var path = require('path');
var fs = require('fs');
var app = express();
app.use(require('body-parser').urlencoded( extended: true ));
app.use(express.static(path.join(__dirname+'/')))
app.get('/', function(a,b,c)
fs.readFileSync('index.html');
);
app.post('/testaction', function(a,b)
console.log(a.body.log);
fs.readFileSync('Logged.html');
);
app.listen(3000);
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<form method="post" action="http://localhost:3000/testaction">
<h1>Log This:</h1>
<input type="text" name="log"/>
<input type="submit", value="Press Me!"/>
</form>
</body>
</html>
【问题讨论】:
【参考方案1】:为了提供文件,您不必使用 fs.示例:
app.get('/', function(req, res, next)
res.render('index');
);
如果需要重定向,可以使用:
res.redirect('/staticFile.html');
【讨论】:
【参考方案2】:删除这些行:
app.get('/', function(a,b,c)
fs.readFileSync('index.html');
);
这一行是中间件,它适用于每个请求的所有路由:
app.use(express.static(path.join(__dirname+'/')))
它的目的是从您提供的任何路径提供静态文件。在这种情况下,您从根目录提供服务,因此您可以导航到所有代码文件,例如 http://localhost:3000/package.json。
它适用于所有 HTTP 方法,get post put 等...
当您编写 app.get('/'
时,您会使用新路由覆盖该中间件并尝试仅提供一个文件。只需删除该代码,您就会从上面指定的目录中静态地提供所有内容。
如果您不想提供代码文件,请将您的静态文件放在不同的文件夹中,例如“site”,并将您的静态路径设置为该文件夹,例如:
app.use('/', express.static(__dirname + '/site'));
【讨论】:
以上是关于Express 仅加载主页的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中使用 Plotly Express 仅显示图例的子集(plotly.express,px)?
MFC 是不是仅适用于 Visual Studio,不适用于 Visual C++ Express?