Vue前端路由

1、Vue路由,路由的基本概念与原理。

答:1)、路由是一个比较广义和抽象的概念,路由的本质就是对应关系。
2)、在开发中,路由分为,后端路由和前端路由。
3)、后端路由,根据不同的用户URL请求,返回不同的内容。后端路由的本质就是URL请求地址与服务器资源之间的对应关系。后端路由根据不同的URL地址分发不同的资源。
4)、前端路由,根据不同的用户事件,显示不同的页面内容。本质就是用户事件与事件处理函数之间的对应关系。前端路由负责事件监听,触发事件后,通过事件函数渲染不同内容。

 

2、SPA(Single Page Application)。

答:1)、后端路由的渲染,就叫做后端渲染(存在性能问题)。
2)、Ajax前端渲染,前端渲染提供性能,但是不支持浏览器的前进后退操作。
3)、SPA(Single Page Application)单页面应用程序,整个网站只有一个界面,内容的变化通过Ajax局部更新实现,同时支持浏览器地址栏的前进和后退操作。
4)、SPA实现原理之一就是基于URL地址的hash,hash的变化会导致浏览器记录访问历史的变化,但是hash的变化不会触发新的URL请求。
5)、在实现SPA过程中,最核心的技术点就是前端路由。

 

3、路由的基本概念与原理,实现简易前端路由。

答:1)、基于URL中的hash实现,点击菜单的时候改变url的hash,根据hash的变化控制组件的切换。
2)、window.onhashchange,监听window的onhashchange事件,根据获取到的最新的hash值,切换要显示的组件的名称,通过location.hash获取到最新的hash值。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <meta charset="utf-8">
 5         <title></title>
 6     </head>
 7     <body>
 8         <!-- 被Vue实例控制的div区域 -->
 9         <div id="app">
10             <div v-text="name"></div>
11             <!-- 切换组件的超链接 -->
12             <a href="#/zhuye">主页</a>
13             <a href="#/keji">科技</a>
14             <a href="#/caijing">财经</a>
15             <a href="#/yule">娱乐</a>
16 
17             <!-- 根据:is属性指定的组件名称,把对应的组件渲染到component标签所在的位置 -->
18             <!-- 可以把component标签当作是组件的占位符 -->
19             <component :is="comName"></component>
20         </div>
21 
22         <script type="text/javascript" src="js/vue.js"></script>
23         <script type="text/javascript">
24             /* 创建需要被切换的四个组件 */
25             var zhuye = {
26                 template: '<h1>主页信息</h1>',
27             };
28             var keji = {
29                 template: '<h1>科技信息</h1>',
30             };
31             var caijing = {
32                 template: '<h1>财经信息</h1>',
33             };
34             var yule = {
35                 template: '<h1>娱乐信息</h1>',
36             };
37 
38 
39             /* 创建Vue的实例对象 */
40             var vm = new Vue({
41                 el: '#app',
42                 data: {
43                     name: 'hello world!!!',
44                     comName: 'zhuye',
45                 },
46                 components: {
47                     zhuye,
48                     keji,
49                     caijing,
50                     yule,
51                 },
52             });
53 
54             // window.onhashchange,监听window的onhashchange事件,根据获取到的最新的hash值,切换要显示的组件的名称。
55             window.onhashchange = function() {
56                 // 通过location.hash获取到最新的hash值.
57                 console.log(location.hash, location.hash.slice(1));
58                 switch (location.hash.slice(1)) {
59                     case '/zhuye':
60                         vm.comName = 'zhuye';
61                         break;
62                     case '/keji':
63                         vm.comName = 'keji';
64                         break;
65                     case '/caijing':
66                         vm.comName = 'caijing';
67                         break;
68                     case '/yule':
69                         vm.comName = 'yule';
70                         break;
71                 }
72             }
73         </script>
74     </body>
75 </html>

效果,如下所示:

 

 

4、Vue Router路由管理器(官网https://router.vuejs.org/zh/),Vue Router是Vue.js官方的路由管理器。

答:1)、Vue Router路由管理器是和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发。Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。
2)、包含的功能有:

  a、嵌套的路由/视图表
  b、模块化的、基于组件的路由配置
  c、路由参数、查询、通配符
  d、基于 Vue.js 过渡系统的视图过渡效果
  e、细粒度的导航控制
  f、带有自动激活的 CSS class 的链接
  g、HTML5 历史模式或 hash 模式,在 IE9 中自动降级
  h、自定义的滚动条行为

 

5、Vue Router路由管理器的基本使用。

答:1)、引入相关的库文件。
2)、添加路由链接。
3)、添加路由填充位。
4)、定义路由组件。
5)、配置路由规则并创建路由实例。
6)、把路由挂载到Vue跟实例中。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <meta charset="utf-8">
 5         <title></title>
 6 
 7         <!-- 第一步,导入vue文件,为全局window对象挂载vue构造函数 -->
 8         <script src="https://unpkg.com/vue/dist/vue.js"></script>
 9         <!-- 导入vue-router文件,为全局window对象挂载vueRouter构造函数 -->
10         <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
11     </head>
12     <body>
13         <div id="app">
14             <!-- 第二步,添加路由链接。 -->
15             <!-- router-link是Vue中提供的标签,默认会被渲染为a标签,    to属性默认会被渲染为href属性,to属性的值默认会被渲染为#开头的hash地址 -->
16             <router-link to="/user">User</router-link>
17             <router-link to="/register">Register</router-link>
18 
19             <!-- 第三步,添加路由填充为 -->
20             <!-- 路由填充为也叫做路由占位符,将来通过路由规则匹配到的组件,将会被渲染到router-view所在的位置 -->
21             <router-view></router-view>
22         </div>
23 
24         <script type="text/javascript">
25             /* 第四步,定义路由组件 */
26             var User = {
27                 template: '<h1>User</h1>',
28             };
29             var Register = {
30                 template: '<h1>Register</h1>',
31             };
32 
33             /* 第五步,配置路由规则并创建路由实例。 */
34             // 创建路由实例对象
35             var router = new VueRouter({
36                 // routes是路由规则数组
37                 routes: [
38                     // 每个路由规则都是一个配置对象,其中至少包含path和component两个属性
39                     // path表示当前路由规则匹配的hash地址
40                     // component表示当前路由规则对应要展示的组件
41                     {
42                         path: '/user',
43                         component: User, // 组件名称,不是字符串
44                     },
45                     {
46                         path: '/register',
47                         component: Register, // 组件名称,不是字符串
48                     }
49                 ]
50             });
51 
52             // 创建vm实例对象
53             var vm = new Vue({
54                 // 指定控制的区域
55                 el: '#app',
56                 data: {
57 
58                 },
59                 // 第六步,把路由挂载到Vue根实例中
60                 // 为了能够让路由规则生效,必须把路由对象挂载到Vue实例对象上
61                 router: router, // 挂载实例对象,es6中,如果属性名称和值一样可以直接写成一个属性名称即可.
62             });
63         </script>
64     </body>
65 </html>

实现效果如下所示:

 

 

6、Vue Router路由管理器,路由重定向。

答:1)、路由重定向指的是,用户在访问地址A的时候,强制用户跳转到地址C,从而展示特定的组件页面。
2)、通过路由规则的redirect属性,指定一个新的路由地址,可以很方便的设置路由的重定向。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <meta charset="utf-8">
 5         <title></title>
 6 
 7         <!-- 第一步,导入vue文件,为全局window对象挂载vue构造函数 -->
 8         <script src="https://unpkg.com/vue/dist/vue.js"></script>
 9         <!-- 导入vue-router文件,为全局window对象挂载vueRouter构造函数 -->
10         <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
11     </head>
12     <body>
13         <div id="app">
14             <!-- 第二步,添加路由链接。 -->
15             <!-- router-link是Vue中提供的标签,默认会被渲染为a标签,    to属性默认会被渲染为href属性,to属性的值默认会被渲染为#开头的hash地址 -->
16             <router-link to="/user">User</router-link>
17             <router-link to="/register">Register</router-link>
18 
19             <!-- 第三步,添加路由填充为 -->
20             <!-- 路由填充为也叫做路由占位符,将来通过路由规则匹配到的组件,将会被渲染到router-view所在的位置 -->
21             <router-view></router-view>
22       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值