{摘要}:

从发布的最新那份《开发者生态系统调查报告》出发, 再结合Stack的年度趋势数据来看, Web领域的格局于2024年到2025年这个时间段内出现了变化。

增长率处于断层式的第一位置, 已然超过了Flask, 进而成为众多新项目的优先选择对象, 尤其是在有着AI/LLM应用落地的场景当中, 其市场占有率急剧飙升, 甚至达到了30%以上了。

Flask, 尽管其份额遭受挤压, 不过依靠着数量庞大的存量项目, 以及那些奉行极简主义、死心塌地且忠诚度极高的粉丝群体, 依旧牢固地占据着前三的位置, 所占比例大约会是 29%。

身为“老牌守门员”, 其仍维持着约 35%的稳定份额, 于企业级单体应用里难以被撼动。

一、 :重装甲车的“降维打击”

优点:

1、有一种全家桶体验, ORM、用户认证、Admin 后台、表单验证、中间件, 官方都已为你编写妥当。你没必要去找几十个第三方库, 以拼凑出一个系统。

2、具备安全性, 默认情况下会防御 SQL 注入, 防御 CSRF, 防御 XSS, 新手所编写写出的代码一般通常而言也不会太过离谱。

3、生态稳定性方面, 有着十年的技术积累,文档详尽程度达到了令人发指的地步, 几乎所有的坑都已经被前辈踩平了。

4、 极为强悍的所在之处是 admin, 仅仅需求几行代码, 便能够生成一个可以使用的 CRUD 后台。

# models.py
from django.db import models
class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
# admin.py
from django.contrib import admin
from .models import Product
# 这一行代码,直接送你一个带搜索、分页、权限控制的后台
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price')

缺点:

1、繁重:引入 意味着引入了一套庞大的规范。

2、尽管 它指出 5.0+ 已然 对 异步(Async)予以支持, 然而 它 却受制于 规模庞大的 同步生态(特别是 ORM), 所以 异步性能 以及 开发体验 仍旧是 比不上 原生的那般 毫无阻碍。

二、 Flask:极客手中的“乐高积木”

优点:

1、高度灵活: 倘若你打算选用SQL, 还是怎样? 要是想用, 还是选择Mako呢? Flask并未有任何干涉之处。此对于那些需求深度定制架构的高级人士而言乃人间乐土。

FastAPI 优势与缺点分析_Python Django ORM_Python Web 框架选择 FastAPI Flask Django

2、简单直接, 核心代码数量极其少, 特别适宜用于阅读源码来学习 Web 原理。

3、冷启动快:非常适合 函数计算(如 AWS )场景。

4、身为 Web 框架内极简存在的标杆, 是 Flask 的 Hello World。

from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/data')
def get_data():
    # 需要手动处理序列化,或者引入 Marshmallow
    return jsonify({"status": "active", "engine": "flask"})
if __name__ == '__main__':
    app.run()

缺点:

1、组装成本方面, 要打造一个完整的系统的话, 你得自行去配置 ORM, 还要亲手配置迁移工具, 并且得自己配置序列化库, 同时还需要亲手来配置 Auth 模块。

2、因项目规模变大, app 对象导入导出易引发循环引用噩梦, 不少 Flask 新手因此被劝退。

三、 :AI 时代的“版本之子”

优点:

1、原生异步, 它是基于某些特定的东西, 并且还和另外一些相关, 它天生就对async/await有着支持, 在那种I/O密集型的任务当中, 比如说请求大模型接口这种情况, 它的吞吐量能够把传统框架狠狠地比下去, 是吊打传统框架的那种。

2、自动生成文档, 代码写完后, UI 文档随之自动生成。针对前后端分离的团队而言, 如此这般能够节省 50% 的沟通成本。

3、数据校验, 借助其, 有关请求参数的类型校验会于运行之际自主促成完成, 不合法的那些数据是无法步入业务相关逻辑环节的。

4、需留意代码里的类型注解, 它不单单是注释, 还是运行时的校验逻辑。

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None
# 原生支持异步
@app.post("/items/")
async def create_item(item: Item):
    # IDE 能智能补全 item.name,开发体验极佳
    return {"item_name": item.name, "item_price": item.price}

缺点:

1、版本迭代速度较快, 相较于那种稳定的情况而言, 它及其所依赖的库(就像某某库那样)更新的频率颇为频繁, 时不时地会出现某些状况。

2、缺乏像 那样统一的“官方推荐目录结构”。

对于刚进入这个行业的程序员而言, 优先做到炉火纯青的精通状态, 鉴于此乃未来有着增长潜力的市场;然而一定要透彻熟悉相关的 ORM 设计思想, 由于这属于 Web 开发的普遍适用的智慧结晶。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐