nuxt中静态部署使用asyncData()获取数据有什么优势呢?这个时候应该不存在服务器端渲染了吧?

如题,最近在使用nuxt写一个移动端的网站,需要做seo,初步研究使用了nuxt的静态站点部署功能,nuxt还有一个服务端渲染,官网上说需要有nodejs支持,我比较疑惑的是asyncData()这个方法,官网上是这么说的:

image.png

个人理解是要有一个node的服务器作为支撑,使用这个方法才比较有意义,而静态部署是可以脱离服务器单独运行的,那使用asyncData()来获取数据就没什么意义了,照样可以在mounted或者created等生命周期中获取数据,但是我看到有的静态部署的网站也在asyncData()中获取数据,就有点不是很理解,希望有路过的大佬帮忙解惑,十分感谢!

阅读 4.7k
3 个回答

nuxt 的优势在于可以复用代码,于是你项目里的代码可以不经修改,就既能产生 SPA 的交互效果,还能生成渲染后的静态页面,加速用户使用和体验。为了达成这个效果,它需要运行在 node.js 环境里,当用户请求时,它就能先完成数据获取,渲染出完整的 html。

因为 nuxt 在 node.js 里执行,所以它其实没有浏览器里的各种东西,所以也没法很好的支持那些钩子函数。那么,用 asyncData() 获取数据在 nuxt 里是必要的。至于你说的,生成静态文件然后静态部署,看起来 asyncData() 作用不大,其实是你的场景比较特别。

我之前写过一篇使用 Nuxt.js 发布纯静态网站,感兴趣可以看一下。

仔细看一下nuxt的生命周期就好了,https://nuxtjs.org/docs/conce...
我觉得主要目的就是你可以随意选择要或者不要ssr的部分,都能达到一定的“预制”效果。不然需要ssr了就得把请求移到服务端的周期,不需要了又得移回来。

在你构建静态站点执行命令的时候 可以理解成把项目内所有路由(包括你配置在nuxt.config.js generate 属性内的) 以服务端渲染的方式请求一次并且保存页面.
而asyncData 的作用就是获取一些需要写进静态页结构的信息,或者首屏数据,比如seo信息.其他不需要写进静态页结构里面的都可以通过ajax获取.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题