entry
1 | /** |
选择你所爱的,爱你所选择的
1 | /** |
webpack 可以看做是模块打包机:他做的事情是,分析你的项目结构,找到 JavaScript
模块以及其他的一些浏览器不能直接运行的扩展语言(Scss
、TypeScript
等),将其打包为合适的格式以供浏览器使用
构建就是把源代码转换成发布到线上可执行的 JavaScript
、CSS、HTML 代码,包括以下内容:
TypeScript
编译成 JavaScript
、SCSS
编译成 CSS 等等JavaScript
、CSS、HTML 代码,压缩合并图片等构建其实是工程化、自动化思想在前端开发中的体现。把一系列流程用代码去实现,让代码自动化地执行这一系列复杂的流程。
有这样一个 URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如`{a:'1', b:’2’, c:’’, d:’xxx’, e:undefined}`。
1 | let str = 'http://item.taobao.com/item.html?a=1&b=2&c=&d=xxx&e&a=2' |
浏览器运行机制图:
1.构建DOM树(parse): 渲染引擎解析HTML文档,首先将标签转换成DOM树中的DOM node(包括js生成的标签)生成内容树(Content Tree/DOM Tree);
2.构建渲染树(construct):解析对应的CSS样式文件信息(包括js生成的样式和外部css文件),而这些文件信息以及HTML中可见的指令(如),构建渲染树(Rendering Tree/Frame Tree);
3.布局渲染树(reflow/layout):从根节点递归调用,计算每一个元素的大小、位置等,给出每个节点所应该在屏幕上出现的精确坐标;
4.绘制渲染树(paint/repaint):遍历渲染树,使用UI后端层来绘制每个节点。
HTTP
请求与TCP
链接之间的关系,在客户端向服务端请求和返回的过程中,是需要去创建一个TCP connection
,因为HTTP
是不存在链接这样一个概念的,它只有请求和响应这样一个概念,请求和响应都是一个数据包,中间要通过一个传输通道,这个传输通道就是在TCP
里面创建了一个从客户端发起和服务端接收的一个链接,TCP
链接在创建的时候是有一个三次握手(三次网络传输)这样一个消耗在的。
下面是 TCP
报文格式图:
↓↓↓↓
有几个字段需要重点介绍下:
sequeence number
,用来标识从 TCP 源端向目的端发送的字节流,发起方发送数据时对此进行标记。acknowledgment number
,只有 ACK 标志位为 1 时,确认序号字段才有效,Ack=Seq+1
。URG
:紧急指针(urgent pointer)有效。ACK
:确认序号有效。PSH
:接收方应该尽快将这个报文交给应用层。RST
:重置连接。SYN
:发起一个新连接。FIN
:释放一个连接。Babel 是一个让我们能够使用 ES 新特性的 JS 编译工具,我们可以在
webpack
中配置Babel
,以便使用 ES6、ES7 标准来编写 JS 代码。
本文以当前最新版本的 babel - 7.10 为例, 做 babel
的配置. 相关版本号如下
1 | { |