Known 是基于 Blazor 原生能力构建的 Razor 类库 + 应用框架:同一份 razor 代码能跑成浏览器、桌面或一体服务;112 个组件全部自研、零外部 UI 库依赖;启动装配只需一次调用就把组件、模块、菜单、数据层、鉴权全部串起来。
它想解决什么问题
做后台管理系统、工业现场终端、内部工具的同学都会碰到同一堆重复劳动:登录、菜单、表格分页、表单校验、主题切换、多语言、深浅色、离线部署、桌面打包。传统做法要么"框架 + 一堆第三方 UI + 一堆 npm 包"的组合,要么每个项目从头攒一遍。Known 把这一整套沉到框架里,让业务代码只写差异。
能力全景
Known 的公开面大致分成七块,每一块都对应文档里的一节:
- 组件库(112 个):基础、布局、表单、数据展示、反馈、媒体、设备、页面、AI 九大类,都继承同一个
BaseComponent。见组件通用约定与顶级菜单组件。 - 应用装配:
AddKnown/AddKnownClient/AddKnownWeb/AddKnownDesktop四个入口,加上你业务插件里自封装的AddMyApp(AppType)。见应用装配。 - 模块与插件式装配:
Config.AddModule<T>()一次反射扫[WebApi][Service][Menu][AppMenu][Table],把整个程序集接进路由与元模型。见模块与插件式装配。 - 前后端契约:一份
[WebApi]接口,客户端ServiceProxy<T>发 HTTP,服务端AddKnownWeb摊成 Minimal API 端点;桌面AddKnownDesktop直接绑本地实现。见前后端契约。 - 数据层:
Database+DatabaseOption提供 ADO.NET 抽象与八种方言(SQLite / SQL Server / MySQL / PostgreSQL / Oracle / DM / Access),不锁 ORM、可自己接 EF/Dapper。见数据层与 Database 契约。 - 鉴权与身份:
IAuthProvider统一"当前用户 + 菜单/Tab/顶栏显隐",Cookie 面向人、Bearer 面向机器两条路线。见鉴权与身份。 - 运行时 Schema 渲染(默认路径,预览):一份
*.schema.json描述实体(含enum下拉、ref外键、children一对多子表)+ 页面(blocks所见即所发区块树,或views+layout声明式)+menu导航树,SchemaRegistry在运行时直接把它渲染成能用的页面、非破坏性建表、/runtime/{Key}先页后实体分派、侧栏自动装配——不生成任何.razor,你要写的只剩后端[Hook]钩子。当某页确实要脱离 Schema、把代码拿到手长期维护时,再走可选的代码生成 Eject。见运行时 Schema 渲染。
另外框架自带主题与深浅色、多语言、密度、控件强调色、PWA 与桌面宿主等横切能力。想让 Claude / QoderWork 等 AI 编码智能体按上面这些约定直接帮你写出能编译的 Known 代码,可装上随文档站发布的 AI 智能体技能(Agent Skill)。
前置知识
Known 面向已经会 C# + Blazor 基础的开发者:
- C# 泛型、异步
Task、扩展方法、特性(Attribute)。 - Blazor 组件、
@page路由、[Parameter]/[Inject]/EventCallback。 - Razor 语法与
.razor文件的组织方式。
如果你只会前端框架(Vue/React)而不熟 Blazor,先照着 五分钟跑起来 跑一遍——Known 的抽象层足够薄,跟着样例抄一遍比啃文档更快。
开源仓库分工
Apache-2.0 授权,仓库在 gitee.com/known/Known。目录一眼看懂:
| 项目 | 角色 | 一句话说明 |
|---|---|---|
Known |
核心 RCL | Razor 类库:组件、装配入口、数据层、鉴权、本地化、图标、App.razor。所有其它工程都引用它 |
KnownApp |
业务插件示例 | 一个"订单 + 组件示例"的示范应用;AppConfig.cs 里的 AddKnownApp(AppType) 演示"业务插件自封装装配入口"的推荐写法 |
KnownWasm |
纯前端宿主 | Microsoft.NET.Sdk.BlazorWebAssembly,只出静态站;接口打外部 API |
KnownWeb |
全栈一体宿主 | Microsoft.NET.Sdk.Web,同进程 serve WASM 客户端 + 挂 [WebApi] 端点 + Cookie 鉴权 + SQLite |
KnownWin |
桌面宿主 | Microsoft.NET.Sdk.Razor + WinForms BlazorWebView,接口进程内直调,本地 SQLite |
Known.Cli / Known.CodeGen |
命令行脚手架 | 项目初始化与代码骨架生成;用 known new 一键建项目,见五分钟跑起来 |
Known.Demo |
在线示例 | 组件 菜单里每页"能改能跑"卡片背后的示例集 |
你将学到
跟着这套文档走完,你会知道:
- 怎么把 Known 装进任意 Blazor 项目 —— 五分钟跑起来
- 一个刚跑起来的 Known 项目长什么样、每个目录谁负责什么 —— 项目结构导览
- 三种运行形态(WASM / Server / Hybrid)分别怎么选、怎么装 —— 三种运行形态
- 组件的通用参数、
Value / ValueChanged双向绑定、UIService全局消息 —— 组件通用约定 - 一个业务模块(页面 + 服务 + 数据 + 菜单)怎么被一次反射扫进路由 —— 模块与插件式装配
- 标准 CRUD 如何一行页面代码都不写——一份 JSON Schema 换来页面、菜单、建表与增删改查,你只写后端钩子 —— 运行时 Schema 渲染
- 前后端接口怎么只写一份就同时充当 HTTP 契约与进程内直调 —— 前后端契约
- 数据库怎么挂进 DI、
Database提供哪些方法、Result/PagingResult长什么样 —— 数据层与 Database 契约
许可与社区
框架 Apache-2.0,永久无功能墙。另有一条独立闭源的产品化服务线(托管运营、团队协作、SSO 等配套)与本仓库平行,代码不共享。Bug / 建议:Gitee Issue / PR;产品问题:联系我们。
下一步
先看一屏能背下来的东西:五分钟跑起来——把 Known 装进任意 Blazor 项目、跑通第一个页面。
扫码关注公众号
扫码加入 QQ 群