2023年10月29日

1、路由发展阶段

  • 后端路由
  • 前后端路由分离阶段
  • SPA(single page web application)
    • 渲染不同的组件

2、前的路由如何实现URL和内容进行映射的------监听URL的改变

  • URL的hash

    • URL的hash即是锚点(#),本质上是改变window.location的href属性;
    • 我们可通过直接赋值localtion.hash来改变href,但是界面不刷新。
  • HTML5的history

    • history是HTML5新增的,它有6种模式改变URL而不刷新页面;
      • replaceState:替换原来的路径;
      • pushState:使用新的路径
      • popState:路径的回退
      • go:向前或向后改变路径
      • forward:向前改变路径
      • back:向后改变路径

3、三大框架的路由

  • Angular------ngRouter
  • React------ReactRouter
  • Vue------vue-Router

4、vue-router

  • 路由用于设定访问路径,将路径和组件映射起来;
  • 在vue-router的单页面应用中,页面的路径的改变就是组件的切换;

5、开发环境、测试环境、生产环境

  • 开发环境:开发环境是开发者专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。
  • 测试环境(User Acceptance Test------UAT):般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。
  • 生产环境:指正式提供对外服务的,一般会关掉错误报告,打开错误日志。

6、通过install安装依赖的时候,使用了-save或-S以及 -save-dev或-D,两者的区别是什么

  • -save:安装包信息将加入到dependencies(生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后 仍然需要依赖)
    • 安装依赖的时候,若没有添加-save和-save-dev,系统默认为-save。
  • -save-dev:安装包信息将加入到devDependencies(开发阶段的依赖,就是我们在开发过程中需要的依赖,只在开发阶段起作用。)

7、router的使用

  • 安装:npm install vue-router (-S)(router在生产环境都需要使用)
  • src下面新建router文件夹,里面新建index.js。
javascript 复制代码
import {createRouter} from 'vue-router' // 导入函数
// 创建路由即创建映射关系(路径 <-> 组件)
const router = createRouter({
    routes: [
        {
            path: '/home',
            component: () => import('@/views/Home.vue')
        },
        {
            path: '/about',
            component: () => import('@/views/About.vue')
        }
    ]
})

// 导出路由
export deault router;

// 在main.js中进行导入
import router from './router'

const app = createApp(App)
app.use(router)
app.mount('#app')
  • 使用不同的路由模式------history、hash
javascript 复制代码
import { createWebHashHistory, createRouter } from 'vue-router'

const router = createRouter({
    history: createWebHashHistory()
})

8、vue内置组件router-view

  • router-view:router-view 当你的路由path 与访问的地址相符时 ,会将指定的组件 替换该 router-view
    • router-link:router-link 实现路由之间的跳转
    • 属性
      • to:字符串或一个对象

      • replace:点击会调用router.replace(),而不是router.push()

      • active-class:激活a元素后应用的class,默认router-link-active

      • exact-active-class:链接精准激活时,应用于渲染的a的class,默认router-link-exact-active(精准匹配,会匹配至子路由)

9、补充

  • 默认路径
arduino 复制代码
{
    path: '/',
    redirect: '/home'                 //重定向到home组件
}

10、路由懒加载

  • 原因: - 当打包构建应用时,js包会变得很大,影响页面加载;路由懒加载可实现用时加载相应的文件。 - vue-router默认支持动态导入组件,类似于webpack的分包 - component可传入一个组件,也可接收一个函数,该函数返回一个Promise; - import函数可返回一个Promise
    • name属性:独一无二的属性
    • meta属性: meta: { name: '东方饭店', icon: 'icon-setting' }

11、动态路由

  • 在应用程序已经运行的时候添加或删除路由,叫动态路由
  • 获取动态路由的值
    • template中,直接通过$route.params获取值
    • created中,this.$route.params获取
    • setup中,使用vue-router库提供的hook useRoute
      • 该hook会返回一个Route对象,对象中保存着当前路由相关的值。
javascript 复制代码
<template>
    <div>{{ $route.params.id }}</div>
</template>

export default {
    created() {
        onsole.log(this.$route.params.id)
    },
    setup() {
        const route = useRoute()
        console.log(route)
        console.log(route.params.id)
    }
}

12、动态路由------NotFound

less 复制代码
{
    path: '/:pathMatch(.*)",
    component: () => import('@/views/NotFound.vue")
}

// template模板中
<div>
    温馨提示:{{ $route.params.pathMatch }}路径不存在~       // 温馨提示:...路径不存在
</div>

13、具有嵌套

  • 定义:能使第一层路由里面的多个组件进行切换。
  • 实现:
javascript 复制代码
const route = [
    {
        path: '/home',
        component: () => import('@/views/home/home.vue'),
        children: [
            path: '',
            name: '',
            redirect: '/homeIndex'
            component: () => import('@/views/home/index/index.vue')
        ]
    }
]

14、编程式路由的跳转

php 复制代码
1.写在元素上
router.push()  =>  <button @click="$router.push('/exceptionType')">点击跳转</button>
2、js写法
methods: {
    handleClick() {
        this.$router.push({
            path: '/exceptionType',
            query: {
                name: 'cha',
                age: 90
            }
        })
    }
}
  • 路由返回

    • router.back() 相当于router.go(-1)
  • 路由前进

    • router.forward 相当于router.go(1)

15、动态添加路由

  • router.addRoutes:不知道为啥以下代码添加动态路由不起作用。
php 复制代码
router.addRoute({
    path: '/admin',
    meta: {
        title: '用户管理'
    },
    component: () => import('@/views//desktop/admin/index.vue')//路由按需加载
  })

16、路由导航守卫------对路由跳转之前进行拦截

  • 参数
    • to:即将进入的路由Route对象
    • from:即将离开的路由Route对象
  • 返回值
    • false:取消当前导航
    • 不返回或undefined:进行默认导航
    • 返回一个路由地址
      • 可以是一个string类型的路径
      • 可以是一个对象,对象中包含path/query/params
  • 可选的第三个参数:next
    • vue2中通过next函数进行跳转
    • vue3中通过返回值控制,不推荐使用
javascript 复制代码
router.beforeEach((to, from, next) => {
    
})
相关推荐
随云6323 分钟前
WebGL编程指南之着色器语言GLSL ES(入门GLSL ES这篇就够了)
前端·webgl
寻找09之夏1 小时前
【Vue3实战】:用导航守卫拦截未保存的编辑,提升用户体验
前端·vue.js
多多米10052 小时前
初学Vue(2)
前端·javascript·vue.js
柏箱2 小时前
PHP基本语法总结
开发语言·前端·html·php
新缸中之脑2 小时前
Llama 3.2 安卓手机安装教程
前端·人工智能·算法
hmz8562 小时前
最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主
前端·微信小程序·小程序
看到请催我学习2 小时前
内存缓存和硬盘缓存
开发语言·前端·javascript·vue.js·缓存·ecmascript
blaizeer3 小时前
深入理解 CSS 浮动(Float):详尽指南
前端·css
编程老船长3 小时前
网页设计基础 第一讲:软件分类介绍、工具选择与课程概览
前端
编程老船长3 小时前
网页设计基础 第二讲:安装与配置 VSCode 开发工具,创建第一个 HTML 页面
前端