如何使用node.js处理客户端路由?

时间:2018-04-06 14:38:03

标签: javascript node.js routing single-page-application html5-history

在node / express中,我有这个

var express = require('express');
var path = require('path');

// start express module
var app = express();

app.use(express.static(path.join(__dirname, 'public')));

/*
 * Visit the home page
 */
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

var server = app.listen(process.env.PORT || 3000, function () {
    var host = server.address().address;
    var port = server.address().port;

    console.log('My site started at http://%s:%s', host, port);
});

因此,如果我使用主页链接,或者直接指向服务器上的某个文件,我只能访问我的页面。

然而,在客户端,我使用具有历史API的单页面应用程序设计,并且具有类似localhost:3000/work的路径。因此,如果我要转到根页面,有一个按钮使用历史记录api将网址更改为/work,最终会显示新内容。

但是,如果我手动访问localhost:3000/work,node.js认为我需要找到一个名为localhost:3000/work/index.html的文件,并说找不到页面。如何设置它以便页面请求仍然触发index.html

的返回

由于

1 个答案:

答案 0 :(得分:2)

很抱歉不写评论(我还不能)。

您的客户端路线设置不熟悉(您可以共享吗?)。

这不是最佳做法,只是为了确保您的客户端设置正常 - 您能否检查一下这是否正常:



app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

app.get('*', function (req, res) {
     res.redirect('/');
});