面试题汇总
面试题汇总:
1、pinia的使用?
优点,同vuex的区别?
为什么vuex 中 会有同步异步的方法 mutations actions 而 pinia 取消了mutations方法?
2、如何画一个田的页面?
参考文章
3、箭头函数的优点?
4、双向绑定的原理?
由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。尽管如此我们还是有一些办法来回避这些限制并保证它们的响应性。
请移步官网查看具体案例
双向绑定的实现依赖于数据劫持
(data hijacking)和发布者-订阅者模式
(publisher-subscriber pattern)。
数据劫持和响应式系统
Vue.js通过Object.defineProperty()方法劫持对象的属性的getter和setter,从而能够监听数据的变化。当数据发生变化时,Vue实例会被通知,并触发相应的getter和setter回调函数,以更新视图。
et data = { name: 'Vue' };
Object.defineProperty(data, 'name', {
get: function() {
console.log('获取数据');
return name;
},
set: function(newValue) {
console.log('更新数据');
name = newValue;
}
});
发布者-订阅者模式
在Vue中,每个组件实例都对应一个watcher实例,它会在组件渲染过程中把属性记录为依赖,因此当依赖项的setter被调用时,会通知watcher,从而使得组件重新渲染。
// Watcher 伪代码
class Watcher {
constructor() {
// 当数据变化时,触发依赖的更新
Dep.target = this;
}
update() {
// 更新视图的逻辑
}
}
官方图例:
5、闭包的使用?
6、 继续使用vue2有什么风险?
官方通知:
7、 vue-devtools的使用?
能够提高开发效率?
8、 rem如何配置?
具体的配置,应该如何根据设计稿配置具体的比例?
主要是通过把px 转换成 rem来实现。rem是通过根节点的fontSize 大小来进行转换的。所以我们只要动态控制根节点的fontSize大小就可以。
具体如何设置fontSize的大小呢?
移动端
:主要通过:flexible.js
, lib-flexible 库
来实现的。 这个工具主要是用来帮助我们实现动态计算的,我们只需要在页面中写px单位即可,工具会自动帮助我们转换成rem。
pc端
:主要通过 (postcss-pxtorem,amfe-flexible)来实现的。amfe-flexible 是 lib-flexible的升级版。
需要注意的是:行内样式不会转成被转成rem
9、 Echarts 如何在一个图标(折线图)中,前半段展示实线,后半段展示虚线?
10、vuex中mutaions 和 actions的区别?
11、vuex中 mapState 的使用?
主要作用就是为了更好的获取store里面的属性值,减少代码,更方便维护
具体内容
12、大屏的开发?
13、vue-router 里面几种模式?
具体内容请移步官网