Vue.js 中如何使用 Nuxt.js 实现 SSR

什么是 SSR

SSR 即服务端渲染,它的基本工作流程是将 Vue 组件同步渲染到服务器,返回给客户端一个已经渲染好的 HTML 页面。相较于传统的 CSR(客户端渲染)模式,SSR 可以带来更好的首屏渲染速度和 SEO 优化。

Nuxt.js 简介

Nuxt.js 是一个开源的基于 Vue.js 的 SSR 框架,具有简单易用、扩展性强、开箱即用等特点。它提供了一系列可以自定义的配置和约定,开发者可以使用预设的目录结构和命名规则来规范化项目代码组织。

如何使用 Nuxt.js 实现 SSR

首先需要安装 Nuxt.js:在终端中执行 npm i nuxt

创建 Nuxt.js 项目

在终端中执行 npx create-nuxt-app <project-name> 来创建一个新的 Nuxt.js 项目,项目目录结构如下:

使用 Nuxt.js 提供的模板和组件库

Nuxt.js 提供了模板和一些组件库可以使用,例如 Vuetify 和 Bootstrap。通过在 nuxt.config.js 配置文件中添加对应的模块名即可使用。例如:

module.exports = {
  modules: [
    // 使用 Vuetify
    '@nuxtjs/vuetify',
    // 使用 Bootstrap Vue
    'bootstrap-vue/nuxt'
  ],
  vuetify: {
    /* module options */
  },
  bootstrapVue: {
    /* module options */
  },
}

自定义路由

Nuxt.js 提供了自定义路由的配置,配置在 nuxt.config.js 文件中:

module.exports = {
  // 自定义路由
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        name: 'custom',
        path: '/custom',
        component: resolve(__dirname, 'pages/custom.vue')
      })
    }
  }
}

后端 API

在使用 SSR 的时候,Nuxt.js 需要通过后端 API 获取数据,从而构建 HTML 页面。如何访问后端 API 常见的有两种方式:

1.使用 Node.js 的 http 模块来发送 HTTP 请求,使用 res.write() 方法向前端推送数据。

2.使用开源的 HTTP 客户端 axios 来发送请求。

export default {
  asyncData({ params, $axios }) {
    return $axios.$get(`https://api.example.com/users/${params.id}`)
  }
}

预渲染

由于 SSR 在处理后端渲染时,体验依赖于服务端的性能,如果在高并发场景下,或者某些路由对性能要求较高的情况下,可以通过预渲染的方式进行优化。预渲染的过程在构建时进行,将预渲染好的内容存储到已编译资源的目录中,当客户端在访问页面时,直接将预渲染好的内容展示出来,从而减轻了服务端的压力。

预渲染只需要在 nuxt.config.js 中添加以下配置:

module.exports = {
  // 配置需要预渲染的页面
  generate: {
    routes: [
      '/page1',
      '/page2',
      '/page3'
    ]
  }
}

总结

本文介绍了如何使用 Nuxt.js 实现 Vue.js 的 SSR,包括创建 Nuxt.js 项目、使用 Nuxt.js 提供的模板和组件库、自定义路由、后端 API 和预渲染。通过阅读本文,您能够更好地理解 SSR 的意义和优势,并掌握使用 Nuxt.js 实现 SSR 的技巧。

附上示例代码:https://github.com/muyuuuu/vue-nuxt-ssr

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65aadc20add4f0e0ff470fac