把 Flask 搬进 ESP32,高中生自研嵌入式 Web 框架 MicroFlask !
<p>uPyPi 仓库近日上架了一款由国内高中生独立开发的轻量级 Web 框架 ——<strong>MicroFlask</strong> 及其异步版本<strong>MicroFlask_Async</strong>。</p><p>这位高中生开发者在自学 Python Web 开发时,被 Flask 框架的简洁高效深深吸引。但当他尝试将自己的 Flask 小项目迁移到 ESP32 等 MicroPython 嵌入式设备时,却遇到了核心困境:</p>
<ul>
<li>现有 MicroPython Web 框架 API 与 Flask 完全脱节,原有代码需大幅重构,迁移成本极高;</li>
<li>部分框架资源占用大,不适合 ESP32 这类内存仅数百 KB 的资源受限设备;</li>
<li>缺乏灵活的扩展能力,无法满足嵌入式场景的个性化需求。</li>
</ul>
<p>抱着 “让更多人能在单片机上跑 Flask 代码” 的初衷,他利用课余时间,从零搭建了这套<strong>类 Flask 风格的 MicroPython Web 框架</strong>,并最终将其开源至 uPyPi 仓库。</p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211122011-1865045494.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211124073-1031630481.png"></p>
<h1 id="-什么是-microflask">✨ 什么是 MicroFlask?</h1>
<p>MicroFlask(含同步版 <code>microflask.py</code> 和异步版 MicroFlask_Async/<code>microflask_async.py</code>)是一套<strong>类 Flask 风格的轻量级 Web 框架</strong>,核心目标是提升 Flask 项目迁移效率和 Web 界面开发速度,以开放、可扩展为设计宗旨,优先适配 MicroPython(如 ESP32 等嵌入式设备),同时兼容 CPython 环境。</p>
<p>简单说,它是一个<strong>给 MicroPython(比如 ESP32 这种单片机)量身定做的类 Flask Web 框架</strong>。核心只有一个目标:让你之前写的 Flask 代码,几乎不用改,就能直接跑在嵌入式设备上!</p>
<p>核心特性 :</p>
<ul>
<li><strong>低迁移成本</strong>:API 设计、项目结构完全对齐 Flask,无需大幅修改原有 Flask 代码即可迁移;</li>
<li><strong>双环境兼容</strong>:同时支持 MicroPython(资源受限嵌入式场景)和 CPython(常规 Python 环境);</li>
<li><strong>轻量高效</strong>:专为资源受限环境设计,无冗余中间件(开发者认为嵌入式场景无需中间件);</li>
<li><strong>灵活扩展</strong>:模块化架构,支持自定义路由转换器、自定义模板引擎(提供 <code>TemplateEngine</code> 基类);</li>
<li><strong>双处理模式</strong>:同步 / 异步版本分离,满足不同场景的并发需求。</li>
</ul>
<table>
<thead>
<tr>
<th>功能模块</th>
<th>关键能力</th>
</tr>
</thead>
<tbody>
<tr>
<td>路由系统</td>
<td>基本路由、动态路由(支持 <code>int</code>/ 自定义类型)、HTTP 方法指定、自定义路由转换器(正则 / 参数 / 验证函数式);</td>
</tr>
<tr>
<td>请求处理</td>
<td>表单 / JSON 数据获取、简易文件上传(需自定义解析 <code>multipart/form-data</code>,限制 8KB 以内);</td>
</tr>
<tr>
<td>响应处理</td>
<td>自动 JSON 序列化(list/dict)、自定义状态码 / 响应头、重定向、<code>Response</code>/<code>make_response</code> 灵活操作;</td>
</tr>
<tr>
<td>模板渲染</td>
<td>支持 utemplate 库、自定义模板引擎,可设置默认引擎;</td>
</tr>
<tr>
<td>项目结构</td>
<td>沿用 Flask 的 <code>static</code>/<code>templates</code> 目录结构,支持自定义静态文件路径;</td>
</tr>
</tbody>
</table>
<h1 id="-上手有多简单给你看个例子">🚀 上手有多简单?给你看个例子</h1>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211120607-432869226.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211120115-1675989582.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211120976-1212131569.png"></p>
<h1 id="怎么安装">怎么安装:</h1>
<p>库的地址就在<code>upypi</code>上:https://upypi.net/<br>
搜索:<code>microflask</code></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211119293-686882501.png"></p>
<p>点击详情页 ,进入 复制 下载 指令即可:<br>
<img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211123070-1064220841.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211121829-1994427240.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2591203/202603/2591203-20260322211122687-725903420.png"></p><br><br>
来源:https://www.cnblogs.com/FreakEmbedded/p/19752739
頁:
[1]