Mountaineer 项目教程
1. 项目介绍
Mountaineer 是一个为 Python 和 React 开发者设计的全栈 Web 框架。它旨在通过提供一系列开箱即用的功能,简化 Web 应用的开发流程。Mountaineer 特别强调开发者生产力,同时兼顾生产环境的速度。
主要特性
- 类型提示:从前端到后端再到数据库,全面支持类型提示。
- 客户端与服务器通信:轻松实现数据绑定和函数调用。
- 服务器端渲染:优化渲染以提高可访问性和 SEO。
- 静态分析:对网页进行强验证,确保链接有效性和数据访问。
- 无需 API 或 Node.js 服务器:直接服务于前端客户端。
2. 项目快速启动
安装依赖
首先,确保你已经安装了 pipx
:
pipx install create-mountaineer-app
创建新项目
使用 create-mountaineer-app
命令创建一个新项目:
pipx run create-mountaineer-app
在交互式提示中输入项目名称和其他配置选项:
Project name [my-project]: my_webapp
Author [Pierce Freeman <pierce@freeman.vc>] Default
Use poetry for dependency management [Yes] Yes
Create stub MVC files [Yes] Yes
Use Tailwind CSS [Yes] Yes
Add editor configuration [vscode] vscode
启动开发服务器
进入项目目录并启动开发服务器:
cd my_webapp
poetry run runserver
访问 http://127.0.0.1:5006
查看你的新 Web 应用。
3. 应用案例和最佳实践
创建一个简单的 Todo 列表
定义数据模型
在 my_webapp/models/todo.py
中定义 Todo 项的数据模型:
from mountaineer.database import SQLModel, Field
from uuid import UUID, uuid4
class TodoItem(SQLModel, table=True):
id: UUID = Field(default_factory=uuid4, primary_key=True)
description: str
completed: bool = False
更新索引文件
在 my_webapp/models/__init__.py
中导入 TodoItem:
from .todo import TodoItem # noqa: F401
启动数据库并创建表
使用 Docker Compose 启动数据库并创建表:
docker compose up -d
poetry run createdb
poetry run runserver
创建控制器
在 my_webapp/controllers/home.py
中创建控制器:
from mountaineer import sideeffect, ControllerBase, RenderBase
from mountaineer.database import DatabaseDependencies
from fastapi import Request, Depends
from mountaineer.database.session import AsyncSession
from sqlmodel import select
from my_webapp.models.todo import TodoItem
class HomeRender(RenderBase):
client_ip: str
todos: list[TodoItem]
class HomeController(ControllerBase):
url = "/"
view_path = "/app/home/page.tsx"
async def render(
self,
request: Request,
session: AsyncSession = Depends(DatabaseDependencies.get_db_session)
) -> HomeRender:
todos = (await session.exec(select(TodoItem))).all()
return HomeRender(
client_ip=(request.client.host if request.client else "unknown"),
todos=todos
)
4. 典型生态项目
相关项目
- FastAPI:Mountaineer 使用 FastAPI 作为其核心 Web 框架,提供了强大的异步处理能力。
- React:Mountaineer 的前端部分基于 React,提供了丰富的 UI 组件和交互功能。
- SQLModel:Mountaineer 使用 SQLModel 作为其数据库 ORM,简化了数据库操作。
通过这些生态项目的结合,Mountaineer 能够提供一个高效、易用的全栈开发环境。