什么是预渲染?
预渲染文件只是在构建时生成的静态 HTML 文件,将这些文件放置在服务器上供用户请求时直接访问。预渲染后的 HTML 文件不需要再依赖 JavaScript 去渲染页面,它已经包含了预处理后的 HTML、CSS 和 JS 等信息,可以直接在浏览器中打开预渲染文件,即可看到完整的网页内容和结构。因此,预渲染文件也被称为静态 HTML 文件。
预渲染文件的优点
- 使用预渲染技术可以有效减轻服务器的负担,提高网页加载速度和用户体验。由于预渲染文件只包含静态资源,所以也可以非常方便地部署到各种不同类型的服务器上。
- 在单页面应用中,页面的内容都是通过javascript动态生成的,传统爬虫爬取页面时,获取到的html文件只有一个div标签,没有任何有价值的东西,预渲染也是解决SEO优化的一个方法之一
预渲染文件可以离线访问吗
如果用户的设备已经缓存了这些文件,那么在没有连接互联网的情况下也可以直接访问加载预渲染文件。
这里需要注意的是,虽然预渲染文件可以被缓存,并且在离线情况下也能够访问,但是如果你的页面依赖于动态数据或通过 JavaScript 分析 URL 来加载具体内容,那么预渲染文件可能不能完全替代对后端服务的请求和响应。在此情况下,通常可以使用“缓存优先”或“网络优先”的策略结合 Service Worker 技术来实现更好的离线体验。
vite预渲染
Vite 是一个基于浏览器原生 ES 模块导入的开发服务器和构建工具,对于预渲染的需求,可以使用 Vite 内置的插件 vite-plugin-prerender 来实现。
以下是使用 Vite 插件 vite-plugin-prerender 进行预渲染的步骤:
安装插件
在项目根目录下安装 vite-plugin-prerender 插件:
npm install vite-plugin-prerender --save-dev
配置插件
在项目的 vite.config.js 文件中配置插件,并设置需要预渲染的页面路径、输出路径等选项:
js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import prerender from 'vite-plugin-prerender'
const path = require('path')
export default defineConfig({
plugins: [
vue(),
// 预渲染插件配置
prerender({
routes: ["/", "/about"],
staticDir: path.join(__dirname, 'dist'),
minify: true,
fallback: "index.html"
})
]
})
其中,prerender 插件选项具体含义如下:
include:需要预渲染的页面路径列表,支持通配符匹配。
staticDir: 静态文件目录,默认为 “dist”,表示从这个目录中读取静态资源。
minify:是否压缩 HTML 文件,默认为 true。
fallback: 网络请求失败、404 错误等情况下应该返回的 HTML 文件,默认为 “index.html”。
构建项目
最后,使用命令构建项目即可生成预渲染文件:
npm run build
构建完成后,在 dist 目录中就生成了静态 HTML 文件和静态资源文件。这些文件可以直接部署到服务器上,也可以作为静态站点发布。
需要注意的是,在使用 Vite 进行预渲染时,需要确保预渲染页面能够在无 JavaScript 环境下正常运行。因此,避免使用 Vue 组件生命周期钩子函数等浏览器特定 API 和库函数,并根据需要对页面进行调整。