url参数解析成一个对象
```
Document
```
weakMap
```
WeakMap
```
weakMap的应用
weakMap //ES6语法 利用weakMap避免内存泄露 const oBtn1 = document.querySelector('#btn1'); const oBtn2 = document.querySelector('#btn2'); const oBtnMap = new WeakMap(); //弱引用 oBtnMap.set(oBtn1, handleBtn1Click); oBtnMap.set(oBtn2, handleBtn2Click); oBtn1.addEventListener('click', oBtnMap.get(oBtn1), false); oBtn2.addEventListener('click', oBtnMap.get(oBtn2), false); function handleBtn1Click() {} function handleBtn2Click() {} oBtn1.remove(); oBtn2.remove();
webpackload和plugin区别
loader: loader从字面的意思理解,是 加载 的意思。 由于webpack 本身只能打包commonjs规范的js文件,所以,针对css,图片等格式的文件没法打包,就需要引入第三方的模块进行打包。 loader虽然是扩展了 webpack ,但是它只专注于转化文件(transform)这一个领域,完成压缩,打包,语言翻译。loader是运行在NodeJS中。 仅仅只是为了打包,仅仅只是为了打包,仅仅只是为了打包,重要的话说三遍! 如:css-loader和style-loader模块是为了打包css的 babel-loader和babel-core模块时为了把ES6的代码转成ES5 url-loader和file-loader是把图片进行打包的。 plugin是做什么的 plugin完成的是loader不能完成的功能,这是废话,没有说清楚。 plugin也是为了扩展webpack的功能,但是 plugin 是作用于webpack本身上的。而且plugin不仅只局限在打包, 资源的加载上,它的功能要更加丰富。从打包优化和压缩,到重新定义环境变量,功能强大到可以用来处理各种各样的任务。webpack提供了很多开箱即用的插件: CommonChunkPlugin主要用于提取第三方库和公共模块,避免首屏加载的bundle文件,或者按需加载的bundle文件体积过大,导致加载时间过长,是一把优化的利器。而在多页面应用中, 更是能够为每个页面间的应用程序共享代码创建bundle。 插件可以携带参数,所以在plugins属性传入new实例。
三次握手
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYNSEND 状态。 首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYNRCVD 的状态。 在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。 确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号
不使用代理模式预加载图片
```
不使用代理模式预加载图片
```
事件冒泡
```
事件冒泡
<body> <!-- 开始时由最具体的元素接收,然后逐级向上传播到到 DOM 最顶层节点。 --> <div class="father"> <div class="son">son</div> </div> <script> // 常见事件对象的属性和方法 // 阻止冒泡 dom 推荐的标准 stopPropagation() var son = document.querySelector('.son') son.addEventListener( 'click', function (e) { console.log('son') e.stopPropagation() // stop 停止 Propagation 传播 e.cancelBubble = true // 非标准 cancel 取消 bubble 泡泡 }, false ) var father = document.querySelector('.father') father.addEventListener( 'click', function () { console.log('father') }, false ) document.addEventListener('click', function () { console.log('document') }) //只打印出son </script> </body>
总结
我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣学习前端知识