Express仅加载主页面

时间:2017-04-12 18:57:11

标签: html node.js express fs

我正在努力学习快递。我正在使用FS来加载我的HTML页面。我在谷歌搜索中唯一能找到的就是使用ASP.NET而不是Express。

Server.js:

render() {
    console.log(this.state.post);
    var link = (this.state.post && this.state.post.link) ? this.state.post.link : '';
    var rendered = (this.state.post && this.state.post.title && this.state.post.title.rendered) ? this.state.post.title.rendered : '';

    return <div className="single-post">
      <h1>{link}</h1>
      <h1>{rendered}</h1>
    </div>
  }

的index.html:

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

2 个答案:

答案 0 :(得分:1)

为了提供文件,您不必使用fs。例如:

app.get('/', function(req, res, next) {
  res.render('index');
});

如果您需要重定向,可以使用:

res.redirect('/staticFile.html');

答案 1 :(得分:0)

删除以下行:

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

这一行是中间件,它适用于每个请求的所有路由:

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

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

它适用于所有HTTP方法,获得post put等...

当您编写app.get('/'时,您使用新路由覆盖该中间件并尝试仅提供一个文件。只需删除该代码,您就可以从上面指定的目录中静态地为所有内容提供服务。

如果您不想提供代码文件,请将静态文件放在不同的文件夹中,例如&#34; site&#34;并将您的静态路径设置为该文件夹,例如:

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