面试题部分总结

Vuex的五大核心模块

(1)state是vuex中的数据源,我们的数据都是放在state中的。组件中通过this.$store.state去取state的值

(2)getters对state中的数据进行加工,通过this.$store.getters取getters中的值

(3)mutation修改state中的值通过this.$store.commit('mutation类型(函数名)',"参数")或者this.$store.commit({type:'mutation类型(函数名)'},参数)修改

(4)action类似于mutation,不同的是 action可以包含异步操作action不能直接修改state,通过this.$store.dispatch使用,如果想修改state的话,需要触发mutation

(5)module 使用module之后,每个模块都有自己的state、mutation等内容,方便维护

数组的方法有那些

join ,split ,push,pop,unshift,shift,reverse ,sort,concat,slice, splice,

indexOf,lastIndexOf,forEach,map,filter,some,every,find,findIndex

js数据类型有哪些

基本类型:数字类型、字符串类型、布尔类型、空型、未定义型、唯一值型

引用数据类型:数组、函数、对象、set、map

对象深拷贝几种方式

  1. es6解构赋值
  2. for in 循环遍历对象
  3. Object.assign() 对象的合并,第一个参数必须是空对象
  4. 利用循环和递归的方式

vue中如何父组件给子组件传值

在父组件定义变量名等于参数在子组件中使用props来接收参数,在props中通过type来选择接收参数的类型,type后面跟数组可以选择多种类型

vue中如何子组件给父组件传值

在父组件中定义变量名等于定义的方法名在methods中调用方法来接收参数,在子组件中定义触发事件等于方法名,在methods中调用方法,在方法中通过this.$emit(),小括号中是父元素定义的方法名和传递的参数

谈一谈对路由守卫的理解

        路由守卫是路由在跳转前、后校验是否有权限,有权限就可以通过,反之就会被执行其他操作,如返回首页。

路由守卫分为:全局守卫,组件守卫,路由独享;

        全局守卫:所有的路由切换都会执行,一般写在路由配置文件中

router.beforeEach(fn) :to\from\next();

router.afterEach(fn):to\from;

router.beforeResolve(fn):to\from\next();

        组件守卫:

beforeRouteEnter(fn):to\from\next() //在渲染该组件的对应路由被confirm前调用,不能获取组件实例,因此无法this;

beforeRouteUpdate(fn):to\from\next();

beforeRouteLeave(fn):to\from\next();

        路由独享守卫:一般写在路由配置中

beforeEnter(fn):to\from\next();

什么是跨域,如何解决

        同源策略:浏览器的一个安全协议,协议主机端口要保持一致,只要有一个不一样,就是跨域请求。

解决跨域

        (1)后台直接不做限制,放开所有请求。优点就是方便,缺点就是不安全;

        (2)JSONP原理,利用script标签不受同源策略,需要后端配合;

        (3)配置代理;

兄弟组件传参

事件总线

  1. 定义事件总线对象
  2. 向总线发送事件语法:this.$EventBus.$emit(发送的事件名,传递的参数)
  3. 接收事件总线语法:this.$EventBus.$on(监听的事件名, 回调函数)
  4. 事件总线解绑语法:this.$EventBus.$off(要移除事件名)

Vue八大生命周期

(1)创建前:beforeCreate(){}

        初始化尚未完成,data数据、methods方法都未挂载在vue实例上,一般用于页面重定向

(2)创建后:created(){}

        第一个能够操作data数据的生命周期,一般用于接口请求+数据初始化

(3)挂载前:beforeMount(){}

        虚拟DOM挂载前,此时页面元素尚未更新

(4)挂载后:mounted(){}

        虚拟dom元素挂载后,如果需要操作dom,可以在此生命周期执行

(5)更新前:beforeUpdate(){}

(6)更新后:updated(){}

        beforeUpdate和updated在页面初次渲染时并不执行,在更新时执行,故可执行0次或多次

(7)销毁前:beforeDestroy(){}

        一般用于清除计时器

(8)销毁后:destroyed(){}

如何实现文字垂直水平居中,盒子垂直水平居中

文本水平居中:设置text-align:center;文本的垂直居中:可以设置line-height:xxpx;

盒子的水平居中:设置宽度后,设置margin:auto;盒子的垂直居中:通过弹性布局改变主轴方向以及设置justify-content:center;

Css中的单位

Em它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位。一般浏览器字体大小默认为16px,则2em == 32px;

Rem 是根 em(root em)的缩写,rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小。

Vw视窗宽度,1vw=视窗宽度的1%

vh:视窗高度,1vh=视窗高度的1%

Px:绝对单位像素

Css四种定位方式

css定位有四种不同类型,position值分别为:static, relative,absolute,fixed

1. relative(相对定位):相对定位的偏移参考元素是元素本身,不会使元素脱离文档流。元素的初始位置占据的空间会被保留。

  1. absolute(绝对定位)绝对定位元素以父辈元素中最近的定位元素为参考坐标,如果绝对定位元素的父辈元素中没有采用定位的,那么此绝对定位元素的参考对象是html,元素会脱离文档流。
  2.  fixed  (固定定位)位移的参考坐标是可视窗口,使用fixed的元素脱离文档流。

4.static (静态定位)默认值,元素框正常生成的,top left bottom right这几个偏移属性不会影响其静态定位的正常显示

基本数据类型和引用数据类型区别

基本数据类型是分配在栈上的,而引用类型是分配在堆上的

基本数据类型调用方法时作为参数是按数值传递的,引用数据类型调用方法时作为参数是按引用传递的,传递的是引用的副本

es6的语法有哪些

let和const,let表示变量、const表示常量。let和const都是块级作用域,都不能进行变量提升。

模板字符串,两个反引号其中要加变量通过${}来区分

箭头函数,相对于普通函数书写更加简单不需要function关键字来创建函数,省略return关键字,this永远指向父级

猜你喜欢

转载自blog.csdn.net/qq_53694927/article/details/128400533