🌱 勤学如春起之苗,不见其增,日有所长。 —— 陶渊明
1、vue的双向绑定原理是什么?里面的关键点在哪里?vue的数据双向绑定是通过数据劫持和发布-订阅者功能来实现的,vue是通过Object.defineProperty()来实现数据劫持的。
2、实现水平垂直居中的方式?flex,absolute,margin:负值,margin:auto,transform: translate(-50%,-50%)
3、常用伪元素有哪一些?:aflter ::before ,:first-letter
4、移动端如何适配不同屏幕尺寸?rem,媒体查询,em
5、本地存储有哪一些?他们三者有什么区别?localstorage,sessionstorage,cookie,indexDB
6、JS的数据类型?如何判断js的数据类型? 基本类型(字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol)和引用类型(对象(Object)、数组(Array)、函数(Function))
7、说一下ES6的新特性有哪些?
8、Let、const、var三者有什么区别?let const (声明常量不可修改)块级作用域
9、数组去重有哪些办法?ES6新增构造函数set,利用set具有天然去重功能数组迭代
10、说一下深拷贝和浅拷贝,如何自己实现一个深拷贝?浅拷贝(=赋值,)浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用(堆和栈的关系,简单类型Undefined,Null,Boolean,Number和String是存入堆,直接引用,object array 则是存入桟中,只用一个指针来引用值),如果拷贝后的对象发生变化,原对象也会发生变化。只有深拷贝才是真正地对对象的拷贝。
11、Vue的生命周期有哪一些?说一下它们每个阶段做什么操作?
12、组件通讯方式有哪一些?
13、Vuex有几个属性及作用?
14、Vue的监听属性和计算属性有什么区别?
15、说一下防抖和节流。怎么实现?
16、Vue的导航守卫有哪一些?
17、你的登录拦截怎么实现的?
18、有用过图表吗?用的多吗?
19、闭包是什么?如何实现?
20、Vue2.0和vue3.0有什么区别?vue3.0( )
-
为什么要使用Composition API
-
在Compostion API的这种组织代码方式下可以提高代码的可读性和可维护性
-
Compostion API可以更好的重用逻辑代码
-
在vue3中使用Compostion API是可选的
-
setup
-
setup函数是Composition API的入口函数,我们的变量,方法都是在该函数中定义的
-
setup是先于beforeCreate和created执行的
-
由于在执行 setup 时尚未创建组件实例,因此在 setup 选项中没有 this
-
如何选择ref和reactive
-
1:基本数据类型(string,number,boolean等)或者单值对象({count:1}这样只有一个属性值的对象)使用ref
-
2:引用类型的值 (Object,Array)使用reactive
21、Vue常用的指令有哪些?v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model指令等等。
22、v-If和v-show有什么区别?
-
v-show 是通过控制display属性来进行dom的显示与隐藏
-
v-if 是真正意义上的条件渲染,为true是渲染(dom存在),为false时不存在(dom不存在)
23、v-for为什么要加一个key?key是给每一个vnode的唯一id,也是diff的一种优化策略,可以根据key,更准确, 更快的找到对应的vnode节点
24、你是如何封装一个组件的?
-
如何封装一个组件:
-
1、使用Vue.extend()创建一个组件
-
2、使用Vue.component()方法注册组件
-
3、如果子组件需要数据,可以在props中接收定义
-
4、子组件修改好数据之后,想把数据传递给父组件,可以用emit()方法
-
data数据结构设计原则:
-
1、用数据描述所有的内容
-
2、数据呀结构化,易于程序操作,遍历,查找
-
3、数据要可扩展,以便增加新的功能
-
组件设计原则:
-
1、从功能上拆分层次
-
2、尽量让组件原子化,一个组件只做一件事情
-
3、容器组件(只管数据,一般是顶级组件)和展示组件(只管显示视图)
25、有自己从0到1搭建过项目吗?
26、有用过uni-app吗?
27、你会写后台吗?有搞过服务端渲染吗?
28、说一下你项目中遇到的难点,如何解决?
29、Url到浏览器的一个过程有哪些步骤?
30、如何实现小程序的request封装及拦截?
31、在vue的项目应用中,不使用框架,怎么封装?
32、什么是Js原型?原型链是什么?
33、组件通讯方式有哪些?
34、用闭包的原理做过哪些?
35、作用域是什么?
36、操作数组的方式有哪些?
37、0.1 + 0.2 等于 0.3吗?为什么?如何解决?
38、keep-alive是什么?有哪几个生命周期阶段?
39、判断一个变量是否是数组,有哪些办法?
40、判断一个变量是否是对象,有哪些办法?
41、对象/数组常用方法有哪些?
42、创建一个空数组/空对象有哪些方式?
43、哪些遍历方式会改变原数组?
44、Set和Map各是什么?
45、介绍一下promise。
46、Promise通常会解决三种问题(1)链式回调(2)同时发起几个异步请求,谁先有结果就拿谁的(3)发起多个请求,等到所有请求后再做下一步处理这三种方式promise是怎么处理的?
47、如何改变一个函数a的上下文?
48、Call和apply有什么区别?
49、Evenbus是什么东西?
50、Vue中普通的生命周期大概有哪些?
51、父子组件生命周期执行顺序是怎么样的?
52、mixins有几个生命周期阶段?
-
1、对于data定义属性,组件中定义属性覆盖mixins中同名字段
-
2、对于created、mounted等生命周期函数,mixins中生命周期函数优先执行(执行顺序按mixins中顺序),再执行组件中生命周期函数
-
3、对于methods中的同名方法,组件内的方法覆盖mixins中的方法
-
注:对于相同的computed属性,组件的computed属性覆盖mixins内的computed属性,
-
而对于相同的watch监听,mixins中的watch监听先执行。
53、弹性布局,一行两列,一列固定宽,如何实现?
54、Flex:1 包含哪三种属性 flex-grow,flex-shrink,flex-basis.
55、前端性能优化有哪些方案?
56、浏览器兼容性处理有哪些?juejin.cn/post/699837…
57、谈一谈typescript juejin.cn/post/684490…
58、implements与extends区别 juejin.cn/post/691421… 类与接口的继承
59、juejin.cn/post/684490… css3的介绍
60、Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示。
-
解决方式:
-
可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。