博主信息
博文 26
粉丝 0
评论 3
访问量 23275
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
用两种方法实现前端路由
后网络时代
原创
909人浏览过

1. 使用哈希(锚点)原生实现一个前端路由;

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>锚文本</title>
  7. </head>
  8. <body>
  9. <nav>
  10. <a href="#list1" >娱乐新闻</a> <a href="#list2">国际新闻</a>
  11. </nav>
  12. <div class="renew-viewer"></div>
  13. <a href="" style="position:absolute;bottom:0em;">回到顶部</a>
  14. <script>
  15. // 1.锚点:可以通过改变URL地址,实现在当前页面内部不同区域实现跳转
  16. // 2.由于在当前页面内部跳转,故不会刷新
  17. // 3.因此使用锚点可以完成SPA的两大目标:既想改变URL,又不刷新页面
  18. const list1=`
  19. <ul>
  20. <li>资本主义国家疑似新冠病毒的源头</li>
  21. <li>资本主义国家疑似新冠病毒的源头</li>
  22. <li>资本主义国家疑似新冠病毒的源头</li>
  23. <li>资本主义国家疑似新冠病毒的源头</li>
  24. <li>资本主义国家疑似新冠病毒的源头</li>
  25. </ul>
  26. `;
  27. const list2=`
  28. <ul id="list2">
  29. <li>娱乐圈的追星不再大行其道,已回归到该有的位置</li>
  30. <li>谢霆锋张柏芝疑似复合</li>
  31. <li>王菲疑似另结新欢</li>
  32. <li>王宝强传新婚</li>
  33. <li>马蓉喊话吴京出演战狼三</li>
  34. </ul>
  35. `;
  36. const renew=document.querySelector('.renew-viewer');
  37. console.log(window.location.hash);
  38. window.addEventListener('hashchange',show);
  39. //window.addEventListener('load',show);
  40. //DOMContentLoaded在DOM树和css树(有些浏览器不等css树执行完成)创建完成就会触发,load在图片和js加载完成时候触发
  41. //DOMContentLoaded先执行
  42. window.addEventListener('DOMContentLoaded',show);
  43. function show(){
  44. with(console){
  45. log(window.location.hash);
  46. }
  47. switch(window.location.hash){
  48. case '#list1':
  49. renew.innerHTML=list1;
  50. break;
  51. case '#list2':
  52. renew.innerHTML=list2;
  53. break;
  54. default:
  55. renew.innerHTML=list1;
  56. }
  57. }
  58. </script>
  59. </body>
  60. </html>

效果:

2. 使用vue路由模块实现一个前端路由

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>VUE框架原理</title>
  7. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  8. <script src="vue-router-dev/dist/vue-router.js"></script>
  9. </head>
  10. <body>
  11. <nav id="app">
  12. <!-- 1.vue的路由是基于hash实现的,使用a标签的锚点来实现 -->
  13. <router-link to="/list1" >国际新闻</router-link>
  14. <router-link to="/list2" >娱乐新闻</router-link></router-link>
  15. <!-- 路由到的资源显示区: -->
  16. <router-view></router-view>
  17. </nav>
  18. <script>
  19. //创建路由对象
  20. const router = new VueRouter({
  21. //路由配置项目
  22. routes:[
  23. //每一个路由都是一个对象,每个对象对应一个路由
  24. {
  25. path:'/list1',
  26. component:{
  27. template:`
  28. <ul>
  29. <li>资本主义国家疑似新冠病毒的源头</li>
  30. <li>资本主义国家疑似新冠病毒的源头</li>
  31. <li>资本主义国家疑似新冠病毒的源头</li>
  32. <li>资本主义国家疑似新冠病毒的源头</li>
  33. <li>资本主义国家疑似新冠病毒的源头</li>
  34. </ul>
  35. `,
  36. }
  37. },
  38. //每一个路由都是一个对象,每个对象对应一个路由
  39. {
  40. path:'/list2',
  41. component:{
  42. template:`
  43. <ul id="list2">
  44. <li>娱乐圈的追星不再大行其道,已回归到该有的位置</li>
  45. <li>谢霆锋张柏芝疑似复合</li>
  46. <li>王菲疑似另结新欢</li>
  47. <li>王宝强传新婚</li>
  48. <li>马蓉喊话吴京出演战狼三</li>
  49. </ul>
  50. `,
  51. }
  52. },
  53. ],
  54. });
  55. new Vue({
  56. //注册路由
  57. router:router,
  58. }).$mount('#app');
  59. </script>
  60. </body>
  61. </html>

效果:

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学