服务端渲染技术Nuxt
1.什么是服务端渲染技术
- 服务端渲染又称SSR(Server Side Render)是在服务端完成页面的内容,而不是在客户端通过AJAX获取数据。服务器端渲染(SSR)的优势主要在于∶更好的SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。
- 如果你的应用程序初始展示loading菊花图,然后通过Ajax获取内容,抓取工具并不会等待异步完成后再进行页面内容的抓取。也就是说,如果SEO对你的站点至关重要,而你的页面又是异步获取内容,则你可能需要服务器端渲染(SSR)解决此问题。
- 另外,使用服务器端渲染,我们可以获得更快的内容到达时间(time-to-content),无需等待所有的JavaScript都完成下载并执行,产生更好的用户体验,对于那些「内容到达时间(time-to-content)与转化率直接相关」的应用程序而言,服务器端渲染(SSR)至关重要。
2.什么是Next
Nuxt.js 是一个基于 Vue.js 的通用应用框架。
通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI 渲染。
下图阐述了 Nuxt.js 应用一个完整的服务器请求到渲染(或用户通过 <nuxt-link> 切换路由渲染页面)的流程:
3.特性
- 基于 Vue.js
- 自动代码分层
- 服务端渲染
- 强大的路由功能,支持异步数据
- 静态文件服务
- ES2015+ 语法支持
- 打包和压缩 JS 和 CSS
- HTML 头部标签管理
- 本地开发支持热加载
- 集成 ESLint
- 支持各种样式预处理器: SASS、LESS、 Stylus 等等
- 支持 HTTP/2 推送
4.Nuxt目录结构
- 资源目录
assets用于组织未编译的静态资源如LESS、SASS或JavaScript。
- 组件目录
- 组件目录
components用于组织应用的 Vue.js 组件。 - Nuxt.js 不会扩展增强该目录下 Vue.js 组件,即这些组件不会像页面组件那样有
asyncData方法的特性。
- 组件目录
- 布局目录
- 布局目录
layouts用于组织应用的布局组件。 - default.vue 设置头信息、尾信息的布局
- 若无额外配置,该目录不能被重命名。
- 布局目录
- 中间件目录
middleware目录用于存放应用的中间件。
- 页面目录
- 页面目录
pages用于组织应用的路由及视图。Nuxt.js 框架读取该目录下所有的.vue文件并自动生成对应的路由配置。 - 若无额外配置,该目录不能被重命名。
- 页面目录
- 插件目录
- 插件目录
plugins用于组织那些需要在根vue.js应用实例化之前需要运行的 Javascript 插件。
- 插件目录
- 静态文件目录
- 静态文件目录
static用于存放应用的静态文件,此类文件不会被 Nuxt.js 调用 Webpack 进行构建编译处理。服务器启动的时候,该目录下的文件会映射至应用的根路径/下。 - 举个例子:
/static/robots.txt映射至/robots.txt - 若无额外配置,该目录不能被重命名。*
- 静态文件目录
- Store 目录
- nuxt.config.js 文件
nuxt.config.js文件用于组织 Nuxt.js 应用的个性化配置,以便覆盖默认配置。- 若无额外配置,该文件不能被重命名。
- package.json 文件
package.json文件用于描述应用的依赖关系和对外暴露的脚本接口。- 该文件不能被重命名。
- 别名
5.安装
确保安装了 npx(npx 在 NPM 版本 5.2.0 默认安装了):
$ npx create-nuxt-app <项目名>
它会让你进行一些选择:
- 在集成的服务器端框架之间进行选择:
- 选择您喜欢的 UI 框架:
- 选择您喜欢的测试框架:
- 选择你想要的 Nuxt 模式 (
UniversalorSPA) - 添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。
- 添加 EsLint 以在保存时代码规范和错误检查您的代码。
- 添加 Prettier 以在保存时格式化/美化您的代码。
- 添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。
- 添加 EsLint 以在保存时代码规范和错误检查您的代码。
- 添加 Prettier 以在保存时格式化/美化您的代码。
当运行完时,它将安装所有依赖项,因此下一步是启动项目:
# 进入目录输入$ npm run dev
应用现在运行在 http://localhost:3000 上运行。
注意:Nuxt.js 会监听
pages目录中的文件更改,因此在添加新页面时无需重新启动应用程序。
项目前端
一、幻灯片插件
1.安装插件
$ npm install vue-awesome-swiper
2.配置插件
在plugins文件夹下新建文件nuxt-swiper-plugin.js内容是
import Vue from 'vue'import VueAwesomeSwipter from 'vue-awesome-swiper/dist/ssr'Vue.use(VueAwesomeSwipter)
在nuxt.config.js文件中配置插件
将plugins和css节点复制到module.exports节点下
module.exports = {//some nuxt config...plugins: [{ src: '~/plugins/next-swiper-plugin.js', ssr: false}],css: ['swiper/dist/css/swiper.css']}
注意如果文件名不一致会导致启动报错
需要导入vue@2.6.14
$ npm install --save vue@2.6.14
最新版vue-awesome-swiper使用的是vue@3.x版本,vue@2.x版本可使用vue-awesome-swiper@3.1.3
$ npm install vue-awesome-swiper@3.1.3
3.复制项目使用的静态资源
二、nuxt路由
第一种 固定路由
路径是固定地址,不发生变化

第二种 动态路由
每次生成的路由
创建方式
如果我们需要根据id查询一条记录,就需要使用动态路由。Nuxt的动态路由是以下划线开头的vue文件,参数名为下划线后面的文件名
通过id查询就在目录下创建_id.vue
