- 博客(11)
- 收藏
- 关注
原创 浏览器输入URL之后发生什么
用户输入URL地址 对URL地址进行DNS域名解析 进行TCP连接 进行HTTP报文的请求与响应 浏览器解析文档资源并渲染页面 DNS域名解析 浏览器根据url,在自身缓存中查找DNS中的解析记录。如果存在,则直接返回IP地址;如果不存在,则查找操作系统中的hosts文件是否有该域名的DNS解析记录,如果有就返回 若上一步没有解析记录,或者已过期,则向域名服务器发起请求解析这个域名。 ...
2020-03-25 10:36:33 95
原创 浏览器事件循环机制Event Loop
概念 Event Loop即事件循环,是指浏览器或者Node的一种解决JavaScript单线程运行时不会阻塞的一种机制,也就是我们经常使用的异步的原理。是指函数在执行栈、宿主环境、任务队列中的循环移动。 栈,计算机科学中,限定仅在表尾进行插入和删除操作的线性表。栈是一种数据结构,遵循后进先出的原则。 队列,只允许在表的前端进行删除操作,在表的后端进行插入操作。(类似生活中排队)遵循先进先出...
2020-03-25 09:59:53 224
原创 webpack六大核心概念
Entry 入口,Webpack执行构建的第一步从entry开始,可抽象成输入。 Module 模块,在webpack中一切皆模块,一个模块对应一个文件。webpack会从入口文件开始递归找出所有依赖的模块。 Chunk 代码块,一个chunk由多个模块组合而成,用于代码合并与分割。 Loader 模块转换器,用于将模块的原内容按照需求转成新内容。 Plugin 插件,使用插件完...
2020-03-25 00:23:14 119
原创 Webpack打包优化
开发环境 1.热模块替换HMR 优化开发环境加载速度。正常情况下,开发环境修改了某一模块代码,运行时,会重新加载所有css资源以及js资源。开启HMR功能之后,在一个源码发生改变时,只重新编译发生变化的模块,再利用新输出的模块替换老模块。 配置方式 devServer:{ contentBase:resolve(__dirname,'build'), compres...
2020-03-25 00:16:33 178
原创 浏览器渲染页面过程解析
浏览器页面解析 浏览器解析生成页面大致可分为五个步骤: HTML代码转成DOM树 CSS代码转成CSSOM (CSS Object Model) 结合DOM树和CSSOM生成 Render树(包含每个节点的视觉信息) 生成布局(layout),将所有渲染树的所有节点进行平面合成 将布局绘制(paint)在屏幕上。 "生成布局"(flow)和"绘制"(paint)这两步,合称为"渲染"(...
2020-03-24 23:16:18 149
原创 Vue强制刷新组件的方式
使用this.$forceUpdate,强制刷新组件。 使用watch监测值的变化,与v-if以及this.$nextTick配合使用。 使用key-changing。vue使用key标记组件身份,当key改变时就是释放原始组件,重新加载新的组件。 ...
2020-03-24 23:03:36 721
原创 IE不兼容某些新特性问题
1.IE盒模型 2.在IE中不支持动态的写table的innerHTML,但是支持div或者span的innerHTML动态读写。 3.rgba不兼容 4.window.event对象 IE具有window.event对象,其余浏览器没有。通过给函数传参解决 5.event.srcElement IE没有event.target属性,只有srcElement。 ...
2020-03-24 22:51:29 113
原创 JS实现继承
ES5实现 方式一:子类原型指向父类实例; 缺点: 1.无法向父类传参 2.想在子类原型上添加方法必须在new Person之后 3.父类原型上所有属性被共享 function Person(name, age) { this.name = name;...
2020-03-22 22:57:55 103
原创 JS实现冒泡排序以及快速排序
冒泡排序:将数组数组相邻两项进行比较,如果前一个比后一个大,则交换他们两个。 function bubbleSort(arr) { for (let i = 0; i < Math.floor(arr.length / 2); i++) { for (let j = 0; j < arr.length - i; j++) { if (arr[j] &g...
2020-03-22 21:18:50 285
原创 JS实现数组去重的四种方式
将数组每一位作为对象属性,输出对象属性名。具体实现如下 function arrUnique(arr) { let obj = {} arr.forEach((item) => { if (obj[item]) { return } else { obj[item] = 1 } }) let uniArr = Obj...
2020-03-22 17:35:08 160
原创 数组方法汇总
添加: 1.push:向数组最后一位添加,改变原数组。 2.unshift:向数组首位开始添加,改变原数组。 3.splice:(index,0,value)从index位置开始,删除0位,添加value值。 当参数为数组时,整个数组作为最后一位或者第一位添加。参数可为多个。 删除: 1.pop:删除数组最后一位。 ...
2020-03-22 17:02:19 165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人