搞懂Vue-Router的概念和使用,看完这篇文章就够了,程序员去大公司面试

22 阅读5分钟

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:docs.qq.com/doc/DSmRnRG…

在这里插入图片描述

上图就是前端编程路由跳转的规则,点击导航根据路径跳转到对应的组件;也是一种映射关系,多个路由的映射关系由前端路由器统一管理配置;

二. 对SPA应用的理解

===========================================================================

编程中的路由是为了实现SPA(single page web application)应用(单页面应用)

单页面应用就像vue和react只有一个html页面,页面和局部内容改变通过路由跳转完成;多页面应用就是多个html页面,经过点击链接跳转到对应的html页面;

对SPA(单页面应用)的理解:

  • 单页面应用

  • 整个应用只有一个完整的页面index.html

  • 点击页面中的导航不会刷新页面,只会也页面局部更新

  • 数据需要通过ajax请求获取

三. 后端路由和前端路由

===========================================================================

前面说过关于路由的概念:

  1. 一个路由就是一组映射关系;

  2. Key为路径,value可能就是一个函数或者组件

官方是这样定义的:

Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括:嵌套路由映射,动态路由选择,模块化、基于组件的路由配置…

上面为什么说key路径对应的value有可能是一个函数,因为路由也 前端和后端之分;

后端路由:

  • value是funtion,用于处理客户端提交的请求

  • 服务器接受到一个请求时,根据请求路径找到匹配的函数来处理请求,返回响应数据

前端路由:

  • value是component,用于显示页面内容

  • 当浏览器路径发生变化时,对应的组件就会显示

四. 项目中路由基本使用

===========================================================================

路由的基本使用,其实官方介绍的很详细;这里注意一下,vue2.x版本使用路由V3.x版本,vue3.x版本使用路由V4.x版本;

如果你在最初创建项目的时候,选择一起安装vue-router的话,项目代码也就配置好了,下面我们来手动安装配置一下;(以vue3项目为例)

首先,在项目中安装vue-router

npm install vue-router@4

其次,在src文件夹下面创建一个router文件夹,并在其下创建index.js

import { createRouter, createWebHashHistory } from 'vue-router'

import Login from '../views/Login.vue'

const routes = [

{

path: '/login',

component: Login

},

{

path: '/home',

component: () => import('../views/index.vue'),

}

]

const router = createRouter({

history: createWebHashHistory(),

routes

})

export default router

然后,在main.js里面注册路由

import {createApp } from 'vue'

import App from './App.vue'

import router from './router'

const app = createApp(App)

app.use(router)

最后,在项目组件中添加 < router-view /> 视图

路由可以多层嵌套,这里就不多讲啦,具体可以查看官网中的嵌套路由的具体讲解;

五. 路由传参

======================================================================

  • < router-link >标签传参

前面我写过专门的介绍,可点击vue中路由传参方式之一(router-link 进行页面按钮式路由跳转传参)查看;

  • 编程式路由传参

前面我写过专门的介绍,可点击vue中路由传参方式之二(this.$router.push进行编程式路由跳转传参)查看;

六. 路由守卫

======================================================================

全局路由守卫

  • beforeEach( (to,from,next) => {}) — 在初始化和路由切换之前调用

  • afterEach((to,from) => {}) — 在初始化和路由切换之后调用

项目中可以利用beforeEach全局前置路由守卫来做权限路由访问

独享路由守卫

  • beforeEnter(to, from,next) — 某个路由独享的,只有进去之前

const routes = [

{

path: '/home',

component: () => import('../views/index.vue'),

beforeEnter: (to, from,next) => {

//符合权限的可以进去该单个路由

...

},

},

]

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?