前言
变得浮躁了,很久没有写过一篇完整的博客了,在此写篇博客整理下主流浏览器的渲染流程,虽然这篇文章在很早之前就想写,但那时终究未下笔。浏览器作为 web 应用的主要载体,与前端开发者息息相关,而其中最关键的就是渲染引擎,了解浏览器的渲染原理,有助于我们从更高的维度去审视页面,出现问题时也可以让我们在一定程度上透过事物看本质。
使用 nuxt.js 做项目也接近快一年了,从立项到内测、公测、再到正式上线,还有后面的不断维护,也陆陆续续的踩了很多坑,其中最大的问题就是 node 的渲染性能问题了。模板转换是 cpu 密集型的操作,node 又是单线程的,并发一高,cpu 就会飙到 100% 。为了提升 nuxt.js 的渲染性能,也陆陆续续的查找了很多资料,发现网上针对 nuxt.js 的性能优化的文章比较少,比较杂。所以我写下这篇文章记录下自己对 nuxt.js 做性能优化的时候采取的一些方法,算是篇总结吧,也希望能给从谷歌搜到这的朋友一些帮助。本文着重于性能优化,对概念类的东西会一概而过。
今天下班,日常在公交车上用手机浏览技术社区,刷文章。偶然看到一篇文章,其中一部分内容如下图:
其大意是在 created 这个生命周期请求异步数据的话,请求过多,页面会长时间处于白屏。看到这我就不淡定了,请求不是异步的?怎么会影响到渲染呢?EventLoop 白学了?之后我将这张截图发给朋友讨论了一波,发现还是有挺多人搞不清楚其中的关键,都说在 mounted 阶段请求数据会比较好,在 created 请求可能会找不到需要渲染的元素之类的。于是就有了这篇文章的诞生。
自己的电脑太渣了,刚上大学的时候买的,期间不断升级配件坚挺到现在。自大四上学期后就一直是双系统 win10 + deepin。平时娱乐和基友玩游戏就换回 win10,工作和学习都是在 deepin 上进行的。但由于电脑实在是太渣,而 vscode 和 chrome 又是吃内存大户,升级的 8G 内存实在是不够用,多开几个 vscode 和 chrome 再启动几个 node 服务 时间一久,就会报爆存,而 deepin 的内存管理又实在是差劲,一爆内存就彻底卡死。这个状况直到开启了 swap 文件后,就好了很多,系统再也不会爆内存卡死了,但非固态硬盘不推荐开启 linux 交换文件。
最近在帮校友写一个项目,欣音悦(以歌单歌单分享为主的音乐 webapp)。这是一个类似于 QQ 音乐的 webapp 目前还在开发中,其中歌曲数据和歌手数据来自于 QQ 音乐的接口,而歌单数据则存在本地数据库中。校友的需求是用户能添加歌单并分享,能听歌,能评论。所以就涉及用户登录状态保持,而我也是首次尝试使用后 token 方案进行登录处理,所以就写这篇博文记录下。
Update your browser to view this website correctly. Update my browser now