Vue基于NUXT的SSR详解

yizhihongxing

Vue基于NUXT的SSR详解

什么是SSR

SSR是指服务器端渲染(Server-side rendering),是将Vue组件在服务器端渲染成HTML字符串,然后再将这个HTML字符串返回给浏览器端,浏览器接收到这个HTML字符串后进行解析,即可渲染出页面来。

相对于SPA(单页应用程序)的客户端渲染(CSR),SSR更加利于SEO,加快页面的渲染速度,提升用户体验。

NUXT介绍

NUXT是一个基于Vue.js生态的更高层次的框架,它为基于Vue.js的Web开发提供了许多大型项目所需的特性,比如服务器端渲染、生成静态站点等。

NUXT的特点

  • 支持服务端渲染
  • 支持静态站点生成
  • 支持自动生成路由配置
  • 支持自动代码分层,使得更好的组织应用结构
  • 支持多种异步数据获取方式
  • 支持对应用程序进行自动缓存,以提高应用性能
  • 支持多种应用程序配置项的快速设置

对于构建大型应用程序,NUXT的服务端渲染和自动路由配置为开发者提供了巨大的便利。

NUXT对SSR的实现

NUXT基于Vue.js实现了基于服务器的渲染(server-side rendering),即SSR,提供了一个全新的方式来构建Vue.js应用程序。通过服务器端渲染,NUXT可以快速生成并返回静态HTML。如果需要在客户端交互,NUXT会在客户端提供vue.js和vuex.js等相关的组件。

NUXT的服务端渲染原理

  • 服务器端响应请求,根据路由匹配到对应的页面组件
  • 在服务器端渲染页面组件,并将渲染后的html字符串返回给浏览器端
  • 在浏览器端激活该页面组件,并绑定事件和数据

NUXT的服务端渲染示例1

components目录下定义HelloWorld组件:

<template>
  <div>{{msg}}</div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'hello,world'
    }
  }
}
</script>

pages目录下定义index.vue路由页面:

<template>
  <div>
    <h1>这是首页</h1>
    <HelloWorld />
  </div>
</template>

<script>
import HelloWorld from '@/components/HelloWorld'

export default {
  components: {
    HelloWorld
  }
}
</script>

在NUXT的配置文件nuxt.config.js中添加配置项,开启服务端渲染:

export default {
  target: 'server'
}

在终端中执行npm run dev命令启动开发服务器,并访问http://localhost:3000,可以看到页面在服务端已经完成渲染,页面源代码中已经存在我们定义的HelloWorld组件的内容。

NUXT的服务端渲染示例2

api目录下定义project.js文件,用于模拟异步数据请求:

const getProject = async () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve({ data: { name: 'NUXT项目', id: 1 } })
    }, 1000)
  })
}

export default {
  getProject
}

pages目录下定义project.vue路由页面,异步获取数据并在页面上展示:

<template>
  <div>
    <h1>{{ project.name }}</h1>
  </div>
</template>

<script>
import api from '@/api/project.js'

export default {
  async asyncData() {
    const project = await api.getProject()
    return { project: project.data }
  }
}
</script>

在访问浏览器路由/project时,服务端会异步获取数据并将完整页面返回给浏览器端,加快了页面的渲染速度。

参考资料

  • NUXT.js官网:https://nuxtjs.org/
  • Vue SSR Guide:https://ssr.vuejs.org/
  • Vue.js官网:https://vuejs.org/

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue基于NUXT的SSR详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue实现折线图 可按时间查询

    关于“vue实现折线图 可按时间查询”的过程,我可以提供以下完整攻略: 步骤一:准备数据 首先,我们需要准备一组数据来作为折线图的展示依据。可以使用Mock.js模拟数据,例如: { "result": [ { "date": "2022-01-01", "value": 10 …

    Vue 2023年5月28日
    00
  • vue 3 中watch 和watchEffect 的新用法

    下面我就来讲解 “Vue 3 中 watch 和 watchEffect 的新用法” 的完整攻略。 1. 简介 在Vue 3中,watch 和 watchEffect 的用法得到了很大的改进。 在Vue 2中,watch 选项和 watch 函数要么立即执行要么需要手动设置 immediate 选项才能立即执行。如果你只是需要在数据变化时立即执行一段代码,那…

    Vue 2023年5月28日
    00
  • 在Vue中使用WebScoket 会怎么样?

    在Vue中使用WebSocket可以实现双向通信,实时更新数据,并且极大地提升了用户体验。下面是使用WebSocket的完整攻略: 1. 安装WebSocket库 Vue项目中可以使用vue-native-websocket等WebSocket库。安装方法如下: npm install vue-native-websocket 2. 引入WebSocket库…

    Vue 2023年5月28日
    00
  • Vue2 Element Schema Form 配置式生成表单的实现

    下面是“Vue2 Element Schema Form 配置式生成表单的实现”完整攻略: 1. Vue2 Element Schema Form 简介 Vue2 Element Schema Form 是基于 Vue.js 2.x、Element UI 和 JSON Schema 构建的,通过配置式的方式生成表单的开源组件。它可以允许用户在不编写一行表单组…

    Vue 2023年5月27日
    00
  • 分享Vue组件传值的几种常用方式(一)

    下面我会详细讲解“分享Vue组件传值的几种常用方式(一)”的完整攻略。 标题分析 标题:“分享Vue组件传值的几种常用方式(一)” 分析:该标题属于文档类文章,主要内容是针对Vue组件传值方面的一些常用方式进行介绍。 文章结构 引言:介绍Vue组件传值的重要性和文章将要介绍的内容。 父组件向子组件传值的方式: props属性 和 \$emit方法 对prop…

    Vue 2023年5月27日
    00
  • 一文详解Vue 的双端 diff 算法

    一文详解Vue 的双端 diff 算法 什么是双端 diff 算法 双端 diff 算法是 Vue 框架中用于虚拟 DOM 更新的一个核心算法。与传统 diff 算法不同,双端 diff 算法在新的修改和比较过程中存在两个方向,从开头到结尾(前向)和从结尾到开头(后向),所以称为双端(Two-Way)算法。 双端 diff 算法的原理 Vue 双端 diff…

    Vue 2023年5月29日
    00
  • Vuei18n 在数组中的使用方式

    Vuei18n 是 Vue.js 官方提供的国际化插件。在实际开发中,我们通常需要在不同语种下展示不同的文案,这时候就需要使用 Vuei18n 来实现多语言切换。 Vuei18n 在数组中的使用方式非常方便,可以简单实现不同语种下的文本数据复用。下面是具体步骤: 1. 安装 Vuei18n Vuei18n 可以通过 npm 安装: npm install v…

    Vue 2023年5月29日
    00
  • 深入理解vue-loader如何使用

    下面是一份详细的“深入理解vue-loader如何使用”的攻略。 什么是vue-loader? vue-loader是一个webpack插件,它允许我们在单个.vue文件的内部编写<template>、<script>和<style>标签,从而实现了Vue单文件组件的编写方式。简单来说,我们可以在.vue文件中编写Vue组…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部