最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象。
想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码。后面会陆续的更新一些相关注知识点的文章。
文章只提出问题,并给出答案。
目录
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 按键数字,或者常用按键修饰符
12、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、骨架屏加载
希望对大家有帮助,觉得有用的帮忙点个赞。谢谢!
- Vue基础以及指令, Vue组件
Vue基础篇一 Vue指令 Vue的指令directive很像我们所说的自定义属性,指令时Vue模板中最常用的功能,它带有v-前缀,功能是当表达式改变的时候,相应的行为作用在DOM上. <div ...
- $Django 路飞之小知识回顾,Vue之样式element-ui,Vue绑定图片--mounted页面挂载--路由携带参数
一 小知识回顾 1 级联删除问题 2 一张表关联多个表,比如有manytomanyfileds forignkey,基于对象查询存在的问题:反向查询的时候 表名小写_set.all()不知是哪个字段 ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- 01慕课网《vue.js2.5入门》——基础知识
前端框架 Vue.js2.5 2018-05-12 Vue官网:https://cn.vuejs.org/ 基础语法+案例实践+TodoList+Vue-cli构建工具+TodoList Vue基础语 ...
- 1.基础篇之vue入门
为了建立高效团队,很多公司会采用全栈工程师,虽然利弊兼有,对于成本优先的创业团队,肯定是首选,特别是对.net生态圈,大部分都是小公司,就更加重要了.这里记录的是对vue的学习点滴,希望对你有所助力. ...
- 前端框架Vue------>第一天学习、Vue学习的路径、Vue官网(1)
文章目录 1.学习目标 2.前端知识体系 2.1 前端三要素 2.2.MVVM 3.第一个Vue程序 4.Vue实例的生命周期 vue的官方文档:https://cn.vuejs.org/ 1.学习目 ...
- 前端框架之Vue(1)-第一个Vue实例
vue官方文档 知识储备 es6语法补充 let 使用 var 声明的变量的作用域是全局. { var a = 1; } console.info(a); 例1: var arr = []; for ...
- Vue进阶篇
前引 今天是2018年12月30,虽不是2018年的最后一天,但是却是自己在2018年写的最后一篇博客了,昨天下班在地铁上闲来无事,翻起了关注的一些公众号发的技术博文,里面就提到写博客的重要性,其实这 ...
- vue学习指南:第二篇(详细Vue基础) - Vue的指令
一. Vue 的介绍 1. vue是一个 mvvm 的框架.(面试官经常会问的),angular 是 mvc的框架. 2. vm 是 vum 的实例,这个实例存在计算机内存中,主要干两件大事: 1. ...
- 「进阶篇」Vue Router 核心原理解析
前言 此篇为进阶篇,希望读者有 Vue.js,Vue Router 的使用经验,并对 Vue.js 核心原理有简单了解: 不会大篇幅手撕源码,会贴最核心的源码,对应的官方仓库源码地址会放到超上,可以配 ...
随机推荐
- element 文件上传大小控制
1.页面代码 <el-upload :show-file-list="false" class="upload-demo" :before-upload= ...
- JS和jQuery用法区别
目录 JS和jQuery用法区别 外观区别 查找元素 操作标签 操作内容 操作属性 操作位置 操作样式 事件 JS和jQuery用法区别 外观区别 jQuery与JS最直观的区别就是外观上jQuery ...
- shell 中的通配符:
shell 中的通配符: *: 代表 0 个或者多个任意字符 ?: 代表一定有一个的任意字符 []: 代表一定有一个在括号内的字符(非任意字符).例如[abcd]代表一定有一个字符,可能是 abcd ...
- Derby 数据库 客户端 ij使用
Derby是开源的.嵌入式的Java数据库程序,ij是Derby提供的客户端工具,相当于其他数据库提供的sqlplus工具. ij是纯Java的程序,不用安装,使用起来就像运行普通的Java应用程序一 ...
- 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目
解决办法: 一.在以下路径中找到jeesite文件,并删除 1.Tomcat 7.0\conf\Catalina\localhost 2.Tomcat 7.0\webapps 3.Tomcat 7.0 ...
- Cloneable注解使用
使用 clone()方法的类必须 implement Cloneable 如果没有继承,clone()方法会报错 java.lang.CloneNotSupportedException异常
- IO流大文件拷贝
String resourcesPath="f:/a.grd"; String targetPath=" ...
- Peter Shirley-Ray Tracing The Next Week
Peter Shirley-Ray Tracing The Next Week(2016) 原著:Peter Shirley 英文原著地址 密码: urji 第二本书主要介绍了运动模糊,BVH(层次包 ...
- retrying failed action with response code: 403 错误解决
[2019-06-10T06:52:51,610][INFO ][logstash.outputs.elasticsearch] retrying failed action with respons ...
- 题解 [51nod1461] 稳定桌
题面 解析 一开始看上去毫无思路啊. 但想通了就很很简单. 我们枚举每种长度的边作为最大的边, 于是长度比当前大的边就要砍掉, 而长度比当前小的边只能留下小于等于当前长度的边数, 砍掉代价最小的几条就 ...