整理了一些常用的前端知识点,忘记的时候可以翻出来回忆浏览器渲染从输入URL到显示网页的过程分析一、应用层DNS域名解析:客户端首先检查是否有对应的IP地址,如果找到,则返回响应的IP地址。如果没有找到,则请求上级DNS服务器,直到找到或到达根节点。2、浏览器与服务器建立TCP连接(默认80端口)(详细可以讲三次握手过程)3、应用层客户端发送HTTP请求。4、服务器响应请求:找到客户端请求的资源,返回一个响应消息,其中包含一个重要的信息——状态码(200-300,成功;304使用缓存)。5、服务器返回相应的文件给浏览器。6.Tcp连接被释放(可以说是四次挥手的过程)。7、浏览器解析HTML文件构建DOM树,构建渲染树,js根据DomAPI操作执行绑定事件,页面显示完成。H5语义标签新特性:header、footer、section、nav、aside、article增强表单:多种类型的输入新表单元素:datalist、keygen、output新表单属性:placehoder、required、min和maxaudio视频:audio、videoPainting:canvasgeolocation:geolocationdrag:dragevent+dataTransfer+FileReaderLocalstorage:localStorage-无时间限制的数据存储;sessionStorage-会话的数据存储,当用户关闭浏览器窗口时,数据将被删除新事件:onresize、ondrag、onscroll、onmousewheel、onerror、onplay、onpause单TCP连接CSRFCSRF(Cross-siterequestforgery),中文名称:跨站请求伪造,又名:一次点击攻击/会话骑马,简称:CSRF/XSRF。你可以这样理解CSRF攻击:攻击者窃取了你的身份,并以你的名义发送恶意请求。CSRF可以做的包括:以你的名义发送邮件和信息,窃取你的账户,甚至购买商品,转移虚拟货币……造成的问题包括:个人隐私泄露和财产安全。检查header中的Referer参数,确保请求是从正确的网站发出的(但XHR请求可以调用setRequestHeader方法修改Referer头);对于任何重要的请求,用户的身份都需要重新认证;创建一个唯一的令牌(Token),将其保存在服务端的session和客户端的cookie中,对于任何请求都检查两者是否一致。XSSXSS的防范可以从多方面着手:xss的意思是CrossSiteScripting(跨站脚本攻击),类似于SQL注入攻击。在SQL注入攻击中,SQL语句作为用户输入,达到查询/修改/删除数据的目的。在xss攻击中,通过插入恶意脚本来实现对用户浏览器的控制。(1)如前所述,浏览器本身可以识别简单的XSS攻击字符串,从而防止简单的XSS攻击;(2)从根本上说,解决方案是消除网站的XSS漏洞,这就需要网站开发者使用安全字符转义等方法,时刻牢记安全;(3)对于普通网民,要注意尽量抵制诱惑,不要点击非知名网站的链接。协议httpCSSSSS3新特性选择器背景和边框文字效果2D/3D转换动画、过渡多列布局用户界面双列分布第一个使用calc;第二个使用:两者都设置位置:绝对;然后在右边设置left:309px;width:auto;JavaScriptthis指向js中的this,一般用在函数中,但是它的指向要小心,this总是指向最后调用它的对象。,系统会自动修改此点。我们也可以手动修改这个点。通过call、apply、bind方法,三个的第一个参数是this要指向的对象,也就是你要指定的上下文call:立即调用,第一个两个参数依次传递,以便apply:立即调用,第二个参数放在数组中bind:返回对应的函数,方便后面调用;柯里化高阶函数:英文叫做Higher-orderfunction,就是把函数作为参数的函数Currying:英文叫做Currying,是一种把一个接受多个参数的函数转化为一个接受一个参数的函数的技术单个参数(原函数的第一个参数),并返回一个接受其余参数并返回结果的新函数。它是高阶函数的一种特殊用法。//普通加函数functionadd(x,y){returnx+y}//柯里化后functioncurryingAdd(x){returnfunction(y){returnx+y}}add(1,2)//3curryingAdd(1)(2)//3个好处参数复用提前确认延迟跑经典面试题//实现一个add方法,使计算结果满足如下预期:add(1)(2)(3)=6;add(1,2,3)(4)=10;add(1)(2)(3)(4)(5)=15;functionadd(){//第一次执行时,为Store定义一个数组所有参数var_args=Array.prototype.slice.call(arguments);//内部声明一个函数,使用闭包特性保存_args并收集所有参数值var_adder=function(){_args.push(...arguments);返回_加法器;};//利用toString隐式转换的特性,最后执行时,会隐式转换并计算最终值return_adder.toString=function(){return_args.reduce(function(a,b){returna+b;});}返回_加法器;}add(1)(2)(3)//6add(1,2,3)(4)//10add(1)(2)(3)(4)(5)//15add(2,6)(1)//9ES6新特性1.关键字:let和constlet声明的变量只在let命令所在的代码块内有效,不能提升变量,不能重复定义const声明只读常量.一旦声明,常量的值就不能改变。2.解构赋值
