如何使用Iron Router渲染单页Web应用,与AngularJS和BackboneJS相比。

4
作为https://github.com/EventedMind/iron-router中的Iron Router介绍,
Iron Router是Meteor的路由包。它可以制作单页应用程序。
然而,我不理解它的工作原理。
在Angularjs或Backbonejs中,每个路由都包含一个井号,例如
example.com/#about example.com/#service 我可以理解这只是一个页面example.com。井号表示虽然有两个不同的URL,但它们仍然是example.com的不同状态。如果我们从example.com/#about导航到example.com/#service,我们仍然在同一个页面example.com上,只是布局的一部分被更改了。
在Iron Router中,路由不包含井号,例如
example.com/about example.com/service 对我来说,这两个URL代表两个完全不同的状态。如果我们从example.com/about导航到example.com/service,我们必须刷新页面并从头加载新页面。
因此问题是Iron Router如何呈现单页Web应用程序,它的机制是什么?
1个回答

0
构建一个没有井号的单页面应用程序需要在Web服务器级别实现一些路由规则。不确定Iron Router是如何做到的,但如果

example.com/about

example.com/service

指向同一页面时,服务器应该有一些路由规则,比如将 example.com/* 路由到 index.html 或类似的页面。同时,在旧版 IE 浏览器中,没有哈希标记的单页应用程序存在一些兼容性问题,请注意。


当我检查元素,进入网络选项卡,清除所有现有的网络请求,然后在/about页面和主页之间遍历时,在网络选项卡中没有发生任何事情,但页面内容和URL已更改。请查看此剪辑。 - Hung Vo
你是如何在这两个页面之间导航的?使用返回按钮吗? - Ravi Hamsa
好的,如果你正在使用支持pushState的浏览器,你可以避免它向服务器发送请求(这就是它适合你的方式)。但是,你需要一个路由配置来避免当用户直接访问“example.com/about”时出现404错误,你需要一个服务器端路由将其重定向到index.html。一旦请求到达index.html,Backbone就可以接管并为你显示“关于我们”的页面。 - Ravi Hamsa
我点击了页面链接,比如主页和关于按钮。您可以在此处进行检查 http://velocitytesting.meteor.com/。 - Hung Vo
正如我在上一条评论中所说,它正在使用推送状态。 - Ravi Hamsa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接