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的使用
集中式数据管理。
-
state:vuex的基本数据,用来存储变量
-
getter:从基本数据(state)派生的数据,相当于state的计算属性
-
mutation:提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。
-
action:和mutation的功能大致相同,不同之处在于 ==》1. Action 提交的是 mutation,而不是直接变更状态。 2. Action 可以包含任意异步操作。
-
modules:模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。
8.手写复杂下拉框
9.关于vue key删除之后的影响(绑定id)
建议尽可能在使用 v-for 时为每项提供唯一的 key 属性,并且不使用 index 作为 key 值
10.vue生命周期以及每个阶段干了什么
数据请求也可以放在created里面,此时已经创建好data,比mounted快一点点 mounted也可。
11.vue2和vue3区别
vue2 的双向数据绑定是利用ES5 的一个 API ,Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。 vue3 中使用了 es6 的 ProxyAPI 对数据代理,通过 reactive() 函数给每一个对象都包一层 Proxy,通过 Proxy 监听属性的变化,从而实现对数据的监控。
这里是引相比于vue2版本,使用proxy的优势如下 1.defineProperty只能监听某个属性,不能对全对象监听 可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可) 2.可以监听数组,不用再去单独的对数组做特异性操作,通过Proxy可以直接拦截所有对象类型数据的操作,完美支持对数组的监听。
在 Vue3 中,组件现在支持有多个根节点
组合式api:
更多链接: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
19.proxy的理解
20.route和router 的区别
route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。
router对象是全局路由的实例,是router构造方法的实例。