js
约 2316 字大约 8 分钟
2024-04-06
JS
浏览器线程、进程
从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
浏览器是多进程的,打开一个Tab页,相当于创建了一个独立的浏览器进程(浏览器有自己的优化机制,所以每一个Tab标签对应一个进程并不一定是绝对的)。浏览器进程包括:
- Browser进程
- 负责页面显示、用户交互(前进后退等)
- 负责页面管理、创建和销毁其他进程
- 资源管理、下载
- 将Renderer进程得到的Bitmap渲染到用户界面上
- 第三方插件进程
- 每种类型插件对应一个进程,仅当使用该插件时才创建
- GPU进程
- 最多一个,用于3D绘制
- 浏览器渲染进程
- 默认每个Tab页面一个进程,互不影响,主要用于页面渲染、脚本执行、事件处理等
浏览器多进程的优势:
- 避免单个页面崩溃影响整个浏览器
- 避免第三方插件崩溃影响整个浏览器
- 多进程充分利用
- 方便使用沙盒模型隔离插件等进程,提高浏览器稳定性
web-worker原理、使用场景
JavaScript 工作原理之七-Web Workers 分类及 5 个使用场景service-worker原理、使用场景
Service Worker学习与实践(一)——离线缓存
JavaScript 工作原理之八-Service Workers,生命周期及其使用场景事件循环、宏任务、微任务
阮一峰 JavaScript 运行机制详解:再谈Event Loop
JS执行机制URL之后都发生了什么?(页面渲染原理 / 浏览器工作原理)
从浏览器地址栏输入url到显示页面的步骤
从输入URL到页面展示,你想知道些什么?为什么JS要设计成单线程模式
为什么javascript是单线程
- Browser进程
DNS
DNS解析过程
DNS原理及其解析过程DNS有没有缓存?获取流程是什么?
一次dns缓存引发的惨案
CDN(Content Delivery Network / 内容分发网络)部署过程
- 为何要使用CDN,会有何隐患
Http1、Http2、Https、Websocket
网络协议Websocket会有信息丢失的情况吗?为什么?
廖雪峰WebSocket
websocket中发生数据丢失_什么是WebSocket,它与HTTP有何不同?
理解WebSocket心跳及重连机制(五)Https安全吗?
用了HTTPS就安全了吗?HTTPS 会被抓包吗?TCP-IP滑动窗口
TCP-IP详解:滑动窗口(Sliding Window)
30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制网络状态码及使用场景
HTTP状态码大全浏览器缓存
浏览器缓存
彻底理解浏览器的缓存机制
JS数据类型
- 如何判断数据类型
- typeof null 返回什么?为什么?
- null和undefined的区别?
- 如何判断数据类型
跨域问题,解决跨域
跨域及解决方案ES6新增
es6 es7 ES.next知道的特性
ES6的class和构造函数有何区别?
ES6 的 class 和构造函数的区别Class类
Class类- class中的constructor和super
理解 es6 class 中 constructor 方法 和 super 的作用
- class中的constructor和super
symbol用来干什么?怎么用?最重要的两个作⽤?
「每日一题」JS 中的 Symbol 是什么
理解和使用ES6中的SymbolReflect
es6 Reflect对象详解set和map
Map和Set
什么是面向对象(OOP),面向对象的三大特点?OOP与函数编程的差异和区别
OOP面向对象三大特点
函数式编程与面向对象编程的比较JS设计模式
JavaScript中常见的十五种设计模式promise使用及实现
- promise.then(fn1, fn2) 与 promise.then(fn1).catch(fn2) 的区别
- Promise.resolve ⼀定返回 Fullfill 状态嘛?
图解 Promise 实现原理(一)—— 基础实现
图解 Promise 实现原理(二)—— Promise 链式调用
图解 Promise 实现原理(三)—— Promise 原型方法实现
图解 Promise 实现原理(四)—— Promise 静态方法实现什么是组件化、模块化
组件化和模块化有什么区别?
聊聊工程级别的组件化、插件化 以及 模块化this问题(ES5this 和 ES6this)
ES5和ES6的this
this问题总结
40道this面试题generator函数
Generator 函数的含义与用法闭包
闭包onclick 和 addEventListener有什么区别?
onclick和addEventListener的区别事件捕获、冒泡
事件相关cookie、localStorage、sessionStorage、session
cookie、localStorage、sessionStorage、sessionsamesite?
Cookie 的 SameSite 属性ajax如何携带cookie?
withCredentials:true
CommonJS 和 ESM等规范
深入学习CommonJS和ES6模块化规范CommonJS:
- 同步加载整个模块,运行时加载,加载完成后才能用,适用于Node
- 每一个js文件都代表一个模块
- 使用module.exports导出,require引入
- module.exports导出的如果是基本数据类型则是对直接赋值一份数据给引用方,如果是复杂数据类型则是浅拷贝数据给引用方
- require动态加载,具有缓存特性,如果一个文件里边多次引用,那后边的都是拿取前边的缓存
- 默认非严格模式
- this指当前模块
ESM (ES6 Module):
- 编译时输出接口,可以单独加载其中某个方法
- 一个js文件代表一个模块
- 使用export导出,import导入,但是导入导出的变量名必须一致
- 导出的是值的引用
- import 具有提升效果,在import之前调用也可以
- 后续处了export default语法糖,不用每次去对应变量名了
- 默认严格模式
- this是undefined
发布订阅模式和观察者模式
观察者模式与订阅发布模式的区别
观察者模式和发布订阅模式有什么不同?静态资源缓存策略有哪些?前端如何做缓存?缓存有哪几种?
Web静态资源缓存及优化- PWA原理,解决了什么问题?体验有何不同?
现代化 Web 开发实践之 PWA
答:manifest.json文件做图标、弹窗等缓存处理
service worker离线存储,包含下载、安装、激活等一系列生命周期
Push API做消息推送
- PWA原理,解决了什么问题?体验有何不同?
Array.prototype.sort 内部使用的是什么排序算法
JS-数组sort方法用的是哪种排序算法post和get请求的区别
都 2019 年了,还问 GET 和 POST 的区别async/await原理
async/await 原理及执行顺序分析如何排查前端JS内存泄漏
javascript典型内存泄漏及chrome的排查方法0.1 + 0.2 = 0.3 的问题,出现的原因是什么,如何解决。
为什么 0.1 + 0.2 !== 0.3?如何解决这个问题?JS 数字可表⽰的最⼤值是多少,⼤数问题如何处理?
js中的最大数单页应用(SPA)的优缺点?如何实现页面切换?页面切换时会每次都请求新的数据吗?
彻底理解单页面应用和多页面for-in,for-of,forEach的区别
for、forEach、for...of、for...in 的区别与比较
for...of、for...in、forEach、map 的区别?什么是堆栈溢出?如何解决?
Javascript中递归造成的堆栈溢出及解决方案
vue项目中出现堆栈溢出