vite SSR 超简单的服务端渲染

本文档介绍了一个基于Vite的SSR项目,包括项目地址、安装步骤、运行方式以及目录结构。项目使用了Vite、Vue3、Vue Router、Vuex等技术栈,打包后通过`server.js`在Node Express上运行。此外,还详细列出了所使用的依赖包,如@vue/server-renderer、vite-ssr等。此项目对于想要了解Vite SSR开发流程的开发者具有参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目地址 https://gitee.com/blueskyliu/vite-ssr

效果图

在这里插入图片描述

使用

安装

yarn

运行

yarn dev  //开发模式运行
yarn build //打包

目录结构

  • dist 打包目录
  • server.js 打包后的node express 运行脚本【build后使用这个进行部署

剩余的目录结构内容与 vue 没什莫大的区别

使用插件

 "dependencies": {
    "@vue/server-renderer": "^3.2.6",
    "@vueuse/head": "^0.6.0",
    "express": "^4.17.1",
    "vite-ssr": "^0.13.0",
    "vue": "^3.2.6",
    "vue-router": "4",
    "vuex": "^4.0.2"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.6.0",
    "@vue/compiler-sfc": "^3.0.5",
    "vite": "^2.5.1"
  }
### 使用 Nest.jsVue.js 结合 Vite 实现服务端渲染 (SSR) #### 项目初始化 为了创建一个支持 SSR 的应用,首先需要安装必要的依赖项并配置环境。 ```bash npm init vite@latest my-vue-app --template vue cd my-vue-app npm install ``` 接着,在 `my-vue-app` 文件夹内启动一个新的终端窗口,并设置 NestJS 后端: ```bash npx @nestjs/cli new server cd server npm install ``` #### 安装额外的库 为了让两个框架协同工作,还需要一些辅助工具。在前端部分添加如下命令以获取所需模块: ```bash npm install vue-server-renderer express ``` 对于后端,则需引入适配器以便更好地集成 Express: ```bash npm i --save @nestjs/platform-express ``` #### 配置 Vite 构建过程 编辑项目的根目录下的 `vite.config.ts`, 添加对服务器端的支持选项: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [ vue(), ], ssr: { noExternal: ['vue'], }, }) ``` 此配置允许 Vite 处理来自 Node.js 环境中的请求[^1]。 #### 创建入口文件 为区分客户端和服务端逻辑,建议分别建立独立的应用起点。于 `/src/entry-client.ts` 中定义标准Vue实例用于浏览器加载;而在 `/src/entry-server.ts` 则负责处理初次页面访问时的数据预取与HTML组装。 ##### entry-client.ts ```javascript import { createApp } from './main'; createApp().mount('#app'); ``` ##### entry-server.ts ```javascript import { renderToString } from "vue/server-renderer"; import { createApp } from "./main"; export async function render(url) { const app = createApp(); return await renderToString(app); } ``` 上述代码片段展示了如何利用 `vue/server-renderer` 将应用程序转换成字符串形式返回给用户代理设备[^2]。 #### 整合至 NestJS API 路由 最后一步是在 NestJS 控制器里注册一条新路径用来触发 SSR 流程。打开位于 `server/src/app.controller.ts` 的控制器类,加入下面的方法实现: ```typescript import { Controller, Get, Res } from "@nestjs/common"; import { Response } from "express"; import { render } from "../dist/ssr"; // 假设已编译好 @Controller() export class AppController { @Get("*") public async index(@Res() res: Response): Promise<void> { try { const content = await render(); res.send(` <!DOCTYPE html> <html lang="en"> <head><title>Hello</title></head> <body>${content}</body> </html> `); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } } } ``` 这段 TypeScript 函数接收任意 URL 请求并通过调用先前准备好的 `render()` 方法完成整个流程[^3]。 通过以上步骤,已经成功搭建了一个简单的基于 Nest.jsVue.js 并借助 Vite 进行优化的服务端渲染架构。当然实际生产环境中可能还会涉及到更多细节调整和技术选型考量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值