上下文
page、layout、组件、layer、shard、procedure 拿到的都是同一个东西:&Cx。它在 topcoat-core 里,是整个框架共享状态的唯一通道,没有 axum 那样的提取器。这一部分只有一章:
- Cx、AppContext 与 memoize:
Cx的两层Arc、with/with_many怎么派生子作用域、取不到值时的 panic 原文;#[memoize]展开成什么,缓存键是闭包类型加参数的 128 位哈希,三个组件并发调用只查一次库(实测 108 毫秒),按BindingId跟踪依赖,同参数递归直接 panic;Error为什么是Arc,0.10.0 里memoize(as_ref)的结果不能直接?;「函数,而不是中间件」的写法与代价。
flowchart TB router["02 router:handle_inner 为每个请求新建 Cx"] --> cx["Cx:AppContext + RequestContext + Identity"] cx --> memo["#[memoize]:请求级缓存"] memo --> auth["current_user、require_auth:函数,而不是中间件"] cx --> view["04 view:组件拿到派生的 Cx"]
💬 关联讨论
发起讨论加载中...