2017-04-12 70 views
1

我想学快递。我使用FS来加载我的HTML页面。我可以在谷歌搜索上找到的唯一一件事就是使用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'); 
0

删除这些行:

app.get('/', function(a,b,c){ 
    fs.readFileSync('index.html'); 
}); 

此行是中间件,它适用于所有航线上的每个请求:

app.use(express.static(path.join(__dirname+'/'))) 

它其目的是为你提供的任何路径提供静态文件。在这种情况下,您从根目录提供服务,因此您可以导航到所有代码文件,例如http://localhost:3000/package.json

它适用于所有的HTTP方法,让后把等..

当你写app.get('/'你重写一个新的路由中间件和尝试服务只有一个文件。只要放弃这些代码,你就可以从上面指定的目录静态地服务一切。

如果你不想为你的代码文件,把你静态文件在不同的文件夹,如“网站”,您的静态路径设置为文件夹,例如:

app.use('/', express.static(__dirname + '/site'));