简单的说,我们打开一个页面,这个页面是个单页应用:http://www.this-is-a-spa.com/
所以它仅仅只有一个页面,不过作者却做了好几个 URL:
http://www.this-is-a-spa.com/a
http://www.this-is-a-spa.com/b
http://www.this-is-a-spa.com/c
...
这些 URL 不会直接传给服务器,而是会被浏览器消化处理掉.
这样做,我们可以:
当浏览器读取到其中一个注册到前端路由中的 URL 请求时,比如 http://www.this-is-a-spa.com/a
时,可以触发预先写好的事件 A,所以当访问到这个 URL 后就可以直接触发到事件。在编写的时候可以用 <a href="/a">Event A</a>
来触发事件,而可以不用 addEventListener("click", ...)
这种写法,当项目逻辑比较复杂的时候,这种组织方式比写一大堆事件注册要好很多.(当然上 SPA 一般都用到了框架,这种方式只是一种选择)
用户可以收藏 http://www.this-is-a-spa.com/a
至收藏夹,打开后直接触发 /a
的事件(然后就自动加载数据或是什么别的事情),而没有做前端路由的 SPA 则达不到这样的效果,其 URL 从头到尾都是不变的.
所以~