概念

  • 可以一对多分发请求的对象,根据不同的 url 地址展示不同的内容。

    默认路由

  • 当用户没有指向某个地址时,默认显示的地址

image.png

404路由

  • 当请求的 hash 不存在时,展示 404 内容

image.png

路由表

  • 指向特定网络地址的路径的表格

路由 - 图3

三种路由类型

hash

  • 缺点:SEO不友好,# 后的内容会被浏览器劫持,不会发送给服务器

    1. const routerTable = { '1':div1,'2':div2,'3':div3,'4':div4 }
    2. function route(container) {
    3. let number = window.location.hash
    4. console.log("number: " +number)
    5. number = number || 1
    6. //获取界面
    7. let div.routetable[number.tostring()];
    8. div = document.querySelector("#div404")
    9. div.style.display ="block";
    10. //展示界面
    11. container.innerHTML=''
    12. container.appendchild(div)
    13. }
    14. window.addEventListener('hashchange',route)

    history

  • 缺点:所有前端路由必须指向同一页面 ,ie8 不支持

    1. function route(container) {
    2. let number = window.location.pathname
    3. console.log("number: " +number)
    4. number = number || /1
    5. //获取界面
    6. let div.routetable[number.tostring()];
    7. div = document.querySelector("#div404")
    8. div.style.display ="block";
    9. //展示界面
    10. container.innerHTML=''
    11. container.appendchild(div)
    12. }
    13. const allA =document.querySelector("a.link")
    14. for (let a of allA) {
    15. a.adEventListener("click",e => {
    16. e.preventdefault()
    17. const href= a.getattribute("href");
    18. window.history.pushstate(null, `page-${href}`, href)
    19. route(app)
    20. })
    21. }

    memory

  • 缺点:没有url,单机版路由,不可分享

    1. function route(container) {
    2. let number = window.localStorage.getItem('xxx')
    3. console.log("number: " +number)
    4. number = number || /1
    5. //获取界面
    6. let div.routetable[number.tostring()];
    7. div = document.querySelector("#div404")
    8. div.style.display ="block";
    9. //展示界面
    10. container.innerHTML=''
    11. container.appendchild(div)
    12. }
    13. const allA =document.querySelector("a.link")
    14. for (let a of allA) {
    15. a.adEventListener("click",e => {
    16. e.preventdefault()
    17. const href = a.getAttribute('href')
    18. window.localStorage.setItem('xxx',href)
    19. route(app)
    20. })
    21. }