SSR服务器端渲染(Nuxt.js总结和豆瓣电影项目)

一.前言

开始之前,我们先了解一下普通前端渲染过程:

在这里插入图片描述

而加了SSR的服务器渲染过程:

在这里插入图片描述
明显请求次数变少了,速度更快.那接下来隆重介绍服务端渲染

什么是服务器端渲染

  • 前端渲染:html页面作为静态文件存在,前端请求时后端不对该文件做任何内容上的修改,直接以资源的方式返回给前端,前端拿到页面后,根据写在html页面上的js代码,对该html的内容进行修改。
  • 服务端渲染:前端发出请求后,后端在将HTML页面返回给前端之前,先把HTML页面中的特定区域,用数据填充好,再将完整的HTML返回给前端。在SPA场景下,服务端渲染都是针对第一次get请求,它会完整的html给浏览器,浏览器直接渲染出首屏,用不着浏览器端多一个AJAX请求去获取数据再渲染。

为什么使用服务器端渲染

优点:

  • 更好的 SEO.
    因为传统的搜索引擎只会从 HTML 中抓取数据,这会导致前端渲染的页面无法被抓取。
  • 更快的内容到达时间.
    特别是对于缓慢的网络情况或运行缓慢的设备,页面首屏时间大概有80%消耗在网络上,剩下的时间在后端读取数据以及浏览器渲染,显然要优化后面的20%是比较困难的,优化网络时间是效果最明显的手段。传统的Ajax请求是先请求js再由js发起数据请求,两项时间再加上浏览器渲染时间才是首屏时间。而SSR能将两个请求合并为一个。

缺点:

  • 更多的服务器端负载。
  • 服务器端和浏览器环境差异带来的问题,例如document等对象找不到的问题。

如何选择

建议:如果注重SEO的新闻站点,非强交互的页面,建议用SSR;像后台管理页面这类强交互的应用,建议使用前端渲染。

二.Nuxt.js学习

Nuxt.js是什么?

引用官网官网的一句话:Nuxt.js是一个基于Vue.js的通用应用框架.

开始第一个hello world应用

安装

//安装包-全局安装(已装的省略这步)
yarn add create-nuxt-app -globel
//创建项目
npm init nuxt-app 项目名
//运行项目
npm run dev

创建项目时选择的内容
在这里插入图片描述
目录分析

└─my-nuxt-demo
  ├─.nuxt               // Nuxt自动生成,临时的用于编辑的文件,build
  ├─assets              // 用于组织未编译的静态资源如LESS、SASS或JavaScript,对于不需要通过 Webpack 处理的静态资源文件,可以放置在 static 目录中
  ├─components          // 用于自己编写的Vue组件,比如日历组件、分页组件
  ├─layouts             // 布局目录,用于组织应用的布局组件,不可更改⭐
  ├─middleware          // 用于存放中间件
  ├─node_modules
  ├─pages               // 用于组织应用的路由及视图,Nuxt.js根据该目录结构自动生成对应的路由配置,文件名不可更改⭐
  ├─plugins             // 用于组织那些需要在 根vue.js应用 实例化之前需要运行的 Javascript 插件。
  ├─static              // 用于存放应用的静态文件,此类文件不会被 Nuxt.js 调用 Webpack 进行构建编译处理。 服务器启动的时候,该目录下的文件会映射至应用的根路径 / 下。文件夹名不可更改。⭐
  └─store               // 用于组织应用的Vuex 状态管理。文件夹名不可更改。⭐
  ├─.editorconfig       // 开发工具格式配置
  ├─.eslintrc.js        // ESLint的配置文件,用于检查代码格式
  ├─.gitignore          // 配置git忽略文件
  ├─nuxt.config.js      // 用于组织Nuxt.js 应用的个性化配置,以便覆盖默认配置。文件名不可更改。⭐
  ├─package-lock.json   // npm自动生成,用于帮助package的统一设置的,yarn也有相同的操作
  ├─package.json        // npm 包管理配置文件
  ├─README.md

重点关注下面几个文件夹
在这里插入图片描述
修改pages/index.vue文件,增加hello world ,效果如下:
在这里插入图片描述

路由学习
pages文件夹里的默认路由

在pages文件夹里写一个测试页面,发现在浏览器地址里加文件名成功访问到了这个页面
在这里插入图片描述
在这里插入图片描述
同样加上文件夹也可以匹配,推荐文件夹这种写法,写文件名不是不可以,文件名容易出错.
在这里插入图片描述
如果文件名起名为index.vue,它默认会打开这个index.vue页面.

pages文件夹路由总结:
Nuxt.js会根据pages目录结构会自动生成对应的路由配置.

内部路由实现的原理(其实就是原始的vue路由):
假设pages文件夹目录如下:

└─pages
    ├─index.vue
    └─user
      ├─index.vue
      ├─one.vue

那么,Nuxt.js 自动生成的路由配置如下:

router: {
   
  routes: [
    {
   
      name: 'index',
      path:'/',
      component:'pages/index.vue'
    },
    {
   
        name:'user',
        path:'/user',
        component:'pages/user/index.vue'
    },
    {
   
        name:'user-one',
        path:'/user/one',
        component:'pages/user/one.vue'
    }
  ]
}
路由跳转(跟vue一样,也有两种)

标签跳转:

<nuxt-link to="/student"></nuxt-link>

api跳转:

this.$router.push('/student')

在这里插入图片描述
这两种方式实现效果一样.

动态路由(实际动态传参)

跳转前携带参数:
在这里插入图片描述
准备好组件
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值