前端知识扫盲-VUE知识篇一(VUE核心知识) 朴灿烈づ我的快乐病毒、 2021-12-11 02:37 751阅读 0赞 最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象。 想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码。后面会陆续的更新一些相关注知识点的文章。 文章只提出问题,并给出答案。 目录 1、对于Vue是一套渐进式框架的理解 2、对MVVM的理解 3、vue数据双向绑定的原理 4、vue.js的核心是什么? 5、vue中如何编写可复用的组件? 6、什么是vue生命周期和生命周期钩子函数? 7、vue更新数组、对象时触发视图更新的方法,可以顺便讲讲为什么。 8、 v-if 和 v-show 有什么区别 9、vue常用的修饰符 10、vue事件中如何使用event对象? 11、vue如何监听键盘事件中的按键? 12、v-on可以监听多个方法吗? 13、vue中 key 值的作用 14、Vue 组件中 data 为什么必须是函数 15、v-for 与 v-if 的优先级 16、vue中父子组件如何相互调用方法 17、vue父子组件的传值和注意事项 18、兄弟组件的传值(vue中央事件总线的使用) 19、vue中 keep-alive 组件的作用 20、$nextTick的使用 21、解决非工程化项目初始化页面闪动问题 22、v-model语法糖的组件中的使用 23、怎么实现自定义过滤器,常用的过滤器 24、怎么写一个vue指令,指令是拿来干什么的? 25、vue的计算属性和Watch属性的区别? 26、计算属性的缓存和方法调用的区别 27、vue等单页面应用及其优缺点 28、vue优化首页加载速度的方法 29、vue如何调用 原生app 提供的方法 30、vue中实现切换页面时为左滑出效果 31、vue弹窗后如何禁止滚动条滚动? 32、vue的Store模式 33、vue的性能优化方案 **1、对于VUE是一套渐进式框架的理解** 他的主张性不强,排他性不强。就是如果你有老系统,你也可以某几个组件使用VUE实现。 **2、对MVVM的理解** 他就是Model View ViewModel的简写。Model 代表数据层,View代表显示层。ViewModel是Model和View相互交互的桥梁。 **3、数据双向绑定实现的原理;** 他是使用观察者模式来实现的,使用了Object.definePropety的set和get做的数据劫持。 Observer 观察者,使用Object.definePropety观察数据变化,有变动则通知订阅者; Watcher 订阅者,收到变化通知,执行相关函数,更新视图,每个指令会有一个update方法,就是通过这个update方法更新视图的; Compile 解析器,解析DOM,并根据相关指令告诉订阅者需要添加哪些订阅内容; **4、vue.js的核心是什么?** 数据驱动(数据双向绑定),模块系统。 **5、怎样编写一个VUE组件** 这个分两种组件。一种就是平时的页面组件,这个就按照正常写即可。 如果是小组件,需要可复用的。也是按照平时用其他方式写组件思路一样,把可配置的参数,可开放的方法提取出来。只是他的传参方式,和方法开放按照VUE的语法来就可以。比如用porp传参。事件用$emit即可 **6、VUE的生命周期,以及他的钩子函数** beforeCreadted 开始创建实例,data,DOM都还是空的; creadted 实例创建完成,data已初始化 beforeMount 开始挂载(开始解析),DOM也基本初始化了,但具体的filter啊等等这些指令还没替换; mounted 挂载完成(解析完成)DOM,DATA都初化完成了,也渲染成功了。 beforeUpdate 数据更新开始时触发 updated 数据更新完成时触发 beforeDestroy 组件销毁前触发 destroyed 组件销毁后触发,组件销毁只是解除的事件监听,和绑定。DOM还时会存在的 **7、vue更新数组、对象时触发视图更新的方法,可以顺便讲讲为什么。** 这不能更新,是因为Objcet.defineproperty的set方法,如果直接更数组,对象的话他是不会触发的。而VUE的更新就是用的此方法做的监听。所以他的视图也就不会更新了。这set不更新的原因就是因为这是引用类型的数据。改变的是内存数据的本身,变量的引用指针并没有发生变化,所以set就不会被执行。知道了原因,解决就很简单了。(对象暂时说不通) a、把整个数组或对象进行重新赋值。 b、vue已经把数组的变异方法进行了包裹,也都是可以使用的。 c、使用vue的set方法设置,这至于他的处理方式暂时还没研究。 8、v-if 和 v-show 有什么区别 v-if 是直接删除添加节点;v-show是控制点的display显示隐藏 **9、vue常用的修饰符** .stop 防止冒泡 .captrue 防止事件捕获 .prevent 防止默认事件 .up 向上键 .down 向下建等等。。。 **10、vue事件中如何使用event对象?** 不带括号的事件方法,默认参数是event对象。需要带括号传递参数的可以加$event对象 **11、vue如何监听键盘事件中的按键?** 事件后面加.13 按键数字,或者常用按键修饰符 1 **2、v-on可以监听多个方法吗?** 可以。<input @click="" @foucs="" @input=""/> **13、vue中 key 值的作用** 给元素添加了一个唯一性标识,当数据更新时能更快的获取到更新内容。可以提高性能。个人理解是加了key就是使用ID查找标签更新内容,没加key就是使用标签查找形式更新。ID可以更快速精准。 **14、Vue 组件中 data 为什么必须是函数** 因为data是存在vue构造函数的原型里面,原型是会共享的。如果直接赋值,会导致其他vue实例也跟着受影。 **15、v-for 与 v-if 的优先级** v-for的优先级比v-if高,所以这两个就不应该用到一起; **16、vue中父子组件如何相互调用方法** 父组件调子组件用$refs获取子组件实例,从而实现调用子组件方法或修改子组件的数据; 子组件调父组件可用$emit向父组件派发事件,父组件需要v-on订阅事件; **17、vue父子组件的传值和注意事项** 父子组件使用props传值,但他是一个单向下行数据绑定模式。 如果需要做成双向数据绑定,可以加.sync修饰符来实现。 **18、兄弟组件之间的传值(中央事件的使用)** 可以使用VUEX和中央事件两种方法:VUEX请看VUEX的知识篇章 兄弟组件传值可以建立一个空的VUE实例,来作为中转站。通过$emit事件形式来进行传值。这个空实例就是所谓的中央事件总线; 中央事件总线可以注入到全局,避免每个模块还需要做引入动作 建议大项目用vuex小项目用中央事件,因为中央事件代码量轻 **19、vue中 keep-alive 组件的作用** 缓存当前组件状态,让其跳出后再回来还保留最后浏览状态。他有include与exclude两个属性,允许组件有条件地进行缓存。可以结合路由缓存页面组件。在meat中配置keep-alive属性 **20、$nextTick的使用** 在数据更新后需要立马操作新DOM的情况下需要用到。 **21、解决项目初始化页面闪动问题** 添加v-cloak指令 **22、v-model语法糖的组件中的使用** v-model就是v-value 和 v-on:input事件的结合;输入框触发input事件时更新了v-value绑定的数据值。 **23、自定义过滤器,以及常用的过滤器** 使用filter定义过滤器,以管道形式使用。value | filter,需要过滤的值会作为第一个参数传入filter方法; 货币格式,时间格式化,首字母大写,补0 **24、怎么写一个vue指令,指令是拿来干什么的?** 用与操作DOM,比如给数据块加入loading效果,可使实现一个loading指令; 指令使用directive进行注册 **25、vue的计算属性和Watch属性的区别?** 计算属性监听的事依赖值,依赖值变了然后改变当前属性值。watch监听的事值本身的变化,发生变化了再去做一系列的操作。 能用计算属性的尽量用计算属性,少用watch **26、计算属性的缓存和方法调用的区别** 计算属性是监听依赖值变化会自动重新执行,如果没变化取的是缓存的值,不执行计算方法。 调用方法是需要每次手动调用,而且每次都会重新执行计算。 **27、vue等单页面应用及其优缺点** 优点:数据双向绑定,组件化,轻量; 缺点:浏览器只支持到IE9;SEO不友好,可以通过服务端渲染做支持;第一次加载首页时间较长; **28、如何提高VUE首页加载速度** 路由按需加载,必须做的。配置路由时使用 resolve require加载页面组件 线上包去调map文件 第三方库使用页面引入方式,不要放到webpack打包文件里面。但需要配置webpack的externals,这个属性的配置用处可以查阅相关资料。 **29、vue如何调用 原生app 提供的方法** 所有交互都是在wiond对象上绑定方法,现有webViewJSbridge进行与原生APP的交互,JSbridge是通过一个隐藏的iframe实现; **30、vue中实现切换页面时为左滑出效果** 使用transition组件实现 **31、vue弹窗后如何禁止滚动条滚动?** 直接设置body益出隐藏,并阻止页面的的滚动默认事件 **32、vue的Store模式** vue的store模式就是状态管理模式,平时做状态管理的时候都用的VUEX,但他用起来比较繁琐,我们可以自己按照vuex的思路也就是store模式实现一个简单的状态管理功能。实现很简单:就是定义一个全局对象。有需要用到这个对象的组件,直接在组件里把全局对象赋值一就可以了。详细可以看官方文档。 **33、vue的性能优化方案** ** **1、页面组件使用路由懒加载,不要打包在一个文件里 2、资源压缩,屏蔽map文件 3、v-if 和 v-show的选择调用 v-if是按需加载的,只有为true的时候才会加载相应资源 v-show初始化的时候不管是true还是false都会加载,操作频繁的可以选择它。 4、使用key标记 方便vue更新时更快的找到相关资源 5、骨架屏加载 希望对大家有帮助,觉得有用的帮忙点个赞。谢谢!? 转载于:https://www.cnblogs.com/hrw3c/p/11139705.html
还没有评论,来说两句吧...