V8是如何实现async/await的? 发表于 2022-04-15 更新于 2023-01-30 分类于 V8 前言JavaScript 是基于单线程设计的,造成了 JavaScript 中出现大量回调的场景。当 JavaScript 中有大量的异步操作时,会降低代码的可读性, 其中最容易造成的就是回调地狱的问题。 JavaScript 社区探索并推出了一系列的方案,从“Promise 加 then”到“generator 加 co”方案,再到最近推出“终极”的 async/await 方案,完美地解决了回调地狱所造成的问题。 阅读全文 »
V8是如何实现微任务的? 发表于 2022-04-13 更新于 2023-01-30 分类于 V8 前言上节介绍了通用的 UI 线程架构,每个 UI 线程都拥有一个消息队列,所有的待执行的事件都会被添加进消息队列中,UI 线程会按照一定规则,循环地取出消息队列中的事件,并执行事件。而 JavaScript 最初也是运行在 UI 线程中的。换句话说,JavaScript 语言就是基于这套通用的 UI 线程架构而设计的。 基于这套基础UI线程框架, JavaScript又延伸出很多新的技术,其中应用最广泛的当属于宏任务和微任务。 阅读全文 »
消息队列:V8是怎么实现回调函数的? 发表于 2022-04-11 更新于 2023-01-30 分类于 V8 什么是回调函数?回调函数具有函数的所有特征,它可以有参数和返回值。回调函数区别于普通函数,在于调用方式。只有当某个函数被作为参数,传递给另一个函数或者宿主环境,然后该函数在函数内部或者在宿主环境中被调用,我们才称为回调函数。回调函数有两种不同的形式:同步回调和异步回调。通常,我们需要将回调函数传递给另外一个执行函数,那么同步回调和异步回调的最大区别在于同步回调函数是在执行函数内部被执行的,而异步回调函数是在执行函数外部被执行的 阅读全文 »
webpack学习记录-2 发表于 2021-10-15 更新于 2023-01-30 分类于 FE , webpack devServer配置 DevServer: 用来自动化编译、打开浏览器,刷新浏览器,只会在内存中编译打包,不会有文件输出。 阅读全文 »
webpack学习记录(1) 发表于 2021-09-08 更新于 2023-01-30 分类于 FE , webpack webpack是什么? webpack 是一个用于现代JavaScript应用程序的静态打包工具。当webpack处理应用程序的时,会在内部从一个或多个入口点构建一个依赖图,然后将项目中所需要的每一个模块组合成一个或者多个bundles,他们均作为静态资源,用于展示内容。 阅读全文 »