Vue-Router路由Vue-CLI脚手架和模块化开发 之 路由的动态跳转

在上一篇的博文中,实现的跳转是在页面中进行实现的

利用vue-router实例方法,使用js对路由进行动态跳转;

1、router.push:参数为路由对象,跳转到指定路由,跳转后会产生历史记录;

<!--动态跳转的按钮-->
            <div>
                <button @click="push">push返回首页</button>
                </div>
new Vue({
            //router : router
            router : myRouter, //4 注入路由 简写
            methods:{
                push(){

                    myRouter.push({

                        path:‘/home‘
                    })
                }
            }
        }).$mount("#one");

2、router.replace:参数为路由对象,跳转到指定路由,跳转后不产生历史记录;

由效果图可以发现点击replace前往美食广场按扭得时候并不会产生任何的历史记录

<!--动态跳转的按钮-->
            <div>
                <button @click="push">push返回首页</button>
                <button @click="replace">replace前往美食广场</button>
                </div>
    methods:{
                push(){

                    myRouter.push({

                        path:‘/home‘
                    })
                },
                replace(){
                    myRouter.replace({

                        path:‘/foods‘
                    })
                }
            }

3、router.go:参数为number,number为正向前跳转,为负向后跳转,根据number的值跳转到对应页面,前提是必须有历史记录可供跳转;

4、router.back:无参,后退一个页面,需要有历史记录;

router.forward:无参,前进一个页面,需要有历史记录;

使用的代码:

<!--动态跳转的按钮-->
            <div>
                <button @click="push">push返回首页</button>
                <button @click="replace">replace前往美食广场</button>

                <button @click="go(-1)">go(-1)后退历史记录</button>
                <button @click="go(2)">go(2)前进历史记录</button>

                <button @click="back">back返回</button>
                <button @click="forward">forward前进</button>
                </div>
    methods:{
                push(){

                    myRouter.push({

                        path:‘/home‘
                    })
                },
                replace(){
                    myRouter.replace({

                        path:‘/foods‘
                    })
                },

                go(n){

                    myRouter.go(n);
                },
                back(){
                    myRouter.back();
                },
                forward(){

                    myRouter.forward();
                }
            }

以上就是通过js实现动态的跳转

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title> 路由的动态跳转</title>
  6 </head>
  7     <body>
  8         <div id="one">
  9             <router-link to="/home">首页</router-link>
 10             <router-link to="/foods">美食</router-link>
 11
 12             <div>
 13                 <!--将数据显示在这里-->
 14                 <router-view></router-view>
 15             </div>
 16             <!--动态跳转的按钮-->
 17             <div>
 18                 <button @click="push">push返回首页</button>
 19                 <button @click="replace">replace前往美食广场</button>
 20
 21                 <button @click="go(-1)">go(-1)后退历史记录</button>
 22                 <button @click="go(2)">go(2)前进历史记录</button>
 23
 24                 <button @click="back">back返回</button>
 25                 <button @click="forward">forward前进</button>
 26                 </div>
 27         </div>
 28     </body>
 29     <template id="foods">
 30
 31
 32         <div>
 33
 34             <h2>美食广场</h2>
 35             <ul>
 36                 <router-link to="/foods/bjc/北京烤鸭/68" tag="li"> 北京菜</router-link>
 37                 <router-link to="/foods/hnc" tag="li"> 湖南菜</router-link>
 38                 <router-link to="/foods/xc?name=剁椒鱼头&price=128" tag="li"> 湘菜</router-link>
 39                 <router-link :to="ycParam" tag="li"> 粤菜</router-link>
 40                 <router-link :to="sccParam" tag="li"> 四川菜</router-link>
 41             </ul>
 42
 43             <router-view></router-view>
 44         </div>
 45     </template>
 46
 47     <script type="text/javascript" src="../js/vue.js" ></script>
 48     <script type="text/javascript" src="../js/vue-router.js" ></script>
 49     <script>
 50
 51         //1 定义组件
 52         let Home = {
 53             template : "<h2>首页</h2>"
 54         }
 55         let Foods = {
 56             template : "#foods",
 57             data(){
 58
 59                 return{
 60                     sccParam:{
 61
 62                         name:‘sccRouter‘,
 63
 64                         params:{
 65
 66                             name:"麻婆豆腐",
 67                             price:28
 68                         }
 69                     },
 70
 71                     ycParam:{
 72                         path:‘/foods/yc‘,
 73                         query:{
 74                             name:"蜜汁叉烧",
 75                             price:56
 76
 77                         }
 78
 79                     }
 80                 }
 81             }
 82         }
 83
 84         //定义foods中的子组件
 85
 86         let Bjc={
 87
 88             props:[‘name‘,‘price‘],
 89             template : "<h3>北京菜 菜名:{{name}} 价格:{{price}}</h3>"
 90
 91         }
 92
 93         let Hnc={
 94             template : "<h3>湖南菜  </h3>"
 95
 96         }
 97         let Xc={
 98             props:[‘name‘,‘price‘],
 99             template : "<h3 >湘菜  菜名:{{name}} 价格:{{price}}</h3>"
100
101         }
102
103         let Yc={
104             props:[‘name‘,‘price‘],
105             template : "<h3>粤菜  菜名:{{name}} 价格:{{price}}</h3>"
106
107         }
108
109         let Scc={
110             props:[‘name‘,‘price‘],
111             template : "<h3>四川菜  菜名:{{name}} 价格:{{price}}</h3>"
112
113
114
115         }
116
117         //2 配置路由 路由可能有多个
118         const myRoutes = [
119             {
120                 path : "/home",
121                 component : Home
122             },
123             {
124                 path : "/foods",
125                 component : Foods,
126
127                 children:[
128                 {
129                     path:"bjc/:name/:price",//定义其属性
130                     component:Bjc,
131                     props:true
132
133
134                 },
135                 {
136                     path:"hnc",
137                     component:Hnc
138
139
140                 },
141
142                 {
143                     path:"xc",
144                     component:Xc,
145                     props : (route) => ({
146                             name : route.query.name,
147                             price : route.query.price
148                     })
149
150
151                 },
152                 {
153                     path:"yc",
154                     component:Yc,
155                     props:{
156
157                         name:‘蜜汁叉烧量版式‘,
158                         price:648
159                     }
160
161
162                 },
163                 {
164                     name:‘sccRouter‘,
165                     path:"scc",
166                     component:Scc,
167                     props:true
168
169
170                 }
171
172
173
174
175
176                 ]
177             },
178         {
179             path:"*",
180                 redirect:"/home"
181             }
182         ]
183
184         // 3 创建路由对象
185         const myRouter = new VueRouter({
186             //routes : routes
187             routes : myRoutes,
188             //mode:‘history‘
189              linkActiveClass : "active"
190
191         });
192
193         new Vue({
194             //router : router
195             router : myRouter, //4 注入路由 简写
196             methods:{
197                 push(){
198
199                     myRouter.push({
200
201                         path:‘/home‘
202                     })
203                 },
204                 replace(){
205                     myRouter.replace({
206
207                         path:‘/foods‘
208                     })
209                 },
210
211                 go(n){
212
213                     myRouter.go(n);
214                 },
215                 back(){
216                     myRouter.back();
217                 },
218                 forward(){
219
220                     myRouter.forward();
221                 }
222             }
223         }).$mount("#one");
224     </script>
225     <style>
226
227
228         .active{
229             color: white;
230
231             background-color: black;
232         }
233     </style>
234 </html>

路由的动态跳转的总demo

原文地址:https://www.cnblogs.com/jiguiyan/p/10794401.html

时间: 2024-10-13 22:18:56

Vue-Router路由Vue-CLI脚手架和模块化开发 之 路由的动态跳转的相关文章

Vue-Router路由Vue-CLI脚手架和模块化开发 之 Vue-CLI 2.x脚手架工具基于webpack simple模板与基于webpack模板构建项目

Vue-CLI 2.x脚手架工具基于webpack simple模板构建项目 vue-cli是一个基于vue.js进行快速开发的完整系统.基于webpack构建,并进行默认配置,可通过插件扩展,可升级: vue-cli帮我们创建基本项目结构,跳过繁琐的项目配置环节,将精力集中在业务上: vue-cli的版本: @vue/cli 3.x版本:点击前往官网 vue-cli 2.x版本:点击前往官网 安装vue-cli $ npm install -g vue-cli 安装成功,查看其版本: 使用we

Vue-Router路由Vue-CLI脚手架和模块化开发 之 在单文件组件项目中定义数据、方法和组件之间的相互引用

定义数据 根据上一篇博文配置项目的结构的基础上继续进行优化: 在app.vue中的导出模块/组件部分设置其属性: export default{//导出模块/组件 data(){ return{ name:'perfect', count:0 } }, 在一个template标签中进行调用: <template> <div> <h2> 欢迎来到perfect*的博客园!!!</h2> <h3>{{name}}</h3> </te

Vue系列:Vue Router 路由梳理

Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数.查询.通配符 基于 Vue.js 过渡系统的视图过渡效果 细粒度的导航控制 带有自动激活的 CSS class 的链接 HTML5 历史模式或 hash 模式,在 IE9 中自动降级 自定义的滚动条行为 1.动态路由 动态路由,可以将某种模式匹配到的所有路由,并全都映射到同个组件. (通俗点,比如根

Vue.js路由管理器 Vue Router

起步 HTML <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <div id="app"> <h1>Hello App!</h1> <p>

vue router动态路由

<div id="#app"> <router-link to="/user/header">路由1</router-link> /*指向user组件*/ <router-link to="/user/footer">路由2</router-link> /*指向user组件*/ /*当我们点击路由1得时候*/ /*------当我们点击路由2得时候*/ <router-view&g

vue.cli脚手架初次使用图文教程

vue.cli脚手架初次使用图文教程 我之前的环境是安装了node.js, 我记得曾经好像安装过vue ,不过现在又要重新开始学习起来了.在youtube上看了一vue的相关教程,还是需要实操的. 好像安装过npm -v 发现已经安装了5.6.0 需要安装然后使用 cnpm 安装 vue-cli 和 webpack 安装代码:npm install -g vue-cli 一.生成项目 首先需要在命令行中进入到项目目录,然后输入: vue init webpack vue-testone p.p1

Vue Router 路由守卫:完整的导航解析流程

完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). 5 在路由配置里调用 beforeEnter. 6 解析异步路由组件. 7 在被激活的组件里调用 beforeRouteEnter. 8 调用全局的 beforeResolve 守卫 (2.5+). 9 导航被确认. 10 调用全局的 afterEach 钩子. 11 触发 DOM 更新. 12 用

04 Vue Router路由管理器

路由的基本概念与原理 Vue Router Vue Router (官网: https://router.vuejs.org/zh/)是Vue.js 官方的路由管理器. 它和vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. Vue Router包含的功能有: 支持HTML5 历史模式或hash模式 支持嵌套路由 支持路由参数 支持编程式路由 支持命名路由 vue-router的基本使用 基本使用步骤 1.引入相关的库文件 导入vue文件为全局window对象挂载Vue构造函数

Vue Router 路由实现原理实现原理

一.概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图. 二.实现方式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: 1.Hash --- 利用 URL 中的hash("#"); 2.利用 History interface 在HTML5中新增的方法. Vue 中,它是通过 mode 这一参数控制路由的实现模式: const router=new VueRouter({ mode:'history', routes:[