Blogger Information
Blog 45
fans 0
comment 0
visits 34509
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
锚点前端路由与Vue前端路由的实现
咸鱼老爷
Original
896 people have browsed it

基于锚点哈希路由模式

  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>

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post