Nuxt.js的了解与安装
一、服务端渲染和客户端渲染
1、什么是服务端渲染
服务端渲染又称 SSR (Server Side Render),是在服务端完成页面的内容渲染,而不是在客户端完成页面内容的渲染。
SSR 并不是前端特有的技术,我们学习过的 JSP 技术和 Thymeleaf 技术就是典型的 SSR
服务端渲染的特点:
- 在服务端生成html 网页的 dom 元素
- 客户端(浏览器)只负责显示dom 元素内容
2、什么是客户端渲染
客户端(浏览器) 使用 AJAX 向服务端发起 http 请求,获取到了想要的数据,开始渲染 html 网页,生成 dom 元素,并最终将网页内容展示给用户。
客户端渲染的特点:
- 在服务端只是给客户端响应的了数据,而不是 html 网页
- 客户端(浏览器)负责获取服务端的数据生成dom元素
3、两种方式优缺点
客户端渲染:
- 缺点:不利于网站进行 SEO,因为网站大量使用 javascript 技术,不利于搜索引擎抓取网页。
- 优点:客户端负责渲染,用户体验性好,服务端只提供数据不用关心用户界面的内容,有利于提高服务端的开发效率。
- 适用场景:对 SEO 没有要求的系统,比如后台管理类的系统,如电商后台管理,用户管理等。
服务端渲染:
- 优点:有利于 SEO,网站通过 href 的 url 将搜索引擎直接引到服务端,服务端提供优质的网页内容给搜索引擎。同时,使用服务器端渲染,我们可以获得更快的内容到达时间(time-to-content),无需等待所有的 JavaScript 都完成下载并执行,
- 缺点:服务端完成一部分客户端的工作,通常完成一个需求需要修改客户端和服务端的代码,开发效率低,不利于系统的稳定性。
- 适用场景:对 SEO 有要求的系统,比如:门户首页、商品详情页面等。
二、Nuxt.js
1、Nuxt.js 介绍
移动互联网的兴起促进了 web 前后端分离开发模式的发展,服务端只专注业务,前端只专注用户体验,比如流行的 vue.js 实现了功能强大的前端渲染。 但是,对于有 SEO 需求的网页如果使用前端渲染技术去开发就不利于 SEO 了,有没有一种即使用 vue.js 的前端技术也实现服务端渲染的技术呢?
Nuxt.js 是一个基于 Vue.js 的轻量级应用框架,可以用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用,具有优雅的代码结构分层和热加载等特性。
总结:
- 服务器端渲染
- 静态站点引擎
2、Nuxt.js 服务器端渲染
下图展示了从客户端请求到 Nuxt.js 进行服务端渲染的整体的工作流程:
- 用户打开浏览器,输入网址请求到 Node.js 中的前端 View 组件
- 部署在 Node.js 的应用 Nuxt.js 接收浏览器请求,并请求服务端获取数据
- Nuxt.js 获取到数据后进行服务端渲染
- Nuxt.js 将 html 网页响应给浏览器
3、Nuxt.js 环境初始化
Github:https://github.com/nuxt/create-nuxt-app
1 | npm init nuxt-app <my-project> |
比如:npm init nuxt-app Nuxt-app
注意:如果没有安装 Yarn,初始化的过程中 Package manager 选择: Npm(手动输入箭头到 Npm,删除 Yarn 左边的箭头)
测试运行:npm run dev
4、NUXT 目录结构
① 资源目录 assets
用于组织未编译的静态资源如 LESS、SASS 或 JavaScript。
② 组件目录 components
用于组织应用的 Vue.js 组件。Nuxt.js 不会扩展增强该目录下 Vue.js 组件,即这些组件不会像页面组件那样有 asyncData 方法的特性。
③ 布局目录 layouts
用于组织应用的布局组件。
④ 页面目录 pages
用于组织应用的路由及视图。Nuxt.js 框架读取该目录下所有的 .vue 文件并自动生成对应的路由配置。
⑤ 插件目录 plugins
用于组织那些需要在 根 vue.js 应用 实例化之前需要运行的 Javascript 插件。
⑥nuxt.config.js 文件
nuxt.config.js 文件用于组织 Nuxt.js 应用的个性化配置,以便覆盖默认配置。