前言
在做活动页的时候,第一页需要整屏显示,使用了 100vh
来作为第一页的高度,但在 ios safari 中效果却不是我所期望的那样。遂写篇博文来记录下问题的产生和解决及原因。
使用 nuxt.js 做项目也接近快一年了,从立项到内测、公测、再到正式上线,还有后面的不断维护,也陆陆续续的踩了很多坑,其中最大的问题就是 node 的渲染性能问题了。模板转换是 cpu 密集型的操作,node 又是单线程的,并发一高,cpu 就会飙到 100% 。为了提升 nuxt.js 的渲染性能,也陆陆续续的查找了很多资料,发现网上针对 nuxt.js 的性能优化的文章比较少,比较杂。所以我写下这篇文章记录下自己对 nuxt.js 做性能优化的时候采取的一些方法,算是篇总结吧,也希望能给从谷歌搜到这的朋友一些帮助。本文着重于性能优化,对概念类的东西会一概而过。
今天下班,日常在公交车上用手机浏览技术社区,刷文章。偶然看到一篇文章,其中一部分内容如下图:
其大意是在 created 这个生命周期请求异步数据的话,请求过多,页面会长时间处于白屏。看到这我就不淡定了,请求不是异步的?怎么会影响到渲染呢?EventLoop 白学了?之后我将这张截图发给朋友讨论了一波,发现还是有挺多人搞不清楚其中的关键,都说在 mounted 阶段请求数据会比较好,在 created 请求可能会找不到需要渲染的元素之类的。于是就有了这篇文章的诞生。
Vue实例从创建开始到结束销毁的一系列过程,在这个过程中会有特定阶段的钩子函数,这些钩子函数会在 Vue 的各个状态中执行。
总体上分为 8 个阶段:创建前/创建后;挂载前/挂载后;更新前/更新后;销毁前/销毁后。
ES6 都出来三年了,在 ES6 中将 Promise 正式列为标准,这也就意味着 JavaScript 的异步编程又有一种新的写法,且这种写法更加的优雅,更易于维护。毕竟,Node.js 中大部分都是异步的。我写这篇文章主要对 Promise 对象进行系统的叙述讨论,并以此展开 JavaScriot 的运行机制。从而提高自己的知识水平,毕竟,人总是在积累、总结中成长的。
之前写 Ajax 交互,都是使用已经封装好的库,今天就来聊聊原生的 Ajax。 Ajax 就是 Asynchronous JavaScript + XML 的简写,这一技术能向服务器请求额外的数据而无需重载页面。也就是用户无需刷新页面,便能从服务器获取数据的更新,这样能使用户得到更好的体验。比如有时候,会有这样的一个需求:只想要改变页面的某个区域。而以前的技术只能通过刷新页面来实现,向服务器重新请求页面,这样会增加多余的一些请求,从而影响性能。而 Ajax 则是为了解决这一问题诞生的,是网页无需刷新页面,使用 JavaScript 与服务器进行交互的一种技术。
由于 JavaScript 并不是那些“传统意义上”的面向对象的语言, 它在 ES5 中并没有类的概念, 没有真正意义上的继承, 但我们去可以进行模拟, 来实现所谓的继承。
在 JavaScript 中, 实现继承的过程中总感觉很有趣, 至少在 ES5 中是这样的, ES5 中自己亲自要通过原型链去实现继承, 而在 ES6 中则将这些需要自己写的封装成了一个接口, 其本质上还是一样, 都是通过原型链实现继承。
Update your browser to view this website correctly. Update my browser now