路由有两种模式
1. 传统模式
传统模式呈现的界面,每次跳转页面都会刷新,重新加载静态资源,呈现的内容通过后端返回的html渲染。 缺点: 用户体验差, 优点 SEO 好
2. 前端路由 (单页面应用)
不同于传统路由。前端路由是 URL 与 UI 之间的映射关系,URL 改变驱动UI变化,也就是单向映射,不需要刷新页面 。 随着页面复杂化和需求逐日增多,前端开始走向 模块化和组件化, 使代码变得难维护,不可控,迭代难, 这时就有了 react,vue,ng 等, 共同的特点就是通过 js 去渲染页面,在页面上只有一个根入口,本质就是通过html5 API 对 url 进行改变和监听,来让dom 元素显示对应的视图
单页面应用有两种模式 hash history ,怎么能改变url 而不刷新页面, H5提供了两个API onhashchange 和 onpopstate
1、hash 模式
当URL的片段标识符更改时,将触发hashchange事件 (跟在#符号后面的URL部分,包括#符号)
路由里面#不叫锚点,称为hash
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>Document</title> 8 </head> 9 <body> 10 <a href="#/page1">page1</a> 11 <a href="#/page2">page2</a> 12 <div id="root"></div> 13 <script> 14 let app = null; 15 // hashchange 首次进入不会自执行,需要手动触发 16 window.onload = () => { 17 app = document.querySelector('#root'); 18 handleHashChange(); 19 }; 20 window.addEventListener('hashchange', handleHashChange); 21 function handleHashChange() { 22 console.log(location.hash); 23 switch (location.hash) { 24 case '#/page1': 25 app.innerHTML = '你好'; 26 break; 27 case '#/page2': 28 app.innerHTML = '他好'; 29 break; 30 default: 31 app.innerHTML = '哈喽,'; 32 break; 33 } 34 } 35 </script> 36 </body> 37 </html>
2、history 模式
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv9203