会员登录 立即注册

搜索

开发模式和生产模式

[复制链接]
崎山小鹿 发表于 6 小时前 | 显示全部楼层 |阅读模式
崎山小鹿
6 小时前 17 1 看全部
DEV 模式(Development Mode,开发模式),是软件开发过程中专门用于编写代码、调试程序、测试功能的运行模式。DEV 是英文 Development(开发)的缩写。

你可以简单理解为:DEV 模式是给开发人员使用的模式,方便发现问题、修改代码和验证功能;与之相对的通常是生产模式(PROD)。
一、DEV 模式和 PROD 模式有什么区别?
对比项目        DEV 开发模式        PROD 生产模式
主要用途        开发、调试、测试        正式上线、服务用户
错误信息        通常显示详细错误信息        通常隐藏内部错误细节
代码修改        通常支持热更新或自动重载        通常需要重新构建或部署
性能优化        一般不是首要目标        通常进行性能优化
安全性        可能暴露调试信息        应加强安全防护
使用场景        本地开发、测试服务器        正式业务服务器

================================
cd backend && uv sync && uv run main.py run --env=dev

这条命令实际做了什么?
结合你的 FastAPIAdmin 后端项目,可以将它理解为:
1. 进入后端源代码目录。
2. 检查并同步 Python 项目的依赖环境。
3. 使用项目指定的 Python 环境运行 main.py。
4. 通过 --env=dev 选择开发环境配置。
5. 如果项目启动成功,后端就可以开始接收 API 请求。

uv 是一个 Python 项目管理工具。

uv sync 通常会根据项目中的 pyproject.toml 和 uv.lock 文件,同步虚拟环境及项目依赖。

例如,项目可能依赖:
- FastAPI:构建后端 API
- SQLAlchemy:操作数据库
- Redis:缓存和任务进度管理
- Pydantic:数据校验
如果缺少依赖,uv sync 会根据锁定文件和项目配置安装所需的包;它也可能调整现有环境中的包版本。

====================================

# typer.Option是非必填;typer.Argument是必填
@fastapiadmin_cli.command(
    name="run",
    help="启动 FastapiAdmin 服务, 运行 python main.py run --env=dev 不加参数默认 dev 环境",
)
def run(
    env: Annotated[
        EnvironmentEnum, typer.Option("--env", help="运行环境 (dev, prod)")
    ] = EnvironmentEnum.DEV,
) -> None:
    """
    按指定环境加载配置并启动 Uvicorn(开发环境开启 reload)。

    参数:
    - env (EnvironmentEnum): 运行环境,对应 `--env`。

    返回:
    - None
    """

    try:
        # 设置环境变量
        os.environ["ENVIRONMENT"] = env.value

        # 显示启动横幅
        from app.utils.banner import worship

        typer.secho(
            message=worship(env.value),
            fg=typer.colors.GREEN,
        )

        # 清除配置缓存,确保重新加载配置
        from app.config.setting import get_settings
        
        get_settings.cache_clear()
        settings = get_settings()

        from app.core.logger import setup_logging

        setup_logging()

        # 启动uvicorn服务
        uvicorn.run(
            app="main:create_app",
            host=settings.SERVER_HOST,
            port=settings.SERVER_PORT,
            reload=env.value == EnvironmentEnum.DEV.value,
            factory=True,
            log_config=None,
        )
    finally:
        from app.core.logger import cleanup_logging

        cleanup_logging()

这段代码本质上是一个启动控制器,负责确定运行环境、加载配置、初始化日志,再把真正运行 Web 服务的工作交给 Uvicorn。它不是 FastAPI 接口本身,而是整个后端应用的启动入口。

DEV 开发模式
python main.py run --env=dev


- 设置 ENVIRONMENT=dev。
- 加载开发环境配置。
- 启用 Uvicorn 自动重载。
- 方便开发时修改代码、观察运行结果
。



PROD 生产模式
python main.py run --env=prod


- 设置 ENVIRONMENT=prod。
- 加载生产环境配置。
- 关闭 Uvicorn 自动重载。
- 更适合正式部署,但仍需要正确配置安全、日志和进程管理。
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 6 小时前 | 显示全部楼层
崎山小鹿
6 小时前 看全部
cd ../frontend/web && pnpm install && pnpm run dev
这条命令的作用是:进入前端项目目录,安装前端依赖,然后启动前端开发服务器。

1.这里的 && 表示:前一条命令成功后,才执行下一条命令。
如果目录切换失败,后续两条命令不会执行;如果依赖安装失败,也不会继续启动开发服务器。

pnpm install 和 pnpm run dev,需要读取当前目录中的 package.json 等前端项目配置文件。

2. pnpm install:安装前端依赖
pnpm 是一个 JavaScript / TypeScript 项目的包管理工具,类似于 npm 和 yarn。
pnpm install


这条命令会根据项目配置安装运行或开发所需要的依赖包。

例如,前端项目可能依赖:
依赖类型        常见技术        主要用途
前端框架        Vue        构建网页界面
开发服务器        Vite        启动本地开发服务
UI 组件库        Element Plus        提供表格、按钮、弹窗等组件
路由        Vue Router        管理页面跳转
状态管理        Pinia        管理登录状态和共享数据
HTTP 请求        Axios        调用后端 API

实际使用哪些依赖,需要查看项目的 package.json。

3. pnpm run dev:启动前端开发服务器
这是整条命令中真正启动前端服务的部分。
pnpm run dev

它的含义是:执行 package.json 中 scripts 字段下的 dev 脚本。
例如:
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  }
}

那么:
pnpm run dev

实际上就相当于运行:
vite


如果项目使用 Vite,通常会启动一个本地开发服务器。
启动后会发生什么?
- 前端程序被加载到开发服务器中。
- 浏览器可以访问前端网页。
- 修改 Vue、TypeScript、CSS 等文件后,页面通常可以自动更新。
- 前端可以通过配置的 API 地址请求后端服务。

Vite 最重要的三个功能
1. 启动开发服务器
在前端项目目录执行:
pnpm run dev


假设 package.json 中有:
{
  "scripts": {
    "dev": "vite"
  }
}


那么 pnpm run dev 就会调用 Vite,启动开发服务器。

终端可能显示:
VITE ready

Local: http://localhost:5180/


此时打开浏览器访问该地址,就可以查看前端页面。

注意:实际端口取决于 vite.config.ts 和终端输出,不一定是 5180。
2. 热更新(HMR)
HMR 是 Hot Module Replacement 的缩写,中文通常叫热模块替换。

例如:
1. 打开用户管理页面。
2. 修改标题,从“用户管理”改成“系统用户管理”。
3. 保存文件。
4. Vite 通知浏览器更新相关模块。
通常不需要你手动停止并重新启动开发服务器,页面就能反映修改结果。

这对开发 Vue、TypeScript 和 CSS 页面非常方便。
3. 构建正式发布文件
开发完成后,通常执行:
pnpm run build


假设 package.json 中配置了:
{
  "scripts": {
    "build": "vite build"
  }
}


Vite 就会执行生产构建,将前端代码处理成适合部署的静态资源,通常输出到 dist 目录。

例如:
dist/
├── index.html
└── assets/
    ├── index-xxxx.js
    └── index-xxxx.css


这些文件可以部署到 Nginx 或其他静态文件服务器上。
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:17 | 回复:1

  • FASTAPI的菜单管理之新增菜单

    点击编辑按钮: 点击新增: 父级菜单 菜单名称 最后收益详情 菜单标题 最后收益详

    阅读:159|2026-10-22
  • 分析验证双耳节拍的存在

    验证方法是: 读取 piano_binaural_10hz.wav 截取中间一段,例如 10 秒附近的 2 秒

    阅读:1318|2026-08-26
  • 不同的乐器他们的频谱有什么不同mp3

    使用 FFmpeg 1. 安装 Python 库 pip install numpy soundfile matplotlib 同时电脑需

    阅读:1055|2026-08-26
  • USBTreeView

    Windows的设备管理器中可以查看USB设备的信息: 驱动程序供应商:FTDI, 数字签名者:

    阅读:2973|2026-05-23
  • 电子电路仿真网站

    https://velxio.dev/ Arduino、ESP32 和 Raspberry Pi。 直接在您的浏览器中即可使

    阅读:3195|2026-05-19
  • ESP32 板子为什么识别为 CP2102

    你的ESP32开发板被电脑识别为“CP2102”,这并不是一个错误,而是完全正常的现象。这

    阅读:3705|2026-05-09
  • 固件如何加密

    做固件加密,本质上是防止别人读取或复制你的程序。常见做法分为“芯片级保护 + 软件

    阅读:3624|2026-04-06
  • 高端神经反馈脑波检测系统

    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序

    阅读:17|2026-01-06
  • 国内第三方量化平台有哪些有什么特点

    好的,我们来详细了解一下国内主流的第三方量化平台。这些平台极大地降低了个人投资者

    阅读:5819|2025-12-09
  • 为什么脑波要去除伪迹

    1. 伪迹不是大脑信号 EEG设备记录的是头皮上非常微弱的电位变化(微伏级别,μV)。

    阅读:24|2025-12-05
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2026 Discuz! Team.
快速回复 返回顶部 返回列表