You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一Shell运行FastAPI后端与Electron+Vite+Vue前端?脚本实践疑问

FastAPI后端+Electron-Vite-Vue前端的统一构建运行方案

一、在同一个Shell中构建并运行前后端

要在单个Shell中同时处理前后端的构建和运行,核心是用多进程管理工具实现命令并行执行,最常用的是concurrently:

  1. 安装依赖:
npm install --save-dev concurrently
  1. 在项目根目录的package.json中添加脚本:
{
  "scripts": {
    // 启动后端开发服务
    "start:backend": "uvicorn main:app --reload --host 0.0.0.0 --port 8000",
    // 启动Electron前端开发服务
    "start:frontend": "electron-vite dev",
    // 同时启动前后端
    "dev": "concurrently \"npm run start:backend\" \"npm run start:frontend\"",
    // 后端打包(以PyInstaller为例)
    "build:backend": "pyinstaller --onefile main.py",
    // 前端打包
    "build:frontend": "electron-vite build",
    // 统一执行前后端打包
    "build": "npm run build:backend && npm run build:frontend"
  }
}
  1. 执行命令:
  • 开发环境:npm run dev(同一个Shell会分别输出前后端的日志,带颜色区分)
  • 生产构建:npm run build(先打包后端,再打包前端)

二、在package.json中编写Python后端构建脚本是否属于良好实践?

要分场景判断:

  • 适合的场景:小型全栈项目、团队成员同时熟悉Python和JS生态、希望用统一的npm命令作为唯一入口(减少命令记忆成本)。
  • 不适合的场景:中大型项目、前后端团队分工明确(后端开发者不熟悉npm生态)、后端依赖复杂(需要虚拟环境、Poetry/Pipenv等包管理工具)——此时将Python构建逻辑塞进npm脚本会混淆前后端的职责边界,增加维护难度,甚至引发环境冲突。

结论:小型项目可以用,但并非通用的最佳实践。

三、替代方案

1. 使用Makefile(推荐给熟悉DevOps的团队)

用Makefile统一管理前后端的构建、运行命令,逻辑清晰且跨平台(需要安装Make工具):

.PHONY: dev build backend-dev frontend-dev backend-build frontend-build

# 同时启动前后端开发服务(-j 表示并行执行)
dev:
	make -j backend-dev frontend-dev

# 后端开发服务
backend-dev:
	uvicorn main:app --reload --host 0.0.0.0 --port 8000

# 前端开发服务
frontend-dev:
	electron-vite dev

# 统一构建前后端
build: backend-build frontend-build

# 后端打包
backend-build:
	pyinstaller --onefile main.py

# 前端打包
frontend-build:
	electron-vite build

执行命令:

  • 开发:make dev
  • 构建:make build

2. 使用Docker Compose(适合环境隔离需求的项目)

将前后端封装为独立容器,通过Docker Compose统一管理启动和构建,彻底隔离本地环境:

version: '3.8'
services:
  backend:
    build: ./backend
    command: uvicorn main:app --reload --host 0.0.0.0 --port 8000
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/app  # 挂载代码实现热重载

  frontend:
    build: ./frontend
    command: electron-vite dev
    volumes:
      - ./frontend:/app
    depends_on:
      - backend

执行命令:

  • 启动开发服务:docker-compose up
  • 构建生产镜像:docker-compose build

3. 使用全栈项目管理工具(适合大型Monorepo)

比如NX,它专门用于管理多项目仓库,支持统一的构建、运行、测试流程,还能提供依赖分析、缓存优化等功能,适合大型全栈项目,但学习成本较高。

内容的提问来源于stack exchange,提问作者ghana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:23:06