2022-03-09

3.9日面试的第一家比较水,问的很简单,可能是我比较菜的原因

1:了解w3c吗?


web标准主要分为结构表现行为,w3c对web标准提出了规划范要求即代码规范

2:垂直居中


设置子元素父元素行高一样 line-height

子元素设置为行内块,添加vertical-align:middle

弹性盒子:父元素设置display:flex  子元素:align-self:center

3:ES6新特性


let和const(let 命令 用于声明局部变量,let 和 const 的块级作用域,有暂时性死区,不会变量提升,在预编译和进行之间不允许访问)

解构赋值(ES6允许按照一定的模式,从数组或对象中取出值,对变量进行赋值 如果解构不成功,变量的值就等于undefined。)

模板字符串(模板字符串指是增强版的字符串,用反引号(`)标识。)

箭头函数

symbol、set、map

数组方法:fill,用途: 用于填充数组对象  Array.from,用途: 将伪数组转换为真数组,

4:用过哪些修饰符?


.lazy(改变事件后触发,光标离开input框的时候,值才会发生改变)

.number(将输出的字符串转为number类型).trim(自动过滤用户输入的首位空格)

事件修饰符:.stop.prevent(防止执行预设行为)

.capture(添加事件侦听器时,使用事件捕获模式,谁有改事件修饰符就触发谁)

.once(只执行一次)

.self(只触发自己范围内的时间,不包括子元素)

5:vue路由嵌套


配置完父路由之后添加子路由

将子路由放在父路由需要映射的位置,示例需要引入的页面

6:解释一下promise?


promise:解决回调地狱,异步问题,一般和ajax一起使用

promise有三种状态:pending,resolved,rejected

promise对象特点:promise对象状态一旦发生改变就不可逆,

promise有两个操作方法:

.then()成功后执行的方法,参数是匿名函数,参数可以有一个也可以有两个,有一个参数时,函数表示成功后执行,有两个时,第二个表示失败后执行,

.catch()失败后执行

7:vuex的组成


1)state

state是存储的单一状态,是存储的基本数据。

2)Getters

getters是store的计算属性,对state的加工,是派生出来的数据。就像computed计算属性一样,getter返回的值会根据它的依赖被缓存起来,且只有当它的依赖值发生改变才会被重新计算。

3)Mutations

mutations提交更改数据,使用store.commit方法更改state存储的状态。(mutations同步函数)

4)Actions

actions像一个装饰器,提交mutation,而不是直接变更状态。(actions可以包含任何异步操作)

5)Module

Module是store分割的模块,每个模块拥有自己的state、getters、mutations、actions。

6)辅助函数

Vuex提供了mapState、MapGetters、MapActions、mapMutations等辅助函数给开发在vm中处理store。

8:token的封装


1:因为一般登录了之后都会放到localstorage里面去,在每次请求的时候封装这个方法去取一遍,把localstorage取出来,写一个把token放到header里面的一行代码,

2:登录成功之后,服务端会返回一个token(该token是一个唯一标识用户身份的一个key)之后我们将token存在本地的cookie里面,这样下次在打开页面或者刷新页面的时候就能记住用户登录状态,不用再去登录页面重新登陆了。

用axios的话直接使用请求拦截

9:vue2中不建议子组件修改父组件中的值,有时候又不得不这样做,该怎么去实现


1:修饰符解决(.sync)

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以变更父组件,且在父组件和子组件两侧都没有明显的变更来源。

注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。取而代之的是,你只能提供你想要绑定的 property 名,类似 v-model。

当我们用一个对象同时设置多个 prop 的时候,也可以将这个 .sync 修饰符和 v-bind 配合使用:

这样会把 doc 对象中的每一个 property (如 title) 都作为一个独立的 prop 传进去,然后各自添加用于更新的 v-on 监听器。

将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。

2:v-model

10:vue自定义指令


【全局指令】

Vue.filter()

【局部指令】

也可以注册局部指令,组件或Vue构造函数中接受一个 directives 的选项,然后可以在模板中任何元素上使用新的 v-focus 属性

11:vue生命周期


beforeCreate(创建前)vue实例的挂载元素$el和数据对象data都是undefined,还未初始化(创建了挂载元素跟数据对象还未初始化)

created(创建后)完成了data数据初始化,el还未初始化(数据初始化,挂载元素还未初始化)

beforeMount(载入前)vue实例的$el和data都初始化了,已经生成了html,此时还没有挂载到页面上。(挂数据初始化完后并且生成了html,但是还没有挂在到页面)

mounted(载入后)在el新被创建的vm.$el替换,并挂载到实例上去之后调用。实例已经完成了以下的配置:用上面编译好的html内容替换el属性指向dom元素。完成模板中html渲染到html页面中,此过程中进行ajax交互。(用编译完后的html内容替换el属性,进行ajax的交互,进行页面的渲染)

beforeUpdate(更新前)在数据更新之前调用,发生在虚拟dom重新渲染和打补丁之前调用。可以再钩子中进一步地更新状态,不会触发附加的重渲染过程(进一步的更新状态,不会触发重渲染)

Update(更新后)由于数据更改导致的虚拟dom重新渲染和打补丁之后调用。调用时,组件dom已经更新,所以可以执行依赖于dom的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。(由于数据的更改导致需要重新调用,因为调用时dom已经进行更新,所有要执行依赖于dom的操作,但是大多情况下应该避免此时更新状态。因为可能会导致更新的无限循环)

beforeDestroy(销毁前)在实例销毁之前调用。实例仍然完全可用

dastory(销毁后)在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲期间不被调用。(在实例销毁之前调用,并且所有的事件监听器都被移除子实例全部销毁。)

讲一下vue声明周期,有用过update吗?


这道题没有回答到点上

你可能感兴趣的:(2022-03-09)