javascript - 关于js高级程序中的问题
黄舟
黄舟 2017-07-05 11:07:56
0
4
924

我在看到javascript高级程序设计(第三版)第492页的时候,有个疑问

当我用了"假"URL以后,刷新了,会返回404错误,除非我在Web服务器上有个真的这样的链接,那用户难免去刷新页面,难道我真的要去搞一个真的文件对应真的链接.那还要这个pushState()有什么用,岂不是很不方便吗

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复 (4)
淡淡烟草味

pushState主要用在SPA应用中, 回答题主的问题:

出现404。这是因为PushState模式下的URL里面没有#,浏览器会真的向服务端发起一个请求,而我们在服务端并没有对应于这个路径的资源。

但是并不需要在服务器上有一个真链接(会把人累死), 只需要更改一下服务器的配置, 让不存在的页面(404)重定向到根路由即可.

以Tomcat为例,配置非常简单,只要在你的项目的web.xml里面加上以下配置就可以了:

 404 / 

这样一来,对于找不到资源的路径,Tomcat会全部重定向到根路径上去,这样你的前端框架不论是angular/vue/react/backbone 就可以在前端自己处理请求的URL了。

对于其它类型的服务端,例如nginx/apache/IIS,请参考这篇文档:https://github.com/angular-ui...

来源: https://my.oschina.net/mumu/b...

    过去多啦不再A梦

    按刷新会以当前浏览器的url发请求到服务器。

    例如你通过pushState()把当前地址变成 boomshaklaka.com/boom
    点刷新后服务器收到这个地址发现不存在会返回404的。

      漂亮男人

      首先你要理解前端路由跟后端路由的区别。

      在只有后端路由的情况下,你请求的所有页面都是由后端返回给你的,这时所有路由都是由后端控制。

      但有时侯我们不希望刷新页面,但url也想它改变,比如SPA应用。这时候我们就需要一个前端路由,这个pushState在这就起这个作用。

        某草草

        首先我还是习惯后台处理路由, 我就以后台路由举例子:

        首先url 可以任意去定义, 至于你想关联项目中的哪个文件, 任意

         xxx/index.jsp   xxx/index.jsp 

        可以由不同的action指向同一个页面, 所以你的网站要至少保证有一个页面吧

        其次:

        在 HTML 文件中, history.pushState() 方法向浏览器历史添加了一个状态。

        更多是用来设置一个锚点:

        window.location = "#foo";

        至于文中说的404还是因为路由的指向有问题, 没有找到资源.

          最新下载
          更多>
          网站特效
          网站源码
          网站素材
          前端模板
          关于我们 免责声明 Sitemap
          PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!