文章分类 -  极客时间

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 45 下一页
摘要:在上一篇文章中,我们通过开发者工具中的网络面板,介绍了网络请求过程的几种性能指标以及对页面加载的影响。 而在渲染流水线中,后面的步骤都直接或者间接地依赖于DOM结构,所以本文我们就继续沿着网络数据流路径来介绍DOM树是怎么生成的。然后再基于DOM树的解析流程介绍两块内容:第一个是在解析过程中遇到Ja 阅读全文
posted @ 2023-01-11 14:34 易先讯 阅读(4) 评论(0) 推荐(0)
摘要:“浏览器中的页面循环系统”模块我们已经介绍完了,循环系统是页面的基础,理解了循环系统能让我们从本质上更好地理解页面的工作方式,加深我们对一些前端概念的理解。 接下来我们就要进入新的模块了,也就是“浏览器中的页面”模块,正如专栏简介中所言,页面是浏览器的核心,浏览器中的所有功能点都是服务于页面的,而C 阅读全文
posted @ 2023-01-11 14:34 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:在上篇文章中,我们介绍了怎么使用Promise来实现回调操作,使用Promise能很好地解决回调地狱的问题,但是这种方式充满了Promise的then()方法,如果处理流程比较复杂的话,那么整段代码将充斥着then,语义化不明显,代码不能很好地表示执行流程。 比如下面这样一个实际的使用场景:我先请求 阅读全文
posted @ 2023-01-11 14:34 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:在上一篇文章中我们聊到了微任务是如何工作的,并介绍了MutationObserver是如何利用微任务来权衡性能和效率的。今天我们就接着来聊聊微任务的另外一个应用Promise,DOM/BOM API中新加入的API大多数都是建立在Promise上的,而且新的前端框架也使用了大量的Promise。可以 阅读全文
posted @ 2023-01-11 14:33 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:在前面几篇文章中,我们介绍了消息队列,并结合消息队列介绍了两种典型的WebAPI——setTimeout和XMLHttpRequest,通过这两个WebAPI我们搞清楚了浏览器的消息循环系统是怎么工作的。不过随着浏览器的应用领域越来越广泛,消息队列中这种粗时间颗粒度的任务已经不能胜任部分领域的需求, 阅读全文
posted @ 2023-01-11 14:33 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的,那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript,我们就可以操作DOM树中任意一个节点,例如隐藏/显示节点、改变颜色、获得或改变文本内容、为元素添 阅读全文
posted @ 2023-01-11 14:33 易先讯 阅读(4) 评论(0) 推荐(0)
摘要:在上一篇文章中我们介绍了页面中的事件和消息队列,知道了浏览器页面是由消息队列和事件循环系统来驱动的。 那在接下来的两篇文章中,我会通过setTimeout和XMLHttpRequest这两个WebAPI来介绍事件循环的应用。这两个WebAPI是两种不同类型的应用,比较典型,并且在JavaScript 阅读全文
posted @ 2023-01-11 14:32 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:前面我们讲到了每个渲染进程都有一个主线程,并且主线程非常繁忙,既要处理DOM,又要计算样式,还要处理布局,同时还需要处理JavaScript任务以及各种输入事件。要让这么多不同类型的任务在主线程中有条不紊地执行,这就需要一个系统来统筹调度这些任务,这个统筹调度系统就是我们今天要讲的消息队列和事件循环 阅读全文
posted @ 2023-01-11 14:32 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:前面我们已经花了很多篇幅来介绍JavaScript是如何工作的,了解这些内容能帮助你从底层理解JavaScript的工作机制,从而能帮助你更好地理解和应用JavaScript。 今天这篇文章我们就继续“向下”分析,站在JavaScript引擎V8的视角,来分析JavaScript代码是如何被执行的。 阅读全文
posted @ 2023-01-11 14:32 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:在上一篇文章中,我们提到了JavaScript中的数据是如何存储的,并通过例子分析了原始数据类型是存储在栈空间中的,引用类型的数据是存储在堆空间中的。通过这种分配方式,我们解决了数据的内存分配的问题。 不过有些数据被使用之后,可能就不再需要了,我们把这种数据称为垃圾数据。如果这些垃圾数据一直保存在内 阅读全文
posted @ 2023-01-11 14:31 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:对于前端开发者来说,JavaScript的内存机制是一个不被经常提及的概念 ,因此很容易被忽视。特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道JavaScript的内存机制是什么。 但是如果你想成为行业专家,并打造高性能前端应用,那么你就必须要搞清楚Java 阅读全文
posted @ 2023-01-11 14:31 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:在上篇文章中,我们讲了词法作用域、作用域链以及闭包,并在最后思考题中留了下面这样一段代码: var bar = { myName:"time.geekbang.com", printName: function () { console.log(myName) } } function foo() 阅读全文
posted @ 2023-01-11 14:31 易先讯 阅读(2) 评论(0) 推荐(0)
摘要:在上一篇文章中我们讲到了什么是作用域,以及ES6是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念。 理解作用域链是理解闭包的基础,而闭包在JavaScript中几乎无处不在,同时作用域和作用域链还是所有编 阅读全文
posted @ 2023-01-11 14:30 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:在前面《07 | 变量提升:JavaScript代码是按顺序执行的吗?》这篇文章中,我们已经讲解了JavaScript中变量提升的相关内容,正是由于JavaScript存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是JavaScript的一个重要设计缺陷。 虽然ECMAScript6(以 阅读全文
posted @ 2023-01-11 14:30 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript引擎先会对其进行编译,并创建执行上下文。但是并没有明确说明到底什么样的代码才算符合规范。 那么接下来我们就来明确下,哪些情况下代码才算是“一段”代码,才会在执行之前就进行编译并创建执行上下文。一般说来,有这么三种情况: 当JavaSc 阅读全文
posted @ 2023-01-11 14:30 易先讯 阅读(4) 评论(0) 推荐(0)
摘要:讲解完宏观视角下的浏览器后,从这篇文章开始,我们就进入下一个新的模块了,这里我会对JavaScript执行原理做深入介绍。 今天在该模块的第一篇文章,我们主要讲解执行上下文相关的内容。那为什么先讲执行上下文呢?它这么重要吗?可以这么说,只有理解了JavaScrip的执行上下文,你才能更好地理解Jav 阅读全文
posted @ 2023-01-11 14:29 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:在上篇文章中,我们介绍了渲染流水线中的DOM生成、样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段。 这里还是先简单回顾下上节前三个阶段的主要内容:在HTML页面内容被提交给渲染引擎之后,渲染引擎首先将HTML解析为浏览器可以理解的DOM;然后根据CSS样式表,计算出DOM树所有节点的 阅读全文
posted @ 2023-01-11 14:29 易先讯 阅读(2) 评论(0) 推荐(0)
摘要:在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段。这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如能熟练使用开发者工具,因为能够理解开发者工具里面大部分项目的含义,能优化页面卡顿问题,使用JavaScri 阅读全文
posted @ 2023-01-11 14:29 易先讯 阅读(6) 评论(0) 推荐(0)
摘要:“在浏览器里,从输入URL到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络、操作系统、Web等一系列的知识。所以我在面试应聘者时也必问这道题,但遗憾的是大多数人只能回答其中部分零散的知识点,并不能将这些知识点串联成线,无法系统而又全面地回 阅读全文
posted @ 2023-01-11 14:28 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:在上一篇文章中我介绍了TCP协议是如何保证数据完整传输的,相信你还记得,一个TCP连接过程包括了建立连接、传输数据和断开连接三个阶段。 而HTTP协议,正是建立在TCP连接基础之上的。HTTP是一种允许浏览器向服务器获取资源的协议,是Web的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如H 阅读全文
posted @ 2023-01-11 14:28 易先讯 阅读(15) 评论(0) 推荐(0)

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 45 下一页