我尝试在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逻辑,但不需要无数次重新渲染。
答案 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