如何在没有 Meteor 的情况下获得 Meteor 的路由/即时换页效果?

Posted

技术标签:

【中文标题】如何在没有 Meteor 的情况下获得 Meteor 的路由/即时换页效果?【英文标题】:How to get Meteor's routing/instant page change effect, without Meteor? 【发布时间】:2015-03-30 16:19:30 【问题描述】:

对于那些不熟悉 Meteor 框架的人来说,当您使用顶部导航进行导航(例如)时,页面更改几乎是即时的,不会导致典型的页面更改/页面加载。当然,您可以使用.load() 在 jQuery 中完成此操作,但有关 Meteor 的事情是,您可以在其他网站上拥有指向您网站上特定页面的链接,例如 http://example.com/about 并且 Meteor 会直接带您到那个页。这有利于 SEO。

我的问题:

如果我不使用Meteor,如何实现这种即时页面切换效果,地址栏中的URL发生变化,每个页面都有完全可链接的页面(不是http://example.com/#about)。如果我能像使用 html 和 jQuery 一样简单,那就太好了。

PS:如果解决方案涉及使用 Apache 或 nginx 重写,我可以接受。

【问题讨论】:

【参考方案1】:

看起来您正在构建single-page application。实现您描述的链接功能的 SPA 部分是“路由器”,对于 Meteor,您可能使用过 iron:router。

iron:router 所做的是使用HTML5 pushState() API 来操作浏览器历史记录和 URL 栏。

如果您是 Web 应用程序开发的新手,您可能会想要一个能够做到这一点的库。你绝对do not want AngularJS (see why)。然而,事实证明such no-hashtags routing libraries 并不常见......有什么理由不将 Meteor 与 Iron:router 一起使用?

【讨论】:

糟糕,我刚刚运行 yo angular --coffee 来启动一个 Angular Web 应用程序,因为我想要 pushState。 :) PS:对 Web 应用开发一点也不陌生。 很想使用 Meteor,但我的服务器设置为典型的 Apache 服务器。没有 Node.js。 Node.js 和 Apache 是正交的。顺便说一句,nginx is for 99% of the cases a much better alternative than Apache.。你不能install Meteor吗?你用什么做后端,还是用no backend at all? 是的,我在端口 80 上有一个需要 Apache 的关键任务应用程序。但是,是的,Apache 也有 ProxyPass。这实际上应该是小菜一碟。谢谢你的鼓励! :) 我开始接触 Angular,但真的很喜欢它。

以上是关于如何在没有 Meteor 的情况下获得 Meteor 的路由/即时换页效果?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor:在服务器端调试

如何在没有手动浏览器身份验证的情况下从 Meteor.js 应用程序对 GMail-api 进行 oauth (2) 身份验证?

如何在不使用帮助器的情况下访问 Meteor 模板中的全局变量?

React/ Flux 前端和 Meteor 后端

Meteor - 安装 android 平台找不到 ANDROID_HOME 变量

找不到模块'./..../x.html' - TsLint / Angular-Meteor