归档.zip
    修改 package.json 脚本

    1. "scripts": {
    2. "dev": "vite",
    3. "build": "npm run build:client && npm run build:server",
    4. "build:client": "vite build --outDir dist/client",
    5. "build:server": "vite build --outDir dist/server --ssr src/server-entry.jsx",
    6. "serve": "vite preview"
    7. },

    执行 npm run buid , 打包出两份文件
    image.png
    修改 server.js , 作为生产环境使用

    1. const express = require("express");
    2. const fs = require("fs");
    3. const app = express();
    4. app.use(express.static("dist/client")); // 静态资源目录映射
    5. // 获取 html 模版
    6. const template = fs.readFileSync("dist/client/index.html", "utf-8");
    7. app.get("*", async (req, res) => {
    8. // 获取渲染函数
    9. const { render } = require("./dist/server/server-entry");
    10. const context = {};
    11. // 渲染路由对应的 html
    12. const html = await render(req.url, context);
    13. if (context.url) {
    14. // 如果有此路由,重定向此路由即可
    15. res.redirect(301, context.url);
    16. return;
    17. }
    18. // 替换字符串为 html 模版
    19. const responseHtml = template.replace("<!-- APP_HTML -->", html);
    20. res.set("content-type", "text/html").send(responseHtml);
    21. });
    22. app.listen(4000);
    • 启动 node server.js