url的hash和history

345 阅读3分钟

hash模式 例子:www.example.com/index.html#…

#是一个位置标识符,利用a标签的herf属性可以进行页面内位置的跳转。 http请求不会发送#后面的字符串到服务器,如果要发送,要将#转码为%23。 改变#不会触发网页的重载,但是会增加浏览器的历史访问记录,但ie6/7不存在这个规则。 可以通过window.location.hash读取内容,但要对字符串进行分段处理。 可以绑定hashchange事件。 通过window.location来处理url

history模式 例子:www.example.com/index

通过window.history来处理url history在H5之前有go(),back(),forword()三个API,后来增加pushState(),replaceState()两个API history.pushState(state, title, url) history.pushState()只会改变当前地址栏的路径,并不会更新页面内容,但会改变浏览历史记录。

state:状态对象 title:忽略,填null url:要跳转的地址 history.replaceState(state, title, url) history.replaceState()就是把当前的历史记录改成目标路径,不会进行页面跳转和刷新,也不会增加浏览历史记录,但是如果按F5刷新,他会跳转到目标页面。

state:状态对象 title:忽略,填null url:要跳转的地址

window.onpopstate事件 监听如下操作

点击浏览器的前进按钮/后退按钮 执行js代码:history.go(n) / history.forward() 注意:pushstate()和replacestate()不会触发popstate事件 区别 hash兼容到IE8,history兼容到IE10。 hash 本来是拿来做页面定位的,如果拿来做路由的话,原来的锚点功能就不能用了。 hash 的传参是基于 url 的,如果要传递复杂的数据,会有体积的限制,而 history 模式不仅可以在url里放参数,还可以将数据存放在一个特定的对象中。

url的hash url的hash也就是锚点(#),本质上是改变widow.location的href属性。 我们可以通过直接赋值location.hash来改变href,但是页面不发生刷新

路由(routing)是一个网络工程里面的术语。 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。

路由器提供了两种机制:路由和传送。 路由是决定数据包从来源到目的地的路径 转送将输入端的数据转移到合适的输出端

vuex是一个专为Vue.js应用程序开发的状态管理模式。 它采用集中式存储管理应用的所有组件的状态,并以相应规则保证状态 核心概念 State 单一状态树 Single Source of Truth,单一数据源 很对信息需要被记录 这些信息分散在很多地方进行管理 低效不方便管理维护工作庞大 类似: 如果你的状态信息是保存到多个Store对象中的,那么之后的管理和维护等等都会变得特别困难。 所以Vuex也使用了单一状态树来管理应用层级的全部状态。 单一状态树能够让我们最直接的方式找到某个状态的片段,而且之后的维护和调试过程中,也可以非常方便的管理和维护。

全局单例模式(大管家) 我们现在要做的就是将共享的状态抽取出来,交给我们的大管家,统一进行管理 之后,你们每个试图,按照我规定好的规定,进行访问和修改等操作。 这就是Vuex背后的基本思想。

Getters

Mutation Action Module 是模块的意思,为什么在Vuex中我们要使用模块呢? Vuex使用单一状态树,那么也就意味着很多状态都会交给Vuex来管理。 当应用变得非常复杂时,store对象就有可能变得相对臃肿。 为了解决这个问题 Vuex允许我们将store分割成模块(Module),而每个模块拥有自己的state、mutation、action、getters等