📜  服务器端渲染 (1)

📅  最后修改于: 2023-12-03 15:26:30.994000             🧑  作者: Mango

服务器端渲染

什么是服务器端渲染?

服务器端渲染 (Server-Side Rendering, SSR) 是一种将数据和UI模板合并生成HTML代码的技术。这种技术通常在服务器端执行,将HTML代码发送给客户端,然后将其呈现给用户。相对于浏览器端渲染,服务器端渲染最大的优点是可以让搜索引擎更好地理解和索引网站。

服务器端渲染和浏览器端渲染的区别

在浏览器端渲染中,JavaScript代码在客户端执行,请求数据通常是异步进行的。这意味着在页面刚刚加载时,可能只有UI框架的代码被加载,而真正的内容是在异步请求后才被渲染。这段时间内,用户可能会看到空白或者加载指示器,让用户体验感受较差。

相反,服务器端渲染在服务器端预先渲染了页面,并将渲染的结果以HTML代码的形式发送给浏览器。这就意味着当用户浏览网站时,页面的内容已经被渲染好了,不需要等待异步请求的结果。这样,用户可以更快的看到页面内容,提高了用户的访问体验。

SSr和SEO

由于服务器端渲染能让搜索引擎更好地理解和索引网站,因此,SSR通常是实现搜索引擎优化(SEO)的核心技术之一。

比如,对于一个纯前端的网站,如果用户直接访问某个URL,由于该URL没有任何实际的内容,搜索引擎将无法识别该页面的内容,也就无法收录该页面。而使用SSR技术,前端开发人员可以在服务器端生成HTML代码,并将其发送给用户,使搜索引擎能够更好地了解页面的内容并进行收录。

SSR框架

目前,市面上有许多成熟的SSR框架,如Next.js、Nuxt.js、Gatsby等。这些框架通常在底层提供了构建SSR应用所需的工具和API,为开发人员提供了快速开发和实现SSR的便利。

下面以Nuxt.js为例,介绍如何使用此框架来构建SSR应用。

Nuxt.js

Nuxt.js是一个基于Vue.js的SSR框架,通过其提供的API和约定,可以快速地构建出一个SSR应用。下面是一个简单的Nuxt.js应用示例:

// nuxt.config.js
export default {
  modules: [
    '@nuxt/content'
  ],
  content: {
    markdown: {
      prism: {
        theme: 'prism-themes/themes/prism-dracula.css'
      }
    }
  }
}
<!-- pages/index.vue -->
<template>
  <div>
    <h1>{{ title }}</h1>
    <nuxt-content />
    <button @click="count++">{{ count }}</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: 'Welcome to Nuxt.js!',
      count: 0
    }
  }
}
</script>

上面的代码中,nuxt.config.js中配置了@nuxt/content和prism主题,pages/index.vue中则定义了一个标题、一个富文本内容和一个计数器按钮。在应用启动时,Nuxt.js将自动执行渲染流程,生成相应的HTML代码,并将其发送给浏览器端。

SSR的优点和缺点
优点
  1. 更好的SEO效果:服务器端渲染可以让搜索引擎更好地识别网站内容,对SEO优化有很大的帮助。
  2. 更快的首屏加载速度:由于服务器端渲染可以让浏览器直接渲染出HTML代码,而不需要等待异步请求返回数据,从而加快了页面的首屏加载速度。
  3. 更好的用户体验:由于首屏加载速度提高了,用户可以更快地看到页面内容,提高了用户的体验感。
缺点
  1. 需要更多的服务器资源:由于服务器需要运行和渲染页面,因此需要更多的服务器资源,可能导致成本增加。
  2. 开发成本增加:实现服务器端渲染通常需要使用一些成熟的SSR框架,并遵循一些开发约定,这可能需要一定的学习成本。
  3. 更复杂的部署和维护:由于需要运行在服务器端,服务器端渲染应用在部署和维护时可能会更复杂,特别是需要与后端服务进行交互时,需要更多的配置和调试。