面试1

131 阅读6分钟

1.es6常用的

1)let声明变量和const声明常量,两个都有块级作用域ES5中是没有块级作用域的,并且var有变量提升,在let中,使用的变量一定要进行声明
2)箭头函数ES6中的函数定义不再使用关键字function(),而是利用了()=>来进行定义
3)模板字符串模板字符串是增强版的字符串,用反引号标识,可以当作普通字符串使用,也可以用来定义多行字符串 4)解构赋值ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值
5)for of循环for...of循环可以遍历数组、Set和Map结构、某些类似数组的对象、对象,以及字符串
6)import、export导入导出ES6标准中,Js原生支持模块(module)。将JS代码分割成不同功能的小块进行模块化,将不同功能的代码分别写在不同文件中,各模块只需导出公共接口部分,然后通过模块的导入的方式可以在其他地方使用
7)set数据结构Set数据结构,类似数组。所有的数据都是唯一的,没有重复的值。它本身是一个构造函数
8)... 展开运算符可以将数组或对象里面的值展开;还可以将多个值收集为一个变量 9)Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理、强大

2.用了var之后有什么影响

变量声明提升产生闭包问题

3.async await使用场景

在async标记的函数中,如果遇到await表达式,则函数会等待await标记的Promise解析完成,然后才会继续执行下面的代码。 当有多个异步请求需要按照顺序执行。

4.promise方法

promise.all()

promise.race()

5.常用的flex属性

   display: flex;
    justify-content:            子元素水平排列方式
                    center                   居中         √
                    space-between    两端对齐   √ 
                    space-around      子元素拉伸分布   √ 
                    flex-start               居左
                    flex-end                居右
    align-items:                  子元素垂直排列      
                      center                  居中         √ 
                     flex-start              开始
                     flex-end               底部
   align-content:                  多行的时候,垂直排列
                      center                 居中     
   flex-direction:               排列方式
                      row                     横向排列
                      row-reverse        横向翻过排列
                      column                纵向排列
                      column-reverse   纵向翻过排列
   flex-wrap:                       子元素是否在一行显示
                      no-wrap              不换行
                       wrap                   换行
  flex-flow: <flex-direction> <flex-wrap>
 
 flex: 1;                             1 指的是一个系数
        *子元素在划分父元素宽度的时候,先刨除固定宽度
   flex-grow:1;                     定义子元素放大比例 0默认值
   align-self:                      其实就是用来覆盖父级align-items 垂直排列
                     center                  居中         √ 
                     flex-start              开始
                     flex-end               底部
   order:                               规定子元素顺序,排序(数值越小,越靠前)
                       默认值:0

6.less里面的循环

when

7.vuex的使用

集中式数据管理。

  1. state:vuex的基本数据,用来存储变量

  2. getter:从基本数据(state)派生的数据,相当于state的计算属性

  3. mutation:提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。

  4. action:和mutation的功能大致相同,不同之处在于 ==》1. Action 提交的是 mutation,而不是直接变更状态。 2. Action 可以包含任意异步操作。

  5. modules:模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

image.png

8.手写复杂下拉框

9.关于vue key删除之后的影响(绑定id)

建议尽可能在使用 v-for 时为每项提供唯一的 key 属性,并且不使用 index 作为 key 值

blog.csdn.net/weixin_3345…

10.vue生命周期以及每个阶段干了什么

数据请求也可以放在created里面,此时已经创建好data,比mounted快一点点 mounted也可。

image.png

image.png

11.vue2和vue3区别

vue2 的双向数据绑定是利用ES5 的一个 API ,Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。 vue3 中使用了 es6 的 ProxyAPI 对数据代理,通过 reactive() 函数给每一个对象都包一层 Proxy,通过 Proxy 监听属性的变化,从而实现对数据的监控。

这里是引相比于vue2版本,使用proxy的优势如下 1.defineProperty只能监听某个属性,不能对全对象监听 可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可) 2.可以监听数组,不用再去单独的对数组做特异性操作,通过Proxy可以直接拦截所有对象类型数据的操作,完美支持对数组的监听。

在 Vue3 中,组件现在支持有多个根节点

组合式api:

image.png

更多链接:blog.csdn.net/weixin_4720…

12.vue的mvvm干了什么

定义:双向数据绑定 特点:数据影响视图,视图影响数据 vue靠的是数据劫持+发布订阅模式

13.常用vue的指令,v-if和v-show区别

14.组件传值

15.css清除浮动

(1)由于浮动元素脱离了文档流,所以父元素的高度无法被撑开,影响了与父元素同级的元素
(2)与浮动元素同级的非浮动元素会跟随其后,因为浮动元素脱离文档流不占据原来的位置
(3)如果该浮动元素不是第一个浮动元素,则该元素之前的元素也需要浮动,否则容易影响页面的结构显示

清除浮动的方法

使用clear:both清除浮动;

给父级元素添加了一个:after伪元素,通过清除伪元素的浮动,达到撑起父元素高度的目的;

给父元素设置了overflow样式,不管是overflow:hidden或overflow:auto都可以清除浮动只要它的值不为visible就可以了,它的本质就是建构了一个BFC,这样使得达到撑起父元素高度的效果;

16.关于组件的封装,自己写一个组件

17.介绍下你其中一个项目

18.vue-router

vue-router 是 Vue.js 官方的路由管理器; active-class 属于vue-router的样式方法,当routerlink标签被点击时将会应用这个样式

vue-router有哪几种导航钩子( 导航守卫 )

1、全局守卫: router.beforeEach

2、全局解析守卫: router.beforeResolve

3、全局后置钩子: router.afterEach

4、路由独享的守卫: beforeEnter

5、组件内的守卫: beforeRouteEnter、beforeRouteUpdate (2.2 新增)、beforeRouteLeave

image.png

19.proxy的理解

20.route和router 的区别

route对象:route对象:route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。

router对象:router对象:router对象是全局路由的实例,是router构造方法的实例。