服务端渲染技术NUXT
服务端渲染技术NUXT
什么是服务端渲染
服务端渲染又称SSR (Server Side Render)是在服务端完成页面的内容,而不是在客户端通过AJAX获取数据。
服务器端渲染(SSR)的优势主要在于:更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。
如果你的应用程序初始展示 loading 菊花图,然后通过 Ajax 获取内容,抓取工具并不会等待异步完成后再进行页面内容的抓取。也就是说,如果 SEO 对你的站点至关重要,而你的页面又是异步获取内容,则你可能需要服务器端渲染(SSR)解决此问题。
另外,使用服务器端渲染,我们可以获得更快的内容到达时间(time-to-content),无需等待所有的 JavaScript 都完成下载并执行,产生更好的用户体验,对于那些「内容到达时间(time-to-content)与转化率直接相关」的应用程序而言,服务器端渲染(SSR)至关重要。
什么是NUXT
Nuxt.js 是一个基于 Vue.js 的轻量级应用框架,可用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用,具有优雅的代码结构分层和热加载等特性。
NUXT环境初始化
下载压缩包
https://github.com/nuxt-community/starter-template/archive/master.zip
解压
将template中的内容复制到 guli
安装ESLint
将guli-admin项目下的.eslintrc.js配置文件复制到当前项目下
修改package.json
name、description、author(必须修改这里,否则项目无法安装)
"name": "guli", |
修改nuxt.config.js
修改title: {{ name }}
、content: {{escape description }}
这里的设置最后会显示在页面标题栏和meta数据中
head: { |
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 应用的个性化配置,以便覆盖默认配置。
幻灯片插件
安装插件
npm install vue-awesome-swiper |
配置插件
在 plugins 文件夹下新建文件 nuxt-swiper-plugin.js,内容是
import Vue from 'vue' |
在 nuxt.config.js 文件中配置插件
将 plugins 和 css节点 复制到 module.exports节点下
module.exports = { |
npm run dev 指令运行时报错,由于是我们导入的import ‘swiper/css/swiper.css’在低版本中有,Swiper 6.0.0或者更高版本就不是这个导入地址了,所以以下为解决方案。
- 把安装的vue-awesome-swiper版本回退到低版本,这样就可以保留import ‘swiper/css/swiper.css’:
- 指令为: npm i vue-awesome-swiper@3.1.3 –save
路由
固定路由
(1)使用router-link构建路由,地址是/course
<router-link to="/" tag="li" active-class="current" exact> |
(2)在page目录创建文件夹course ,在course目录创建index.vue
<template> |
动态路由
(1)创建方式
如果我们需要根据id查询一条记录,就需要使用动态路由。NUXT的动态路由是以下划线开头的vue文件,参数名为下划线后边的文件名
在pages下的course目录下创建**_id.vue**,补充内容
<template> |
封装axios
我们可以参考guli-admin将axios操作封装起来
下载axios ,使用命令 npm install axios
创建utils文件夹,utils下创建request.js
import axios from 'axios' |
首页banner数据显示
创建api文件夹,创建banner.js文件
banner.js
import request from '@/utils/request' |
在页面调用接口得到数据进行显示
在index.vue进行调用
v-for=”banner in bannerList” :key=”banner.id” 【注意需要加上:key标识每一个对象唯一标识】
【alt有两种标识:1、光标到图片显示文字内容 2、无图片显示文字内容】