使表达忽略某些URL更改

时间:2016-06-02 16:57:33

标签: javascript node.js express routing

我尝试在Express上制作单页应用。主要问题是我使用Express路由功能,每当URL更改并且GET请求到达服务器时重新呈现视图。我有一个相当常见的代码,如:

// Express routes
var routes = {
    index: require('./routes/home')
};
// use routes
app.use('/', routes.index);

//home.js
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.render('home', {title: "ITEF"});
});

router.get('/about', function (req, res, next) {
    res.render('home', {title: "ITEF"});
});

有没有办法让路由器忽略URL更改并让前端应用程序保持原样?计划是根据URL来扩展所有UX逻辑,但不需要无数次重新渲染。

2 个答案:

答案 0 :(得分:0)

使用pushState HTML5功能发现它非常简单: window.history.pushState('object or string', 'Title', '/about'); 详情中描述的详细信息here

答案 1 :(得分:0)

我回答的时间有点迟,但我设法使用名为Finch.js的库做了你所要求的。

因此,当我想在单页应用程序中调用另一个URL时,我使用Finch.navigate('/ profile')。 URL将更改,并且不会调用节点服务器。

Finch.route("/profile", function () {
    main.viewModel(new app.model());
});

Finch.listen();

Finch.navigate('/profile');

您可以在此处了解有关此库的更多信息FINCH