现在位置: 首页 > Vue3 教程 > 正文

Vue3 createSSRApp() 函数详解


Vue3 全局 API Vue3 全局 API

createSSRApp() 是一个专门用于服务器端渲染(SSR, Server-Side Rendering)的函数。

createSSRApp() 通过在服务器端生成 HTML 内容,提高了页面的首次加载速度和 SEO 效果。

createApp() 相比,createSSRApp() 更适合需要服务器端渲染的应用场景。


1. 什么是服务器端渲染(SSR)?

服务器端渲染(SSR)是指在服务器上生成HTML,然后将生成的HTML发送到客户端进行展示的过程。与传统的客户端渲染(CSR, Client-Side Rendering)不同,SSR可以帮助提高页面的首次加载速度,并改善搜索引擎优化(SEO)。

在客户端渲染中,浏览器首先下载一个空的HTML文件,然后通过JavaScript动态生成页面内容。而在服务器端渲染中,服务器已经生成了完整的HTML内容,浏览器只需要展示这些内容即可。


2. createSSRApp() 的作用

在Vue.js 3中,createApp() 是用于创建客户端Vue应用的标准函数。而 createSSRApp() 则是 createApp() 的变体,专门用于创建支持服务器端渲染的Vue应用。

createSSRApp() 的主要作用是在服务器端生成Vue应用的HTML内容,并将其发送到客户端。它确保了Vue应用在服务器端和客户端的一致性,从而避免了客户端和服务器端渲染结果不一致的问题。


3. 使用 createSSRApp() 创建应用

使用 createSSRApp() 创建Vue应用的步骤与使用 createApp() 类似,但需要特别注意一些与SSR相关的配置。

3.1 基本用法

实例

// 导入 createSSRApp
import { createSSRApp } from 'vue';

// 导入根组件
import App from './App.vue';

// 创建SSR应用
const app = createSSRApp(App);

// 挂载应用
app.mount('#app');

在这个例子中,我们使用 createSSRApp() 创建了一个支持服务器端渲染的Vue应用,并将其挂载到指定的DOM元素上。

3.2 服务器端和客户端的区别

在服务器端和客户端,createSSRApp() 的行为有所不同:

  • 服务器端:在服务器端,createSSRApp() 会生成Vue应用的HTML内容,并将其发送到客户端。
  • 客户端:在客户端,createSSRApp() 会接管服务器生成的HTML内容,并将其激活为可交互的Vue应用。

3.3 配置SSR应用

在配置SSR应用时,需要注意以下几点:

  • 避免在服务器端使用客户端专用的API:例如,windowdocument 对象在服务器端是不可用的。
  • 使用 onServerPrefetch 钩子:在服务器端渲染时,可以使用 onServerPrefetch 钩子来预先获取数据。

实例

export default {
  async onServerPrefetch() {
    // 在服务器端预先获取数据
    this.data = await fetchData();
  }
};

4. createSSRApp()createApp() 的区别

特性 createApp() createSSRApp()
渲染环境 客户端渲染(CSR) 服务器端渲染(SSR)
首次加载速度 较慢,依赖客户端JavaScript执行 较快,服务器已生成HTML
SEO 较差,搜索引擎难以抓取动态内容 较好,搜索引擎可抓取完整的HTML
适用场景 单页应用(SPA) 需要SEO和快速加载的应用

Vue3 全局 API Vue3 全局 API