nuxt——服务端渲染可选方案

团队在最近的一次开发中前端技术栈从html + css + jquery转向vue全家桶。后端从php + Blade + jquery转向vue全家桶。

在转向前后端分离的开发模式中遇到了一些问题。

  • 首屏加载缓慢
  • seo问题
  • 前后端分离中的异步请求数量过多等问题

为了解决上面的尤其是第二个问题。团队决定使用服务端渲染。

服务端渲染

服务端渲染可以很好的解决打包文件过大导致的首次加载白屏问题,并且页面打开速度相比于js渲染界面快很多。

就像过去用php的模板引擎渲染html界面也是一种服务端渲染方式,但并不适用于大JavaScript时代了。

我最早看到服务端渲染是在淘宝博客的前后端分离的思考与实践中,他们提出了一个中途岛的概念。

其实回头想想,在我们把渲染的工作从 服务端抽出来到 浏览器端(JS)的时候,我们的目的只是明确的前后端职责划分,并不是非浏览器渲染不可。
只是因为在传统的开发模式中,出了服务器就到了浏览器,所以前端的工作内容只能被限制在浏览器端。
也因此很多人认定了 后端 = 服务端 前端 = 浏览器端
——前后端分离的思考与实践

中途岛的概念

原文链接 前后端分离的思考与实践(二)


前后端分离是架构上的分离,并不是人员上的分离,php程序员写写现代js对自身的成长也是有很大帮助的。

其实我想说的是php并不是不可替代的?,node.js什么嗒也是可以很好的完成web开发的

由于使用了vue全家桶,且对node.js也不是很熟悉,所以选择了nuxt.js服务端渲染框架 (主要还是用起来简单,学起来快)

nuxt

nuxt中文文档 https://zh.nuxtjs.org/guide

在使用nuxt的过程中,我们对一个界面的请求方式有两种。

  • 从浏览器地址栏键入
  • 通过类似 router-link的a标签点击跳转

当我们从浏览器的地址栏中键入一条请求时,请求被交给了nuxt服务器(或者nginx→nuxt)。
nuxt服务器解析vue组件(中的asyncData方法),并将数据绑定到html。然后再返回给浏览器。

当我们通过点击router-link跳转时整个应用依旧是无刷新的单页应用。且会在window.history中键入记录。

因此对于任意一个vue组件其被访问的情况分为两种,浏览器端渲染和nuxt服务器端渲染。

了解nuxt最快的方式就是了解nuxt的生命周期,了解nuxt生命周期最快的方式自然是conlose.log()了。
并不具体的细节请参考手册。

后记

nuxt项目还比较年轻,所以存在一些莫名奇妙的bug(更多的bug主要是对js不熟悉所致)。
但是vue官方推荐,且有着强大的社区支撑,所以还是有着不错的维护效率。


博客地址 nuxt——服务端渲染可选方案

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!