1. 说说对mvvm框架的理解。
mvvm框架有模型、视图、视图模型组成。它与mvc框架的区别在于,mvc模型、视图、控制器之间的通信是单向的,mvvm则实现了双向数据绑定,视图与模型通过视图模型关联起来。双向数据绑定的好处在于实现了data和view之间的自动化处理,减轻代码负担。
2. 说说对webpack的理解,与gulp有什么不同?
gulp是基于任务和流的打包工具,找到某一类文件,对其做一系列链式操作,更新流上的数据,整条链式操作构成一个任务,多个任务构成了web的整个构建流程。
webpack是基于入口的。webpack会自动地递归解析入口所需要加载的所有资源文件,然后用不同的Loader来处理不同的文件,用插件来扩展webpack功能。
轻量级的项目打包,比如只打包css,用gulp更方便,webpack适合复杂项目的打包。
3. webpack的构建流程是什么?
初始化参数、开始编译、确定入口、编译模块、完成模块编译、输出资源、输出完成。
4. Loader和Plugin的不同?
Loader是"加载器"。webpack将一切文件视为模块,但是webpack原生是只能解析js文件,如果想将其他文件也打包的话,就会用到loader。 所以Loader的作用是让webpack拥有了加载和解析非JavaScript文件的能力。
Plugin是"插件"。用于扩展webpack的功能。
5. call、apply、bind的区别。
都是用来改变this指向的,第一个参数都是this要指向的对象。区别在于call和apply都是对函数的直接调用,而bind返回的是一个新的函数。call与apply的区别在于传参的方式不同,apply的第二个参数接受的是一个数组,数组中包含需要改变this指向的方法的多个参数,call直接接受需要改变this指向的方法的多个参数,不需要传递数组。
6. tcp三次握手。
第一次握手:客户端向服务器发送请求信号;
第二次握手:服务器回复客户端已收到请求,同意连接;
第三次握手:客户端告诉服务器,已收到回复。
三次握手完毕后,进行资源文件请求。
7. post和get请求的区别,各自的缺点和好处。
get的参数放在url中,post的参数放在body中;
get可以被浏览器缓存,post不会;
get请求可以直接输入在地址栏中,post不行;
get会被浏览器缓存,post不会;
get会被浏览器记录在历史记录中,可能会被爬虫请求,有安全性问题;post比get安全,但它每次都是直接请求服务器,意味着无法使用cdn缓存,所以速度比get慢。
8. typeof有什么缺陷、instanceof有什么缺陷?
typeof的缺陷:null、array、object都返回object,无法仔细区分;
instanceof的缺陷:只要是在原型链上的都返回true。
9. react兄弟组件之间除了使用redux还可以怎么传递参数?
路由传参。
url后带参数;
state、query。
网友评论