浅谈JS内存管理和GC算法

theme: fancy highlight: atom-one-light我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿。 写在前面JavaScript在创建变量(数组、字符串、对象等)是自动进行了分配内存,并且在不使用它们的时候会“自动”的释放分配的内容;JavaScript语言不像其他底层语言一样,例如C语言,他们提供了内存管理的接口,比如malloc(...

模拟浏览器限制并发请求数量-如何将大量请求利用补位机制发送

先直接看效果↓↓↓ 废话连篇我们都知道,浏览器在发送请求的时候,有最大并发数量的限制,如果在我们的网页中同时有大量的资源需要加载,那么浏览器不会同时加载这些数据,而是先发出一部分请求,等到有一个请求数据响应完毕的时候,才会发出另一个请求。 这里的最大并发请求数量不是越大或者越小就好,需要找到一个相对的平衡点,因为并发数越少,那么各个请求之间发生阻塞的次数就会增多,导致页面加载过...

揭秘现代浏览器的渲染引擎(三)

theme: devui-blue highlight: xcode揭秘现代浏览器的渲染引擎(三)声明 1: 声明 2: 渲染树结构体1当构造 DOM 树时,浏览器将会构造另一棵树,渲染树。此树的节点是按照显示顺序排列的可视元素。它是文档的可视化表示,此树的目的就是使内容能够按照正确的顺序绘制。 Firefox 称渲染树中的元素为帧(Frame),Webkit 则使用渲染器...

关于chrome拓展开发的实践与思考(四)

前言:目前我们已经在popup.js,background.js,content-script.js中玩转了一番,但我们只是将这三个文件分别进行了实践,真实的开发中,肯定是三份文件共同配合相互协作的,因此,三个文件的相互通信就显得尤为重要。 拓展之间的通信:其实我们在之前的实践中可以了解到,popup.js与background.js都是在拓展的上下文中执行的,因此其实我们可以...

关于chrome拓展开发的实践与思考(二)

前言:上文中,我们已经基于最小的功能实现了chrome拓展插件。接下来我们再为这个插件添加点更复杂的功能。 实践:如图,我们想实现该功能,放置一个button,点击后数字0开始自动加一 html文件: <!DOCTYPE html><html>​<head> <meta charset="UTF-8"> <meta n...

关于chrome拓展开发的实践与思考(一)

chrome拓展文档参考: https://developer.chrome.com/docs/extensions/mv3/http://www.kkh86.com/it/chrome-extension-doc/extensions/api_index.htmlhttp://blog.haoji.me/chrome-plugin-develop.html#xie-zai-q...

chrome 插件开发指南

丰富的 chrome 插件极大的提升我们的工作效率和辛福感,比如大名鼎鼎的 adblock 广告屏蔽、GoFullPage 网页长截图、evernote web clipper 收藏网页。 一般来说,插件的原理是向页面中注入 javascript 脚本,对页面进行处理,比如屏蔽页面中可能的广告元素,改变某些元素的样式,增加一些 UI。 开发插件需要使用前端技术:html css...

FlutterWeb浏览器刷新后无法回退的解决方案

theme: smartblue highlight: arduino-light 二、原因当浏览器刷新时,Flutter引擎会重新启动,并加载当前页面,也就是说,刷新后的Flutter内存中所有静态变量都被初始化,页面栈内之前的页面记录都未保留,只有当前的页面。就像是浏览网页时,把其中一页的网址拷出来,在新的标签页再次打开。 三、解决方案1. 思路知道什么原因引起的,就针对性...