基于锚点哈希路由模式

  1. 锚点可以改变url地址,实现在当前页面内部的不同区域之间进行跳转
  2. 因为是在当前页面中跳转,所以页面不会刷新
  3. 所以使用锚点可以完成spa的二大目标:既要改变url,又不刷新页面

原生js实现

  1. <nav>
  2. <a href="#list1">国际新闻</a>
  3. <a href="#list2">娱乐新闻</a>
  4. </nav>
  5. <!-- 该区域专用于显示路由的内容 -->
  6. <div class="route-view"></div>
  7. <script>
  8. let str1 = `<ul id="list1">
  9. <li><a href="">美国</a></li>
  10. <li><a href="">美国</a></li>
  11. <li><a href="">美国</a></li>
  12. <li><a href="">美国</a></li>
  13. </ul>`;
  14. let str2 = `<ul id="list2">
  15. <li><a href="">娱乐</a></li>
  16. <li><a href="">娱乐</a></li>
  17. <li><a href="">娱乐</a></li>
  18. <li><a href="">娱乐</a></li>
  19. </ul>`
  20. //获取路由的内容显示区元素
  21. const rout = document.querySelector('.route-view');
  22. //锚点使用location.hash
  23. //window.location :描述当前url信息
  24. //hashchange:url中的锚点变化时会自动触发这个事件
  25. window.addEventListener('hashchange', show)
  26. window.addEventListener('load', show)
  27. function show() {
  28. console.log(location.hash);
  29. switch (location.hash) {
  30. case '#list1':
  31. rout.innerHTML = str1;
  32. return;
  33. case '#list2':
  34. rout.innerHTML = str2;
  35. return;
  36. default:
  37. rout.innerHTML = str1;
  38. }
  39. }
  40. </script>

vue实现哈希路由

使用vue-router库
路由地址标签<router-link to='/地址'>
路由资源显示<router-view>

  1. <nav class="nav">
  2. <router-link to='/list1'>国际新闻</router-link>
  3. <router-link to='/list2'>娱乐新闻</router-link>
  4. <!-- 路由到的资源显示区域 -->
  5. <router-view></router-view>
  6. </nav>
  7. <script>
  8. let list1 = {
  9. template: `
  10. <ul id="list1">
  11. <li><a href="">美国</a></li>
  12. <li><a href="">美国</a></li>
  13. <li><a href="">美国</a></li>
  14. <li><a href="">美国</a></li>
  15. </ul>`,
  16. };
  17. let list2 = {
  18. template: `
  19. <ul id="list2">
  20. <li><a href="">娱乐</a></li>
  21. <li><a href="">娱乐</a></li>
  22. <li><a href="">娱乐</a></li>
  23. <li><a href="">娱乐</a></li>
  24. </ul>`,
  25. }
  26. //创建路由对象
  27. const router = new VueRouter({
  28. //路由配置项
  29. routes: [
  30. //每一个路由都是一个对象,每一个对象对应着一个路由地址
  31. {
  32. path: '/list1',
  33. component: list1,
  34. }, {
  35. path: '/list2',
  36. component: list2,
  37. },
  38. ],
  39. });
  40. //注册路由
  41. const nav = new Vue({
  42. el: '.nav',
  43. router: router,
  44. })
  45. </script>

更多相关文章

  1. LVS NAT原理、配置
  2. 15、华为 华三中小型企业网络架构搭建 【防火墙篇之路由部署(根据
  3. 16、华为 华三中小型企业网络架构搭建 【防火墙篇之NAT存在的问
  4. 【asp.net core 系列】4. 更高更强的路由
  5. 【asp.net core 系列】2 控制器与路由的恩怨情仇
  6. Vue3动态添加路由及生成菜单
  7. vue学习之路(路由)
  8. HCDA 协议配置
  9. 使用原生 js 和 Vue 路由模块分别实现一个前端路由

随机推荐

  1. PHP限制访问ip白名单的方法详解
  2. phper优化MySQL千万级大表的方法详解
  3. php匿名函数的使用
  4. 必看!TP6验证码验证失败的原因及解决方法
  5. PHP生成器yield处理大量数据业务(代码示例
  6. php实时推送系统消息给客户端的原理及详
  7. 分分钟搞定PHP的self关键字
  8. PHP+jQuery实现中国地图热点数据统计展示
  9. PHP钩子机制原理及详解
  10. PHP生成有背景的二维码图片(代码示例)