gpt4 book ai didi

polymer-2.x - 聚合物应用程序路由 : intercept refresh page

转载 作者:行者123 更新时间:2023-12-04 12:16:37 24 4
gpt4 key购买 nike

我正在努力摆脱目前的状况:我们有一个聚合物 SPA ( A ) 部署在某个服务器上并绑定(bind)到某个 url:http://example.com/A ,我们确实需要暂时显示旧应用程序的遗留页面,为此,我们开发了一个新应用程序( B )并绑定(bind)到不同的 url(http://example.com/B)。

B 所做的是构建旧应用程序的页面并暴露一个按钮,其目的是通过访问 document.referrer 值并重新加载页面来返回到先前的位置,问题是作为一个 SPA,URL 没有存在于服务器上。

更详细:

  • 用户登录应用程序 A ( http://example.com/A/overview )
  • 用户使用 SPA 并最终访问由路由管理的某个 url (http://example/A/stuff/we/sell/jackets)
  • 在页面http://example.com/A/stuff/we/sell/jackets有一个应用程序 B 的链接,框住了显示夹克的旧应用程序页面
  • 用户单击链接并转到 http://example.com/ /legacy/jackets,此时 document.referrer 等于 http://example.com/ 一个 /东西/我们/卖/夹克
  • 用户单击按钮关闭 View ,应用程序 B 将窗口的位置设置为文档。referrer 试图从他/她来自的地方登陆用户。
  • 作为应用程序 A 的 SPA,网址 http://example.com/ 一个 /stuff/we/sell/jackets 在服务器上不存在并且用户(正确地)得到 404。

  • 那么问题来了:有没有什么办法可以拦截app路由中window.location变量的变化,避免页面完全刷新,让用户进入链接所在的页面呢?

    最佳答案

    如果我理解正确,那么这似乎是您的服务器配置的问题。

    如果您确实有 SPA,您希望所有 URL 都转到您的 app-shell(通常是您的 index.html)。

    例子:

    http-root
    ├─ some-folder
    │ └─ index.html
    └─ index.html

    例如,如果您正在运行 apache,您可以访问:
  • http://example.com/index.html
  • http://example.com/some-folder/index.html

  • 如果你去 http://example.com/stuff/we/sell你会得到一个错误 stuff不是有效目录。

    在您的 SPA 中,您可能会有一些路由系统,可以让您四处走动并对 Url 进行更改,而无需重新加载。因此,如果您使用您的 SPA,然后进行真正的重新加载,您应该仍然会回到原来的位置。

    这将如何工作取决于您的服务器。例如,对于 apache,您可以通过 .htaccess 提供重写。 .
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html[L]
    </IfModule>

    不管你的 url 是什么,使用它你总是会在 http-root index.html 结束。 .然后您的 SPA 可以接管;阅读 url 并显示适当的数据。

    恕我直言,在服务器上解决此问题是您问题的适当解决方案。

    关于polymer-2.x - 聚合物应用程序路由 : intercept refresh page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48829418/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com