浏览器中 GUI 渲染线程和 JavaScript 引擎线程是互斥的,JavaScript 在执行过程中会阻塞 UI 渲染。即使脚本执行时间过长,页面也会长时间无响应,然后崩溃。正是这种 GUI 渲染线程和 JavaScript 引擎线程之间互斥、阻塞的线程管理,让一些前端开发者认为浏览器是单线程的。
小程序双线程模型
逻辑层和渲染层拆分,每个 page 页面使用一个 webview 线程,逻辑层的 JsCore 是共享的。
2019 年 10 月 5 日 Vue3.0 pre-alpha 版本正式发布,之后数个月历经 500 多个 PR,1000 多个 commit,终于在 2020 年 1 月 4 日正式发布了 Vue3.0 alpha.1 版本。Vue3.0 的核心代码基本完成,截止目前为止剩下的主要工作就是服务端渲染,Vue 团队也正在积极进行中。
响应式 API 的代码也基本稳定,不会再发生太大的变化(packages 里的 reactivity 包),下面我将从源码分析 Vue3.0 的响应式原理。
前些时候在团队里接入了前端测试,并总结了相关经验将文章发表到了内网博客上。临近年末了,也把文章发布到个人博客上,希望能让更多的人看到。
2019 年前端测试依然是一个炙手可热的话题。笔者在今年 5 月份参加 Vueconf 的时候,Vue 单元测试的主题演讲者曾向现场的参与者发出提问,有多少团队引入了单元测试,意外的是只有寥寥数人举起了手。尽管,那个时候笔者的团队也还没有引入前端测试,但是考虑到测试的必要性,且团队正在着手一个新项目,所以回去之后在这个新项目全量地接入了前端测试。
现如今大部分互联网团队都是走 敏捷开发 的节奏。实际上,自动化测试才是实现“敏捷”的基本保障。业务端的快速上线和快速验证对技术侧的响应力提出了更高的要求:更快上线,持续上线。再考虑到人员流动和应用逐步变大的事实,日后迭代的成本只会变得越来越高。当然这个项目迭代的成本也跟项目的复杂度有关,比如笔者所在的点餐业务,项目有足够的复杂性,有些细微的改动点其实会牵扯到很多内容,而对刚加入团队的新人就会显得不太友好。因此,项目拥有前端测试是必不可少的,它能够有效保障业务迭代的质量和稳定性。
最近把电脑上的 Node 版本升级到了 10.16.3 的稳定版本,但是后面在项目开发的时候,发现有些项目重装依赖后打包失败,最后发现是因为 Node 版本的问题。但我又不想降级到 Node8.0,这时候怎么办?
我们就需要借助于 nvm 这个 Node 版本管理工具了,同时我还会介绍下 nrm 和 yrm 这两个管理源的工具。
最近在使用 TypeScript 的时候,发现所有 npm 包上的类型定义都在 DefinitelyTyped 这里。看了下它的 README,感觉写的有点晦涩,又发现已经有韩语,西班牙语和俄罗斯语的 README。所有,我打算给开源社区一点帮助,就译了这篇 README,并提了 PR,目前已经被仓库合并。