nuxt.js框架踩坑指南

nuxt.js框架踩坑指南Nuxt 官方文档简单来说 Nuxt 就是基于 Vue 的一个应用框架 采用服务端渲染 让你的 SPA 应用 Vue 也可以拥有 SEO 生命周期众所周知 Vue 的生命周期全都跑在客户端 浏览器 而 Nuxt 的生命周期有些在服务端 Node 客户端 甚至

大家好,欢迎来到IT知识分享网。

Nuxt

官方文档

简单来说,Nuxt就是基于Vue的一个应用框架,采用服务端渲染,让你的SPA应用(Vue)也可以拥有SEO

生命周期

众所周知,Vue的生命周期全都跑在客户端(浏览器),而Nuxt的生命周期有些在服务端(Node),客户端,甚至两边都在:

nuxt.js框架踩坑指南

生命周期流程图,红框内的是Nuxt的生命周期(运行在服务端),黄框内同时运行在服务端&&客户端上,绿框内则运行在客户端

遇到的问题

一、从上面的生命周期可以看出来created会在服务端和客户端执行,因为服务端是没有window、localStorage、sessionStorage、cookie,所以created如果要使用这些对象的话需要先判断在客户端环境下再执行。

二、在created里执行代码又会衍生出另一个问题,如果在created里写了只在客户端执行的代码,这部分代码的效果修改了dom树的话会报错:服务端和客户端dom树不一致。这种情况把代码写到mounted下面就行。

三、nuxt项目是自带vuex的,直接写到store文件夹下就行。但是每次刷新的时候state中的值又会设成默认的,所以就用到了nuxtServerInit,每次设置state的时候把值也存到cookie中,在nuxtServerInit下再把cookie中的值赋给state,这样就可以正常使用store了。

四、可以通过中间件来判断用户是否登录,没登录跳转到登录页

nuxt.js框架踩坑指南

五、asyncData函数优化

该函数中请求api接口数超过1个,多的甚至达到10,20多个,这种情况我们不能使用async await,请求完一个再接着请求下一个(同步请求接口);如果有10个接口需要请求,每个接口平均响应1s,那么至少需要10s才会响应html页面;如果使用Promise.all异步请求10个接口,那么最快接近1s响应html页面; asyncData函数会在服务端执行代码,因此一定要做好容错处理;另外如果该函数代码一直未执行完,那么页面首次响应将会被挂起,一直处于加载中 对于页面首次加载,该函数执行耗时越短,页面响应时间就越短(页面加载越快)

nuxt.js框架踩坑指南

此外在asyncData中顺序执行的接口除了用await同步请求以外,还可以用下面这种写法

nuxt.js框架踩坑指南

六、sessionStorage和localStorage的区别

由于cookie存储机制有很多缺点,HTML5不再使用它,转而使用改良后的Web Storage存储机制。Web Storage具体又分两种:

1.sessionStorage:将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。

2.localStorage:将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

这两者的区别在于,sessionStorage为临时保存,而localStorage为永久保存。

七、借助 head 属性,Nuxt.js 让你可以在 nuxt.config.js 中配置应用的 meta 信息。

nuxt.js框架踩坑指南

之后只需要在每个页面配置独有的title属性就行了,title会替换模板中的”%s”

nuxt.js框架踩坑指南

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/175680.html

(0)
上一篇 2025-04-08 11:33
下一篇 2025-04-08 11:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信