这本书标榜的是如今前端技术,可是里面设计到的部分技术仍是相对比较落后的,但不妨碍这本书成为一本好的查漏补缺的指南,若是是在实际的工做中这本书能够说是起不到什么的效果,可是对于即将毕业,或者刚刚出来工做,又或者是求职找工做的人来讲能够起到极好的引导做用,平常面试的各个方面都有涉及(仅针对小公司的面试),可是不深入。里面重点展现的是技术的应用层面上的东西,因此也比较好理解,一些像设计模式,算法,数据结构,JS语法深刻部分这本书未曾说起,因此若是为了全面了解,为了找工做,建议读一读这本书;为了更好地工做,仍是建议你们抽空看看经典的读物。javascript
一种原生的支持模块化的方法,可是目前仅仅在chrome新版获得全面的支持,其余浏览器暂时不支持此特性,这个特性的好处是能够直接将模块与页面进行解耦操做,目前虽然原生没有全面的支持,可是经过webpack打包等形式都已经能够实现了,例如vue中的模块化开发就是基于这个思想。目前虽然不是主流,可是将来可能会成为一种标准。前端
用法是经过document.registerElement接口来注册。vue
例如,咱们注册一个插件名为X-foo,那么咱们这样操做java
document.registerElement('x-foo', { prototype: Object.create(HTMLElement.prototype, { createdCallback: { value: function() { ... } }, ... }) })
以下形式去调用webpack
<div> <x-foo></x-foo> </div>
1. 使用异步的方式来加载页面,先让一部分的内容先展现出来,再根据用户的操做加载更多的内容web
2. 将图片替换成为压缩比更高的webp格式图片
3. 打开重复的页面使用304状态码,达到利用浏览器缓存面试
1. 用户输入一个网址,浏览器开启一个线程处理请求,对用户输入的URL进行分析处理,若是是使用了HTT协议的话,那么会用HTTP来处理算法
2. 调用JavaScript引擎的方法,例如,webview调用loadUrl方法,分析并加载这个URLchrome
3. 连同浏览器的cookie,userAgent等信息向网站目的地IP发起GET请求数据库
4. 进入后台web服务器处理请求
5. 进入部署好的后台应用,找到对应的处理逻辑,这期间可能会读取服务器缓存或者读取数据库
6. 服务器处理请求并返回响应报文,浏览器的缓存资源的时间会跟服务器的最后修改记录时间作对比,一致返回304,不然返回200
7. 若是为200的时候,下载对应的HTML文档,304直接读取缓存
示意图以下:
1. 如图咱们能够知道浏览器引擎和JavaScript引擎不是同一回事,这个也就说明了为何JavaScript是单线程可是浏览器能够异步发起请求的问题。
2. 咱们重点关注的是渲染引擎和一些存储,由于其余部分开发者没法操做
以webkit内核和Gecko内核为例:
对比以后咱们能够发现Gecko内核是须要先解析HTML而后再解析CSS,webkit内核是并行执行的。因此webkit内核在解析CSS这方面会相对高效
!important(最高权重) > 内联样式规则(权重1000) > id选择器(权重100) > 类选择器(权重10) > 元素选择器
cookie通常是有两种:session cookie和持久型 cookie
1. session cookie通常未设置过时时间,只要关闭浏览器窗口,cookie就会消失
2. 持久型cookie通常会设置cookie过时时间,关闭后再次打开浏览器窗口都有效
1. 前端高效开发工具:vscode、webstorm、sublime
2. 前端调试工具: chrome devtool
3. 网络辅助工具:fiddler charles wireshark
4. 前端远程调试工具:vorlon.js weinre VConsole
主要的web安全有XSS,SQL注入,CSRF
XSS:一般是由页面可解析的内容未通过处理就直接插入到页面致使。例如插入document.cookie来获取cookie
SQL注入:输入框的内容未通过处理就直接传给数据库,致使SQL插入到数据库中
CSRF:举一个例子,假设有一个假冒网站,用户向其中提交用户名和密码,这个时候假冒网站就会向真实的网站发起请求,跳转到真实的网站,可是这个时候假冒网站已经就记录下了用户的用户名和密码。
前端主要的网络劫持有DNS劫持和HTTP劫持
1. DNS劫持:DNS被篡改解析的路径致使网站解析出错,目前这种劫持较少,这要发生这种劫持是运营商所为
2. HTTP劫持:通常来讲这种劫持的HTML,CSS ,JS都是正常的。可是在网站response的时候,网络运营商会劫持添加一些脚本,主要表如今使用HTTP请求有时候会莫名其妙的出现一些小广告之类的。解决的方法是HTTP换成HTTPS
web调用native
主要web调用native的流程是经过uri和addJavascriptInterface接口来实现的
主要的途径是uri,是经过url向native发起请求,native调用系统的底层来实现的
native协议调用web
原理是:HTML5编写的Javascript暴露到全局中,而后在native中调用loadUrl方法来实现调用javascript
1. 直接经过懒加载来实现
2. 经过使用AMP来实现HTML元素的懒加载(对于video,table等耗时的元素这样作会加快页面的加载速度,可是目前这些方案并非前端的主流解决方法【博主观点】)
<header> <video> <source /> <article> <time> <datalist> <command />
<input>新增了 autocomplete,placeholder,autofocus,required属性,新增了email,number,color,range,search,date
这本书说不上好,也说不上特别的很差,整体上就是用来查漏补缺的,面试可用。书中的内容越日后越稀薄,建议读读前几章就行了。