单页应用程序-路由

1.SPA-单页应用程序

使用场景:后台管理系统/淘宝/京东首页/网易云音乐

多页应用:京东秒杀-模块

所有的功能都在一个页面上实现,第一次加载整个页面,如果需要更换数据,只需发请求更换需要更改的地方(如果有缓存,那性能更高了),用户体验好,数据传输容易,开发效率高

(进度条,loading都行,可以配一些异步组件,懒加载来解决首次加载慢的问题)

开发成本高点-需要懂路由,不利于seo

2.前端路由:

路由:指的是一种映射关系

前端路由:路径 和 组件 之间的映射关系

用途:单页应用程序开发,不同的哈希地址,切换不同的组件

比如:点击导航,路径变化后,不刷新页面,根据路径切换组件

思路:1.用户点击了页面上的路由链接2.导致了URL 地址栏中的hash地址值发生了变化

3.前端路由监听了到Hash地址的变化 4.前端路由把当前hash地址对应的组件渲染到浏览器中

原理(原生):根据哈希值的变化,来切换不同的组件==利用window.onhanshchange= ()=>{} 

 

<template>

  <div>

    <a href="#/home">首页</a>

    <a href="#/mymovie">电影</a>

    <a href="#/my">关于</a>

 

   <component :is="comName"></component>

  </div>

</template>

 

<script>

 

import MyHome from "./components/MyHome.vue"

import MyMovie from "./components/MyMovie.vue"

import My from "./components/My.vue"

export default {

  components:{

    My,

    MyHome,

    MyMovie

  }

  ,data (){

   return {

      comName:My

   }

  },

  created (){

    // 元素hash值变化切换不同的组件,利用的时动态组件

    // 会在地址栏hash值变化时会变化

    // 注意箭头函数,根据不同的哈希值,切换不同的组件

    window.οnhashchange=()=>{

      const hash=location.hash

      console.log(location.hash);

      switch(hash){

        case "#/home":

          this.comName=MyHome

          break;

        case "#/mymovie":

          this.comName=MyMovie

          break;

        case "#/my":

          this.comName=My

          break;

      }

    }

  }

}

</script>

 

<style> 

 a {

   margin-right: 25px;

 }

 

</style>

原生的比较麻烦,还需要自己配规则,可以利用vue-router 插件,底层就是利用监听地址栏hash值的变化,进行组件的切换,对原生的进行了封装==vue官方提供的路由的插件,第三方的包,用于处理路由,对地址栏的哈希值进行监听,切换组件

小知识点:组件分为页面组件-用于展示的页面(views文件面或者pages文件夹里面)--一般展示的页面会拆分成一个个复用的组件-页面展示-配合路由:复用组件(components文件-封装复用)

路由的基本使用:1.下载 vue-router 2.在main.js里面引入 vue-router3.添加到Vue.use(VueRouter) 身上--会帮我们注册全局RouterLink和RouterView 组件4.创建一个路由对象 5.将路由注入到new Vue实例中  6.核心配置路由规则 7.设置路由出口 <router-view></router-view> 

地址栏有#号 说明成功配置了 ==路由==里面封装的就有动态组件-用is封装过了,不用我们自己封装了

简单的记:下包/引入/注册/路由对象/注入/规则/路由出口

注意:如果想要用router-view 和router-link两个组件,必须有路由的基本操作

 


版权声明:本文为weixin_56263402原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。