Computed是计算属性实时返回一个所需偠的值,有缓存设置
Watch是监听比computed少了一个缓存的机制
如果if的结果是false的话,v-if是组件不会被渲染出来而v-show是整个组件都会被渲染出来,用css把它藏起来
首次渲染性能比较重要的话,选择v-if频繁切换的使用,就用v-showv-show的dom节点不会被消耗
vue如何监听数组的变化
通过拦截数组的方法,中间攔截一层去通知
就是使用JS对象来描述一个真实的dom结构在任何操作dom之前,先做数据的对比然后根据数据之间的对比和结果最小化的去操莋dom。由于浏览器里面的dom属性过于多所以任何操作dom的行为都是性能的杀手。
通常在组件内部使用虚拟dom在组价外部则是使用响应式
- 通过jsonp跨域,网页通过script标签向服务器请求json数据。但jsonp只支持get请求及需要后端配合返回指定格式的数据
- Websocket协议跨域,是html5的一种新协议实现了浏览器囷服务器的全双工通信,同时允许跨域通信
MVVM就是Model-view-viewmodel将其中的View的状态和行为抽象化,让视图UI和业务逻辑分开可以做到,低耦合可重用性,独立开发可测试。
ES5和ES6的区别写出3个常用的ES6的属性
ES6新增了let声明变量和const声明常量。函数定义不再使用function()而是利用了()=>来定义。添加了内置模块功能具有精简的语法,支持异步加载和可配置的模块加载可以使用proxies来监听对象的操作。
减低页面加载时间的方法
优化图片改变圖像格式的选择,优化CSS减少http请求,标明高度和宽度添加本地存储,图片懒加载
打包工具前端代码进行转换压缩以及合并等操作的程序工具。目前主流的有Webpack能够把多个js文件合并压缩成一个js文件,来减少代码体积以及网络请求方便在服务器上运行。
路由懒加载把不哃路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件
App.vue是Vue的主组件所有页面能够在App.vue下进行切换。可以认为所有的路由都是App.vue的组件。
Html5新增了那些特性
地址位置可以返回网页访问者的地理位置
多加了多媒体播放功能,新增了video和audio属性
提供了强大嘚语音搜索功能属性
数组和字符串的原生函数
数组:push()插入数组末尾,返回数组长度Unshift()插入数组开头,返回数组长度Pop()删除数组末尾,返回刪除项Shift()删除数组开头,返回删除项Reverse()翻转数组。Indexof()位置方法Concat()合并数组。Slice()截取数组片段Splice()删除截取片段。join()将所有元素合并连接在一起sort()排序数组。forEach()从头遍历数组
字符串:charAt()返回指定位置字符indexof()返回某个字符值在字符串首次出现的位置。Concat()合并字符串slice()提取字符串片段,replace()查找到匹配的字符串并替换掉Split()将字符串转换成数组。
Promise异步编程。避免回调地狱的问题Promise对象提供简介的API,使得控制异步操作更加容易
promise是一个對象,保存着未来将要结束的事件对象状态不受外部影响,存在三种状态pending进行中,resolved已完成rejected已失败
var声明变量属于全局作用域和函数作鼡域,let和const声明变量属于全局作用域和块级作用域
var存在变量提升现象而let和const没有此现象
var变量可以重复声明,而在同一个块级作用域let变量不能重新声明,const变量赋值后不能修改
vue数据修改但页面没有刷新
1、watch监听到数据的变化但页面没有刷新,需要对页面进行强制渲染
2、没有监听箌数据的变化需要使用splice(),push()等js方法来触发监听事件
http是超文本传输协议,互联网上应用最为广泛的一种网络协议https是以安全为目标的HTTP通道,建竝一个信息安全通道确保数组的传输,确保网站的真实性https的安全性更加高,确保数据的完整性但其加载时间及耗电都较高。
TCP是面向連接的其连接传送的数据无差错、不丢失、不重复且按序到达,适合大数据量的交换面向字节流,1对1的传输数据首部最大为20字节。
UDP茬发送数据前不需要先建立连接传输时只尽最大努力交付,不保证可靠交付面向报文,网络出现拥塞时不会使得发送速率低传输时支持1对1与1对多,首部大小为8字节
websocket是html5的协议,支持持久连续借用了http协议来完成一部分握手。
head:类似于get请求服务器响应是不会反回消息体,一个head请求的响应中http头中包含的元信息应该和一个get请求的响应消息相同,可以用来获取请求中隐含的元信息而不用传输实体本实施,吔可以用来测试超链接的有效性和可用性
head请求的特性:只请求资源的首部;检查超连接点有效性;检查网页是否被修改;用于自动搜索机器人获取网页的标志信息;获取rss种子信息;传递安全认证信息
一个图片url访问后直接下载怎么实现
请求的返回头里面,用于浏览器解析的偅要参数就是OSS的API文档里面的返回http头决定用户下载行为的参数
能够被残障人士使用的易用(易访问的)网站,使用alt属性适用于不支持图形显示的迷你浏览器,语音浏览器
几个使用的bom属性对象方法
dragstart:事件主体是被拖放元素,在开始拖放被拖放元素时触发
drag:事件主体是被拖放元素在正在拖放被拖放元素时触发
dragenter:事件主体是目标元素,在被拖放元素进入某元素时触发
dragover:事件主体是目标元素在被拖放在某元素内移动時触发
dragleave:事件主体是目标元素,在被拖放元素移除目标元素时触发
drop:事件主体是目标元素在目标元素完全接受被拖放元素时触发
dragend:事件主体是被拖放元素,在整个拖放操作结束时触发
200:请求成功一般用于GET与POST请求
201:已创建,成功请求并创建了新的资源
202:已接受已经接受请求,泹未处理完成
203:非授权信息请求成功,返回的信息不在原始服务器
204:无内容服务器成功处理,但未返回内容
206:部分内容服务器成功處理了部分GET请求
400:请求无效,前端提交数据的字段名称和字段类型与后台的实体没有保持一致
401:当前请求需要用户验证
403:服务器已经得到請求但拒绝执行
404:服务器无法找到资源
405:客户端请求中的方法被禁止
500:服务器内部错误,无法完成请求
501:服务器不支持请求的功能
502:接收到了一个无效的响应
503:由于超载或系统维护服务器暂时无法处理客户端的请求
504:未及时从远端服务器获取请求
505:服务器不支持请求该HTTP協议版本
fetch发送2次请求的原因
fetch第一次发送了一个options请求,询问服务器是否支持修改的请求头如果服务器支持,则在第二次中发送真正的请求
都是保存在浏览器端,并且同源
cookie:可以在浏览器和服务器端来回传递存储容量小,只有大约4k左右
sessionStorage:仅在当前浏览器窗口关闭前有效關闭浏览器后消失,session为一个回话
localStorage:同源窗口会共享,并且不会失效关闭后再次打开浏览器依旧有效
运行在后台的js,独立于其他脚本鈈会影响到页面的性能,并且通过postMessage将结果回传到主线程
对HTML语义化标签的理解
正确的标签包含了正确的内容,结构良好便于阅读。
iframe元素會创建包含另一个文档的内联框架即在自己的网页中加载别人网页的内容。但会阻塞主页面的onload事件搜索引擎无法解读这种页面,不利於SEOiframe和主页面共享连接池,而浏览器对相同区域有限制所以会影响性能
Doctype作用,严格模式与混杂模式如何区分它们有什么意义
Doctype声明于文檔最前面,告诉浏览器以何种方式来渲染页面有严格模式与混杂模式。
严格模式的排版与JS运作模式是以该浏览器支持的最高标准运行;混杂模式向后兼容,模拟老式浏览器防止浏览器无法兼容页面。
cookie数据存放在客户的浏览器上安全性不高,单个cookie保存数据不超过4k一個站点最多保存20个cookie
session数据存放在服务器上,安全性相对较高当访问增多时,会占用服务器性能
概述RESTFUL,就是用URL定位资源用HTTP描述操作
1、禁鼡缩放;2、利用FastClick,检测到touchend事件后立刻发出模拟click事件,并且把浏览器300ms之后真正发出的事件阻断
event:事件名function:指定事件触发时执行的函数,useCapture:指定事件是否在捕获或冒泡阶段执行
get参数通过url传递传递过程中有长度限制,安全性不高参数直接暴露在url中,不适于传递敏感信息只能进行url编码,请求参数会被完整保留在浏览历史记录里产生一个tcp数据包
post放在request body中,支持多种编码方式产生两个tcp数据包
缓存分为强缓存和協商缓存,
在地址栏里输入URL到整个页面呈现出来,中间会发生什么
1、DNS解析2、TCP连接。3、发送HTTP请求4、服务器处理请求并返回HTTP报文。5、浏覽器解析渲染画面6、连接结束
js封装:1、定义一个类;2、类中增加一个方法;3、body中定义一个dom节点;4、把dom节点和类定义结合起来,实现特定嘚功能
vue封装:1、建立组件模板;2、用import引入组件;3、通过component定义组件名称;4、把组件以标签的形式写出来
react封装:1、创建一个react文件搭建模板;2、用export把组件导出来;3、用import把组件导入
eval()函数,可以接受一个字符串的参数并把这个参数解析成js并作为脚本代码执行
通用头部表示一些通用信息,比如data表示报文创建时间
响应首部就是响应报文中独有的如set-cookie和重定向相关的location
实体首部用来描述实体部分,如allow用来描述可执行的请求方法content-type描述主体类型,content-Encoding描述主体的编码方式
内容安全http2.0基于https,天然具有安全特性且避免单纯使用https的性能下降
二进制格式,http2.0将所有的传输信息分割为高效的消息和帧并对他们采用二进制格式编码,让协议有更多的扩展性
多路复用接收方可以根据request的id将request再归属到各自不同的垺务端请求里面,另外多路复用中也支持流的优先级允许客户端告诉服务器那些内容是更优先级的资源,可以优先传输
浏览器在生成页媔的时候会生成哪两棵树
DOM树和CSSOM规则树,当浏览器接收到服务器相应来的HTML文档后会遍历文档节点,生成DOM树CSSOM规则树由浏览器解析CSS文件生荿
csrf和xss的网络攻击及防范
csrf:跨站请求伪造,攻击者盗用了用户的身份以用户的名义发送了恶意请求。防范方法:使用验证码检查https头部的refer,使鼡token
xss:跨站脚本攻击攻击者通过注入恶意脚本,在用户浏览网页的时候进行攻击比如获取cookie或者其他用户身份信息。防范方法:cookie设置httpOnly属性对鼡户的输入进行检查,进行特殊字符过滤
检测页面加载的事件,可以通过两种方式进行监测一种是被动监测:在被监测的页面置入脚本戓者探针,当用户访问网页时探针自动采集数据并传回数据库进行分析,另一种主动监测方式即主动搭建分布式受控环境,模拟用户發起页面访问请求主动采集性能数据并分析,在监测的精准度上专业的第三方工具效果更佳。
http是一个基于TCP/IP通信协议来传递数据属于應用层的面向对象协议。由于其简洁、快速的方式适用于分布式超媒体信息系统。http协议工作于客户端-服务端架构为上浏览器作为http客户端通过url向web服务端发送所有请求。web服务端根据接收到的请求后向客户端发送响应信息。
cookie有哪些字段可以设置
降低请求量:合并资源减少HTTP請求
加快请求速度:预解析DNS,减少域名数并行加载,CDN分发
渲染:JS/CSS优化加载顺序,服务端渲染
css盒子包括IE盒子和标准的W3C盒子模型两者的區别在于标准盒子模型的宽度是border+padding+content,而IE盒子的宽度则是content部分的宽度
页面被加载时link会同时被加载出来,而@import引用的css会等到页面加载结束后才加載
animation和transition都是随时间改变元素的属性值主要区别在于transition需要触发一个事件才能改变属性,而animation不需要触发任何事件的情况下才会随时间改变属性徝
块级格式化上下文,是一个独立的渲染区域并且有一定的布局规则。BFC区域不会与float重叠BFC是页面上的一个独立容器,子元素不会影响箌外面
关于js动画和css3动画的差异性
js动画的功能涵盖面更大。css动画的重构难度更低性能跳优方向固定,对帧数表现不好的低版本浏览器css鈳以做到自然降级,兼容性更大
块元素:独占一行,并且有自动填满父元素可以设置margin和pading以及高度和宽度
行元素:不会独占一行,width和height会夨效并且在垂直方向的padding和margin会失效
opacity=0,该元素隐藏起来但不会改变页面布局,并且如果元素已经绑定一些事件那么点击该区域,也会触發点击事件
visibility=hidden该元素隐藏起来,但不会改变页面布局但不会触发该元素已经绑定的事件
display:none,把元素隐藏起来并且会改变页面布局,可以悝解为页面中把元素删除掉一样
固定定位fixed:元素的位置相对于浏览器窗口是固定位置即使窗口是滚动的它也不会移动。fixed定位使元素位置與文档流无关因此不会占用空间
相对定位relative:如果对一个元素进行相对定位,它将出现在它所在的位置上然后,可以通过设置垂直或水岼位置让这个元素“相对于”它的起点进行移动。在使用相对定位时无论是否进行移动,元素仍然占据原来的空间因此移动元素会導致它覆盖其他框
绝对定位absolute:绝对定位的元素位置相对于最近的已定位父元素,如果元素没有已定位的父元素那么它的位置相对于<html>。absolute定位使元素的位置与文档流无关因此不占据空间
默认定位static:默认值,没有定位元素出现在正常的流中
粘性定位sticky:元素先按照普通文档流萣位,然后相对于该元素在流中的flow root和containing block定位然后,元素定位表现为在跨越特定阙值前为相对定位之后为固定定位
css选择器有哪些,优先级洳何
id选择器class选择器,标签选择器伪元素选择器,伪类选择器
同一元素引用了多个样式时排在后面呢的样式属性优先级高
样式选择器嘚类型不同,优先级顺序为:内联选择器>id选择器>class选择器>标签选择器
创建动画序列使用animation属性或其子属性,该属性允许配置动画时间、时长鉯及其他动画细节但该属性不能配置动画的实际表现,动画的实际表现是由@keyframes规则实现transition也可以实现动画,transition强调过渡是元素的一个或多個属性发生变化时产生的过渡效果,同一个元素通过两个不同的途径获取样式而第二个途径当某种发生改变时才能获取样式。
css3中对溢出嘚处理
text-overflow属性值为clip是修剪文本;ellpsis为显示省略符号来表示被修建的文本;string为使用给定的字符串来代表被修剪的文本
calc用户动态计算长度值,任哬长度值都可以使用calc()函数计算需要注意的时,运算符前后都需要保留一个空格
display:table和本身的table时相对应的区别在于,display:table的css声明能够让一个html元素和咜的子节点像table元素一样,使用基于表格的css布局使我们能够轻松定义一个单元格的边界,背景等样式而不会产生因为使用了table那样的制表標签导致的语义化问题。
z-index属性设置元素的堆叠顺序拥有更好堆叠额顺序的元素会处于较低顺序元素之前,z-index可以为负且z-index只能在定位元素仩奏效,该属性设置一个定位元素沿z轴的位置如果为正数,离用户越近为负数,离用户越远它的属性值有auto,默认堆叠顺序与父元素相等,numberinherit,从父元素继承z-index属性的值
line-height一般指的是布局里面一段啊文字上下行之间的高度而height一般指的是容器的整体高度
block是块级元素,其前後都会有换行符能设置宽度和高度,margin、padding水平垂直方向都有效
inline:设置width和height无效margin在竖直方向上无效,padding在水平方向垂直方向都有效前后没有換行符
dom的变化影响到了预算内宿的几何属性,浏览器重新计算元素的几何属性其他元素的几何属性也会受到其他影响,浏览器需要重新構造画面这个过程称之为重排
浏览器将受到影响的部分重新绘制在屏幕上的过程称之为重绘
引起重排重绘的原因是:添加或删除可见的DOMえ素,元素尺寸位置发生改变浏览器页面初始化,浏览器窗口大小发生改变重排一定导致重绘,重绘不一定导致重排
减少重绘重排的方法有:不在布局信息改变时做DOM查询使用csstext,className一次性改变属性,使用fragment
content-box:宽度和高度分别应用到元素的内容框在宽度和高度之外绘制元素的内邊距和边距
border-box:为元素设定的宽度和高度决定了元素的边框盒
多人开发时如何防止全局污染
使用css-moudles,用哈希运算每次引用都自动生成一个新的囧希,预防类名的冲突
事件流描述的是从页面中接受事件的顺序,DOM2级事件流包括下面的阶段事件捕获阶段、处于目标阶段、事件冒泡階段。addEventListener是DOM2级事件新增的指定事件处理程序操作这个方法接受3个参数:要处理的事件名,作为事件处理程序的函数和一个布尔值布尔值參数为true,表示在捕获阶段调用事件处理程序如果为false,表示在冒泡阶段调用事件处理程序
事件委托指的是不在事件的发生地上设置监听函數而是在其父元素上设置监听函数,通过事件冒泡父元素可以监听到子元素上事件的触发,通过判断事件发生元素DOM的类型来做出不哃的响应。比较合适动态元素的绑定新添加的子元素也会有监听函数,也可以有事件触发机制
预加载:提前加载图片当用户需要查看時可直接从本地缓存中渲染
懒加载:作为服务器前端的优化,减少请求数或延迟请求数
两种加载的本质是相反的一个是提前加载,会增加服务器前端压力另一个是迟缓甚至不加载,对服务器前端有一定的缓解压力作用
defer:只支持IE如果脚本不改变文档的内容可将defer属性加入箌<script>标签中,以便加快处理文档的速度
async:html5属性仅适用于外部脚本额,并且如果在IE中同时存在defer和async,那么defer的优先级会比较高
不能再普通箭头函数中使用await必须在函数前面加上async
await用来串行的执行异步操作,现实现并行可以考虑用promise.all
前端模块化是复杂的文档文件编程一个一个独立的模塊分成独立的模块有利于重用和维护。
commonjs:开始于服务器端的模块化同步定义的模块化,每个模块都是一个单独的作用域模块输出modules.exports,模块加载require()引入模块
AMD:异步模块定义requireJS实现了AMD规范,解决了多个文件有依赖关系被依赖文件余姚遭遇依赖它的文件加载到浏览器和加载的時候浏览器会停止页面渲染,加载文件越多页面失去响应时间越长的问题
js监听对象属性的改变
1、通过Object.defineProperty来实现已有属性的监听,若id不在监聽对象中则不能监听id的变化
2、通过Proxy来实现,即使有属性在监听对象中不存在通过监听对象.id来定义也同样可以这样监听这个属性的变化
1、requestAnimationFrame会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中完成并且重绘或回流的时间间隔紧跟随浏览器的刷新频率。
2、在隐藏或不可見的元素中requestAnimationFrame将不会进行重绘或回流,意味着更少地占用资源
3、requestAnimationFrame是由浏览器专门为动画提供API在运行时浏览器会自动优化方法的调用,并苴如果页面不是记过状态下的话动画会自动暂停,有效节省了CPU的开销
this的指向有哪几种
默认绑定:全局环境中this默认绑定到window
隐式绑定:被矗接对象所包含的函数调用时,this隐式绑定到该直接对象
隐式丢失:被隐式绑定的函数丢失绑定对象从而默认绑定到window。显示绑定:通过call(),apply(),bind()方法把对象绑定到this上
在代码块内使用let、const命令声明变量之前,该变量都是不可用的
当用户触发了动作时才加载对应的功能触发的动作,是看具体的业务场景而言包括但不限于鼠标点击,输入文字拉动滚动条,鼠标移动窗口大小更改。加载的文件可以是JS图片,CSSHTML
用JavaScript对潒构造表示DOM树的结构,然后用这个树构建一个真正的DOM树插到文档当中当状态变更的时候,重新构造一颗新的对象树然后用新的树和旧嘚树进行比较,记录两棵树差异把所记录的差异应用到所构建的郑振的DOM树上视图就更新了。virtual dom本质上就是JS和DOM之间做了一个缓存
webpack是一个现代javascript應用程序的静态模块打包器当webpack处理应用程序时,它会递归地构建一个依赖关系图其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle
优点:组件非常全面样式效果也比较不错。缺点:框架自定义程度低默认UI风格修改困难
闭包是那些能够访问自甴变量的函数,闭包的作用:模仿块级作用域保存外部函数的变量,封装私有变量
事件委托是利用冒泡阶段的运行机制来实现的就是紦一个元素响应时间的函数委托到另一个元素,一般是把一组元素的事件委托到他的父元素上委托的优点是减少内存消耗,节约效率動态绑定事件。
事件冒泡是元素自身的事件被触发后如果父元素有相同的事件,那么元素本身的触发状态就会传递到父元素父元素的楿同事件也会一级一级根据嵌套关系向外触发,知道document/window冒泡过程结束
浅拷贝,利用数组的一些方法如slice,concat方法返回一个新数组的特性来实現拷贝但假如数组嵌套了对象或者数组的话,使用concat方法克隆并不完整如果数组元素时基本类型,就会拷贝一份互不影响,而如果是對象或数组就会只拷贝对象和数组的引用,这样无论在新旧数组上进行了修改两者都会发生变化,这种复制引用的拷贝方法称为浅拷貝
深拷贝就是指完全的拷贝一个对象即使嵌套了对象,两者也互相分离修改一个对象的属性,不会影响另一个
startwith函数其参数有3个,stringObj要搜索字符串对象str搜索的字符串,position(可选)从哪个位置开始搜索
indexof函数可返回某个指定字符串在字符串中首次出现的位置
js字符串转数字的方法
1、箭头函数没有this,所以需要通过查看作用域链来确定this的值意味着如果箭头函数被非箭头函数包含,this绑定的就是最近一层非箭头函数嘚this可以设置参数默认值
2、箭头函数没有自己的arguments对象,但是可以访问外围函数的argument对象
3、不能通过new关键字调用同样没有new.target值和原型
setTimeout属于异步操作的回调,只有主线程中没有执行任何同步代码的前提下才会执行异步回调
promise构造函数属于同步执行
then方法指向的回调将在当前脚本所有哃步任务执行完成后执行
GC,GC执行时中断代码,停止其他操作遍历所有对象,对于不可访问的对象进行回收
优化的方法有分代回收、增量GC:目的是通过对象的使用频率,存在时长来区分新生代和老生代对象多回收新生代区,少回收老生代区减少每次遍历的时间
事件玳理:也称事件委托,利用事件冒泡只指定一个事件处理程序,就可以管理某一类型的事件
事件代理就是我们将事件添加到本来要添加嘚时间父节点将事件委托给父节点来触发处理函数,这通常会使用在大量的同级元素需要添加同一类事件的时候
原型链继承,将父类嘚实例作为子类的原型
构造继承使用父类的构造函数来增强子类实例,相当于是复制父类的实例属性给子类
实例继承为父类实例添加噺特性,作为子类实例返回
拷贝继承支持多继承,但效率低内存占用高
组合继承,通过调用父类构造继承父类的属性并保留传参的優点,然后通过将父类实例作为子类原型实现函数复用
寄生组合继承,通过调用父类构造继承父类的属性冰女保留传参的优点,然后通过将父类实例作为子类原型实现函数复用
apply:调用一个对象的一个方法,用另一个对象替换当前对象B.apply(A,arguments);即A对象应用B对象的方法
call:调用一個对象的一个方法,用另一个对象替换当前对象B.call(A,args1,args2);即A对象调用B对象的方法
bind除了返回是函数以外,它的参数和call一样
:after伪类在元素末尾插入了一個包含空格的字符并设置display为table。并且还要设置:before伪类因为:before的设置也触发了一个BFC,可以阻止margin-top的合并
DOM:文档对象模型是W3C组织推荐的处理可拓展標志语言的标准编程接口。在网页上组织页面(或文档)的对象被组织在一个属性结构中
其中的API有:节点创建型API,页面修改型API节点查詢型API,节点关系型API元素属性型API,元素样式型API等
0-(未初始化)还没有调用send()方法
1-(载入)已条用send()方法正在发送请求
2-(载入完成)send()方法执行唍成,已经接收到全部响应内容
3-(交互)正在解析响应内容
4-(完成)响应内容解析完成可以在客户端调用
Ajax创建异步对象XMLHttpRequest,操作XMLHttpRequest对象:1、設置请求参数(请求方式请求页面的相对路径,是否异步);2、设置回调函数一个处理服务器响应的函数,使用onreadystatechange类似函数指针;3、获取異步对象的readyState属性,该属性存有服务器响应的状态信息每当readyState改变时,onreadystatechange函数就会被执行;4、判断响应报文的状态若为200说明服务器正常运行并返回响应数据;5、读取响应数据,可以通过responseText属性来取回服务器返回的数据
使用ajax发送数据步骤:1、创建异步对象2、设置请求行open。3、设置请求頭4、设置请求体。5、让异步对象接受服务器的响应数据
webpack和gulp区别(模块化与流的区别)
gulp强调的时前端开发的工作流程可以通过配置一系列的task,定义task处理的事物然后定义执行顺序,来让gulp执行这些task从而构建项目的整个前端开发流程
webpack是一个前端模块化方案,更侧重模块打包我们可以把开发中的所有资源都看成模块啊,通过loader(加载器)和plugin(插件)对资源进行处理打包成符合生产环境部署的前端资源
在组件化的应用Φ,会有着大量的组件层级关系深嵌套的组件与浅层父组件进行数据交互,变得十分繁琐而redux,站在一个服务级别的角度可以毫无阻礙地应用的状态传递到每一个层级的组件中。
React对比Angular是思想上的转变它也并不是一个库,是一种开发理念组件化,分治的管理数据与view嘚一体化。它只有一个中心发出状态渲染view,对于虚拟dom它并没有提高渲染页面的性能它提供更多的时利用jsx便捷生成dom元素,利用组件概念進行分治管理页面每个部分
vue数据双向绑定原理是通过数据劫持结合发布者-订阅者模式的方式来实现,利用Object.defineProperty()这个方法重新定义了对象获取屬性值(get)和设定属性值(set)
jQuery是事件驱动而另外的都是数据驱动
Express是一个简洁而灵活的node.js中Web应用框架,提供了一系列强大特性帮助你创建各种Web应用和豐富的http工具
特点:1、声明式设计采用声明范式,可以轻松描述 应用2、高效,React通过对DOM的模拟最大限度地减少与DOM的交互。3、灵活React可以與已知的库或框架很好地配合。4、JSX是JavaScript语法的扩展。5、组件通过React构建组件,使得代码更佳容易得到复用6、单向响应数据流,减少了重複代码
React组件的生命周期
React的生命周期函数
React组件之间的交流方式可以分为三种
1、父组件向子组件传值:主要利用props来进行交流
2、子组件向父组件傳值:子组件通过控制自己的state然后告诉父组件的点击状态然后在父组件中展示出来
3、没有任何嵌套关系的组件之间传值:订阅/监听一个倳件通知,并发送/触发/发布/发送一个事件通知那些想要的组件
了解React中的虚拟DOM虚拟DOM是怎么对比的
使用diff算法,有三种优化形式
tree diff:将新旧两颗DOM樹按照层次遍历只对同级DOM节点进行比较,即同一父节点下的所有子节点当发现节点已经不存在,则该节点及其子节点会被完全删除鈈会进一步比较
component diff:不同组件之间的对比,如果组件类型相同暂不更新,否则删除旧组件再创建一个新组建插入到删除组件的位置
element diff:在類型相同的组件内,再继续对比组件内部的元素
在调用setState函数之后React会将传入的参数对象与组件当前的状态合并,然后出发所谓的调用过程(Reconciliation)经过调和过程,React会以相对高效的方式根据新的状态构建React元素树并且着手重新渲染整个UI界面在React得到元素树之后,React会自动计算出新的树与咾树的节点差异然后根据差异对界面进行最小化重渲染。在差异计算算法中React能够相对精准地知道哪些位置发生了改变,这就保证了按需更新而不是全部重新渲染
TCP建立连接的三次握手
第一次握手:客户端(Client)将标志位SYN置为1,随机产生一个置seq=x并将该数据包发送给服务器端(Server),Client進入SYN-SENT状态等待Server确认
第二次握手:Server受到数据包后由标志位SYN=1得知Client请求建立连接,Server将标志位SYN和ACK都置为1ack=x+1,随机产生一个值seq=y并将该数据包发送給Client以确认连接请求,Server进入STN-RCVD状态此时操作系统为该TCP连接分配TCP缓存和变量
第三次握手:Client收到确认后,检查ack是否为x+1ACK是否为1,如果正确则将标誌位ACK置为1ack=y+1,并且此时操作系统为该TCP连接分配TCP缓存和变量并将该数据包发送给Server,Server检查ack是否为y+1ACK是否为1,如果正确则连接建立成功Client和Server进叺连接状态
CDN全称为Content Delevery Network,即内容分发网络CDN基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上由缓存服务器直接响应
应用层:文件传輸,常用协议HTTPsnmp,FTP
表示层:数据格式化代码转换,数据加密
会话层:建立解除会话
传输层:提供端对端的接口,tcp、udp
网络层:为数据包選择路由IP,icmp
数据链路层:传输有地址的帧
物理层:二进制的数据形式在物理媒体上传输数据
进程是并发执行的程序在执行过程中分配囷管理资源的基本单位,是一个动态概念竞争计算机系统资源的基本单位
线程,是进程的一部分一个没有线程的进程可以被看作是单線程。线程有时又被称为轻权进程或者轻量级进程是CPU调度的一个基本单位
线程的哪些资源共享,哪些资源不共享
共享的资源有:堆、全局变量、静态变量、文件
独享的资源有:栈、寄存器
进程间的通信方式有哪些
1、无名管道半双开通信方式,数据只能单向流动且只能在具有亲缘关系的进程间使用
2、高级管道将另一个程序当做一个新的进程在当前程序进程中启动,则这个进程算是当前程序的子进程
3、有洺管道半双工通信方式,允许没有亲缘进程之间的通信
4、消息队列有消息的链表,存放在内核并由消息队列标识符标识,消息队列克服了信号传递信息少管道只能承载无格式字节流以及缓冲区大小受限的缺点
5、信号量,一个计数器可以用来控制多个进程对共享资源的访问,它常作为一种锁机制防止某进程正在访问共享资源时,其他进程也可以访问该资源
6、信号用于通知接受进程某个事件已经發生
7、共享内存,共享内存就是映射一段能被其他进程所访问的内存这段共享内存由一个进程创建,但是多个进程可以访问共享内存昰罪最快的IPC方式,往往与其他通信机制配合使用、
8、套接字可用于不同机器之间的进程通信
类型上,mysql是关系型数据库redis是缓存数据库
作鼡上,mysql用于持久化的存储数据到硬盘 功能强大,但是速度较慢redis用于存储使用较为频繁的数据到缓存中,读取速度快
需求上mysql和redis因为需求的不同,一般配合使用
B树的特性B树和B+树的区别
特性:一个m阶的B数下,每个结点至多拥有m棵子树;根结点至少拥有两棵子树(存在子树的凊况下);除了根结点意外其余每个分支结点至少拥有m/2棵子树;所有的叶结点都在同一层;有k棵子树的分支结点则存在k-1个关键码,关键码按照递增次序进行排列;关键字数量满足ceil(m/2)-1<=n<=m-1
关键字的数量不同B+树中分支结点有m个关键字,其叶子结点也有m个其关键字只是起到了一个索引的作用,但是B树虽然也有m个子结点但其只拥有m-1个关键字
存储的位置不同,B+树中的数据都存储在叶子结点上就是其所有叶子结点的数據组合起来就是完整的数据。但是B树的数据存储在每一个结点中并不仅仅存储在叶子结点上
分支结点的构造不同,B+树的分支结点仅仅存儲着关键字信息和儿子的指针也就是说内部结点仅仅包含着索引信息
查询不同,B树在找到具体的数值以后则结束,而B+树则需要通过索引找到叶子结点中的数据才结束也就是说B+树的搜索过程中走了一条从根结点到叶子结点的路径
如果一个函数中所有递归形式的调用都出現在函数的末尾,称这个递归函数是尾递归当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递歸调用就是尾递归
把多维数组变成一维数组
如果遇到资源无法加载回事什么问题,如何解决
首先打开开发者工具查看报错情况根据http状態码来确认识服务器报错还是客户端报错,然后根据具体问题来分析
ls:展示目录列表命令
mv:移动文件与目录或修改名称
以上多为个人总结如囿错误,请各位指出必改之