所以,主题是Node.js + express + ejs + socket.io + mongoose所有最新版本的单页Web应用程序。
让我们在浏览器的地址栏“www.app.com/ 数据”中设想用户输入。我希望根据此数据获取db的响应,将其发送回用户并为其呈现基本的“www.app.com”页面,并在其中实现db响应。
我很好奇两个选项:在有和没有页面重新加载的情况下执行此操作的最佳方法是什么,例如,如果用户已经在页面上并且我不想重新加载它 - 只需相应地更改为db响应。
我可以从他的获取请求中获取这些数据:
app.get('/:id', function (req, res) {
console.log('got' + req.params.id);
///some db magic here... poof, response ready///
})
但接下来我要做什么?我正在考虑通过sockets.io
发送响应,我正在使用它,但是如何在不重新加载用户页面的情况下结束此GET?如果我必须发回一些东西,我可以通过ejs再次渲染这个页面来回应,但是在重新加载时我不能依赖sokets,cos - 他与它们脱节。
答案 0 :(得分:1)
最后我在URI中使用URI Fragment identifier
,即#
如果用户输入http://YourAwesomeApp/#hashtag
,您可以使用此侦听器捕获hashtag
:
window.onhashchange = function () {
var hash = location.hash.substr(location.hash.indexOf("#") + 1);
//now hash = hashtag, do your stuff.
};
完全符合我的需要。
请注意,如果您通过JS(window.onhashchange
)更改哈希,location.hash = something
也会触发。