Vue - Router 和 通信方式

Router

1.路由核心模块 import VueRouter from ‘vue-router’

2.注册路由插件 Vue.use(VueRouter)

3.路由映射表

const routes = [  
       { 
           path: '/film',    --路径
           component: Film   --跳转页面组件名(组件需引入)
           children: [       --子组件
               {
                    path: '/film/nowplay',    --路径
                    component: Nowplay   --跳转页面组件名(组件需引入)
               },
               {
                    path: '/film',    --路径
                    redirect: '/film/nowplay'   --跳转路径
               }
           ]
       } 
 ]

4.组件路由跳转:声明式导航 && 编程式导航(JS跳转)

1.声明式导航:

    <router-link to="/film" tag="li" activeClass="a"></router-link>
    to -->点击后跳转页面路径
    tag -->定义当前标签
    activeClass  -->高亮显示,自定义class
    
2.编程式导航:

    a.定义事件: @click="handleClick(item.filmId)"    
    b.切换页面: this.$router.push(`/Nowlist/${id}`)  
    c.引入组件: import Nowlist from '@/views/Film/Nowlist'   
    d.匹配进入路径: const routes = [{
                     path: '/Nowlist/:id',   // 具体影片,传递id
                     component: Nowlist
                 }]

路由命名 ($route.name 获取路由命名的名字)

5.重定向和别名

 const routes = [  
       { 
           path: '/',    --匹配进入路径
           redirect: '/film'   --跳转页面组件名(组件需引入)
       },
       { 
           path: '*',    --匹配所有路径
           redirect: '/Error'   --跳转页面组件名(组件需引入)
       },
       { 
           path: '/a',    --匹配所有路径
           redirect: '/Error',   --跳转页面组件名(组件需引入)
           alias: '/b'    -- 路由路径别名
       } 
 ]

6.路由传递id

- 点击事件传递id:   @click="handleClick( Id )"
- 跳转页面附带id:   methods: {
                     handleClick (id) {
                       this.$router.push(`/Nowlist/${id}`)  // 切换页面
                     }
                  }
- router引入需要跳转的页面:  import Nowlist from '@/views/Film/Nowlist'
- 定义跳转页面需要携带的id:   const routes = [
                          {
                              path: '/Nowlist/:id',   // 具体影片,传递id
                              component: Nowlist
                           }

7.懒加载

const routes = [  
       { 
           path: '/Cinema',    --匹配进入路径
           component: ()=>import('@/viees/Cinema')   --跳转页面组件路径(组件用时再引入)
           component: ()=>import(/* webpackChunkName:'myName'*/'@/viees/Cinema') 
                                                                         -- 自定义Name
       }
 ]

8.登录阻拦

单个拦截:
1.登录页点击事件:
    handleClick () {
       localStorage.setItem('token',JSON.stringify({isLogin:true}))
       this.$router.push('/center')
    }
    
2.阻拦页阻止事件:
    beforeRouteEnter (to, from, next) {
        if(localStorage.getItem('token')){
            next()
        }else{
            console.log('重定向,回到log页面');
            next('/center/log')
        }
    }

全局拦截
3.配置全局路由守卫(拦截)
router.beforeEach((to,from,next)=>{
  // console.log(to) //跳转的是center才拦截
  if(to.path=== '/center'){
    // console.log("被拦截")
    if(localStorage.getItem("token")){
      next()
    }else{
      console.log('重定向到 login页面')
      next("/login")
    }
  }else{
    next()
  }
})

9.HTML5 History模式: mode 参数:

  • history: /home

  • hash : #/home

    const router = new VueRouter({
    mode: ‘history’,
    routers
    })

10.路由原理

(1)hash路由 ==>  location.hash 切换
                 window.onhashchange 监听路径的切换 
(2)history路由==> history.pushState 切换
                  window.onpopstate 监听路径的切换

11.判断是否在服务器环境下运行

var url = process.server ? 'http://m.maoyan.com' : ''

通信方式

常见使用场景可以分为三类:

父子通信:

  • 父子组件通信方式一 (props / $emit)
  • 父子组件通信方式二 (ref / $refs)

兄弟通信:

  • 中央事件总线
main.js :  Vue.prototype.bus = new Vue();
   页面 :
		    this.bus.$emit(事件名,data);
		    this.bus.$on(事件名,(data)=> {});
  • Vuex

跨级通信:
中央事件总线 Bus;Vuex;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vite是一个用于快速构建现代化的Web项目的构建工具,它专注于开发阶段的快速热重载,并使用ES模块作为原生的开发模式。Vue3是Vue.js的最新版本,它在性能、开发体验和可维护性上都有所提升。 针对你提到的具体的库和框架: - Vue RouterVue.js官方的路由管理器,用于实现页面之间的导航和路由控制。你可以通过npm安装vue-router,并在项目中进行配置和使用。 - Pinia是Vue.js的状态管理库,它提供了一种简单而强大的方式来管理应用程序的状态。你可以集成Pinia到你的Vue项目中,以便更好地组织和共享你的应用程序状态。 - Axios是一个基于Promise的HTTP客户端,用于通过网络发送异步请求。你可以使用Axios来处理与服务器的通信,并获取数据来更新你的Vue应用程序。 - Element Plus是一套基于Vue3的组件库,包含了丰富的UI组件,可以帮助你快速搭建漂亮的用户界面。你可以在项目中安装和使用Element Plus来实现各种交互效果和用户界面。 如果你想使用Vite、Vue3和以上提到的库和框架来创建一个项目,你可以按照以下步骤进行: 1. 安装Vite:通过npm全局安装Vite,然后使用Vite命令初始化一个新的项目。 2. 配置Vite:根据你的项目需求,在Vite的配置文件中添加Vue Router、Pinia、Axios和Element Plus的相关配置。 3. 安装和配置Vue Router:通过npm安装Vue Router,并在项目中配置和使用Vue Router来管理应用程序的路由。 4. 集成Pinia:通过npm安装Pinia,并在项目中引入和配置Pinia,以便在应用程序中使用Pinia来管理状态。 5. 使用Axios:通过npm安装Axios,并在项目中引入和配置Axios,以便进行网络请求和数据获取。 6. 引入Element Plus:通过npm安装Element Plus,并在项目中按需引入和使用Element Plus的组件,以搭建漂亮的用户界面。 希望以上信息对你有帮助,祝你在使用Vite、Vue3和这些库和框架时取得成功!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vite-vue-ts精简模版集成pinia+svg+router+@src](https://download.csdn.net/download/ldy889/85018930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vite+vue3+ts+vue-router+pinia+axios+element-plus](https://blog.csdn.net/zy_080400/article/details/127125359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值