关于路由的一些理解

92 阅读3分钟

单页应用和多页应用

单页面应用:所有功能在同一个页面实现效果:
.一个.html文件
.前端路由
.组件化开发

多页面应用:与单页面应用功能相对应的,不同的功能用不同的页面来实现

单页面与多页面对比

对比部分单页应用(最流行)多页面应用(传统方式)
页面组成一个html文件多个组件组成多个html文件
静态资源共用共用,一次性加载完毕,借助ssr优化不共用,每个页面都加载一遍
刷新方式页面局部刷新整页加载
url模式itcast.com/#/pageoneitcast.com/pageone.html
用户体验用户体验良好页面切换加载缓慢体验较差
数据传递容易依赖url传参,cookie,localStorage
搜索引擎优化不利于seo优化,需要ssr(服务器端渲染)优化支持良好
使用场景追求高体验 不要求seo高度要求seo
开发成本较高 需要依赖专业的框架, 开发效率高较低 重复代码多, 开发效率低

路由的理解与概念

路由:就是一一对应关系的集合

前端路由和后端路由是有点区别的哦注意别搞混了.
前端路由(单页应用程序):一个url地址对应哪个组件.
后端路由:一个接口地址对应哪段接口地址

前端路由的工作原理其实就是对url的hash值进行改变和监听,切换对应页面组件的dom结构

下面为大家带来一段基础的使用

  1. src/views/创建并在App.vue里导入和注册组件
    MyHome.vue
    MyMovie.vue
    MyAbout.vue
<script>
import MyAbout from './views/my-about.vue'
import MyHome from './views/my-home.vue'
import MyMovie from './views/my-movie.vue'
export default {
  components: {
    MyHome,
    MyAbout,
    MyMovie
  }
}
</script>
  1. 通过动态组件, 控制要显示的组件
<template>
  <div>
    <h1>App组件</h1>
    <component :is="comName"></component>
  </div>
</template>

<script>
export default {
  // ...省略其他
  data () {
    return {
      comName: 'MyHome'
    }
  }
}
</script>
  1. 声明三个导航链接, 点击时修改地址栏的 hash 值
<template>
  <div>
    <h1>App组件</h1>
    <a href="#/home">首页</a>&nbsp;
    <a href="#/movie">电影</a>&nbsp;
    <a href="#/about">关于</a>&nbsp;
    <component :is="comName"></component>
  </div>
</template>
  1. 在 created 中, 监视地址栏 hash 时的变化, 一旦变化, 动态切换展示的组件
created () {
  window.onhashchange = () => {
    switch(location.hash) {
      case '#/home':
        this.comName = 'my-home'
        break
      case '#/movie':
        this.comName = 'my-movie'
        break
      case '#/about':
        this.comName = 'my-about'
        break
    }
  }
},

路由-官方路由基本使用

vue-router文档

说明⚠️:如果使用vue-cli创建项目,没有选择路由插件,需要单独安装和配置

步骤

  1. 安装包
  2. 配置路由
  3. 使用路由

操作

  1. 安装 npm i vue-router@3.5.3
  1. 创建路由文件

router/index.js

// 导入路由插件
import VueRouter from 'vue-router'
import Vue from 'vue'

// 使用插件 - 重要
Vue.use(VueRouter)

// 导入组件

import Page1 from './Page1.vue'
import Page2 from './Page2.vue'
import Page3 from './Page3.vue'


// 创建路由规则
const router = new VueRouter({
  routes: [
    {
      path: "/page1", // 当浏览器访问 http://localhost:8080/#/page1时,
      component: Page1  // 装入组件 Page1
    },
    {
      path: "/page2",
      component: Page2
    },
    {
      path: "/page3",
      component: Page3
    }
  ]
})

export default router

3.在main.js中使用路由

import router from './router/index.js'

new Vue({
  router: router, // 使用路由
  render: h => h(App),
}).$mount('#app')

在页面中使用路由需要这个代码

<router-view></router-view>

Snipaste_2022-05-11_19-55-17.png 下载路由模块, 编写对应规则注入到vue实例上, 使用router-view挂载点显示切换的路由