- 前端
- UI组件
【免费下载链接】formily
📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3
本篇技术指南以 Formily 官网首页文档 docs/index.md 为核心脉络,系统梳理这一"阿里巴巴统一前端表单解决方案"的定位、三大核心特性(更易用、更高效、更专业)及其在 packages/ 多包仓库中的落地形态。读完本文,你将理解 Formily 的分层架构(纯净内核 + UI 桥接 + 组件库)、"傻瓜写法 + 超高性能"的实现原理、Form Builder 低代码搭建能力,并能从源码与配置层面定位每一项官方承诺的对应实现,快速进入 快速开始 上手实战。
一、文档定位:官网首页即方案宣言
docs/index.md 是 Formily 官网的首页源码,采用 dumi 的 FrontMatter + 内联 TSX 组件格式编写(仓库根目录 package.json 中build:docs即通过dumi build构建文档站点)。FrontMatter 中直接定义了本项目的最高层自我定位:
- title: Formily - Alibaba unified front-end form solution(阿里巴巴统一前端表单解决方案)
- hero.desc: 统一前端表单解决方案
- features(三大特性):
- 更易用(Easier to Use):开箱即用,案例丰富
- 更高效(More Efficient):傻瓜写法,超高性能
- 更专业(More Professional):完备,灵活,优雅
- footer: Open-source MIT Licensed | Copyright © 2019-present
这组关键词正是贯穿整个仓库的设计纲领。首页页面主体的五个内联 React 区块(inline: true模式直接渲染进首页)分别对应五条价值主张,本文后续将逐一展开,并结合源码给出依据。
二、三大核心特性:从宣言到仓库落地
1. 更易用:开箱即用,案例丰富
"开箱即用"在仓库中的直接体现是:Formily 在业界组件库之上预封装了一套表单场景组件。以 packages/antd/(packages/next/、packages/element/ 同理)为例,其 src/ 下拥有array-cards、array-table、editable、form-dialog、form-drawer、form-step、form-tab、preview-text、select-table、upload等三十余个场景化组件目录,覆盖了普通组件库在表单场景下的空白(如详情预览态、拖拽排序、表格嵌套等)。
"案例丰富"则由仓库内的文档与演示体系支撑:
- packages/antd/docs/components/ 下每个组件都有独立的中英文 Markdown 文档;
- packages/element/docs/demos/guide/ 内含 98 个可直接运行的
.vue演示示例; - 首页使用 CodeSandbox 内嵌示例(见
docs/index.md第一个区块),让访问者无需搭建环境即可体验"傻瓜写法"。
2. 更高效:傻瓜写法,超高性能
这是 Formily 最核心的技术主张,官方首页甚至单独开辟了一个整页区块(Fool Writing, Ultra-high Performance)。其原理可从 packages/core/docs/index.zh-CN.md 找到官方解释:借助@formily/reactive,内核天然获得依赖追踪、高效更新、按需渲染的能力——"不管是字段频繁输入,还是字段联动,都能带来 O(1) 的性能体验,开发者无需关心性能优化"。
"傻瓜写法"的含义是:表单的响应式更新、校验、联动全部由框架接管,开发者只需声明字段。从 README.md 的背景说明可知,这一设计直击 React 受控模式下表单整树渲染的性能痛点——通过将每个表单字段的状态分布式管理(fields managed independently, rather rerender the whole tree),从根本上规避了联动场景的页面卡顿。
仓库中的独立包 packages/reactive/(README 自述 "Web Reactive Library Like Mobx")就是该能力的底层引擎,其 src/ 下包含observable、autorun、reaction、tracker、batch、action、untracked等完整响应式原语;packages/reactive-react/ 与 packages/reactive-vue/ 则分别将响应式引擎桥接到 React 与 Vue 的渲染体系。
3. 更专业:完备,灵活,优雅
"专业"体现在内核领域模型的完备性上。packages/core/docs/guide/index.zh-CN.md 将表单问题分解为四大领域问题:数据管理、字段管理、校验管理、联动管理,并逐一在领域模型层解决。从源码看,packages/core/src/models/ 下对应实现为:
| 领域问题 | 模型类 | 职责(从源码结构推断) |
|---|---|---|
| 数据管理 | Form(Form.ts) | 表单整体状态、值管理与生命周期 |
| 字段管理 | Field/ArrayField/ObjectField/VoidField(Field.ts、ArrayField.ts、ObjectField.ts、VoidField.ts) | 各类字段的差异化行为 |
| 基础抽象 | BaseField/Graph/Heart(BaseField.ts、Graph.ts、Heart.ts) | 字段公共逻辑、字段图与生命周期心跳 |
| 联动管理 | Query/LifeCycle(Query.ts、LifeCycle.ts) | 字段查询与副作用编排 |
"灵活优雅"则体现在 UI 无关的架构——@formily/core作为独立包将领域模型从 UI 框架中抽离,使同一套模型可以跨 React/Vue/Angular 复用。同时官网首页与 core 文档都强调其完全 TypeScript 实现带来的智能提示体验,以及通过 devtools/chrome-extension/(Formily DevTools)实现的状态可观测调试能力。
三、分层架构:纯净内核 + UI 桥接 + 组件库
首页第四个区块的标题是"Pure Core, More Extensibility"(纯净内核,更易扩展),这对应仓库实际的分层结构。结合 README.md 与packages/目录组织,Formily 的软件分层可归纳为:
第一层:领域内核(UI 无关)
- packages/core/:表单状态、字段模型、校验、联动、生命周期管理;
- packages/reactive/:响应式依赖追踪引擎;
- packages/json-schema/:JSON Schema 协议编译,支持后端驱动渲染(README 所述 "JSON Schema applied for BackEnd");
- packages/path/、packages/shared/、packages/validator/:路径解析、工具函数、独立校验器。
第二层:UI 桥接库
- packages/react/(
@formily/react)与 packages/vue/(@formily/vue):把内核状态桥接为 React/Vue 组件与 hooks,真正实现"跨终端、跨框架"; - packages/reactive-react/ 与 packages/reactive-vue/:提供
observer等响应式渲染能力。
第三层:组件库封装(开箱即用)
- packages/antd/(
@formily/antd)、packages/next/(@formily/next,基于 Alibaba Fusion)、packages/element/(Element 系,Vue 场景):在业界组件库之上补充表单场景组件与样式主题,保证"开箱即用"。
这种分层正是"纯净内核,更易扩展"的工程表达:内核只关心领域逻辑,框架适配与 UI 呈现全部通过独立包接入,开发者甚至可以用@formily/core直接手写自己的桥接层(packages/core/docs/index.zh-CN.md 的快速开始案例展示了仅用 core + reactive-react 从零实现 Form/Field/FormItem 的完整过程)。
四、首页五大区块逐一解读
1. 傻瓜写法,超高性能(内嵌 CodeSandbox 演示)
首页第一区块内嵌了完整的可运行表单演示,展示"傻瓜写法"的实际观感:声明式字段 + 响应式联动,即可获得高性能表单。若想用最小依赖复现这一体验,可参考 docs/guide/quick-start.zh-CN.md 的安装步骤:
# 内核库(必装):负责表单状态、校验、联动 $ npm install --save @formily/core # UI 桥接库(按框架选择) $ npm install --save @formily/react # React 用户 $ npm install --save @formily/vue # Vue 用户 # 组件库(按生态选择,开箱即用) $ npm install --save antd moment @formily/antd # Ant Design 用户 $ npm install --save @alifd/next moment @formily/next # Alibaba Fusion 用户安装后通过createForm创建表单实例,配合FormProvider注入上下文,再用Field声明字段即可(完整可运行示例见 packages/core/docs/index.zh-CN.md 的快速开始部分)。
2. 拖拽搭建,高效开发(Form Builder)
首页第二区块(Form Builder, Efficient Development)展示了基于 Formily 的拖拽式表单搭建器能力,指向designable-antd可视化平台。仓库中的相关佐证包括:README 特性列表首条 "Designable, You can quickly develop forms at low cost through Form Builder"(README.md),以及 docs/guide/form-builder.zh-CN.md 提供了 Form Builder 的接入与使用指南。对于需要低代码/中后台场景的团队,这意味着可以"搭建出 JSON Schema → 交给 Formily 渲染"的完整链路。
3. 纯净内核,更易扩展
第三区块强调内核独立性,对应本文第三节的分层架构,此处不再赘述;其价值主张是:以@formily/core为唯一的领域核心,任何 UI 框架、任何终端都可以平等接入。
4. 社区活跃,能者众多(Contributors)
第四区块(Active Community & Genius People)渲染贡献者列表。其实现位于 docs/site/Contributors.tsx:组件挂载后fetch一个 netlify functions 接口获取贡献者数据并渲染头像列表。该接口的对应服务端实现就在仓库内——docs/functions/contributors.ts,说明首页的贡献者展示完全由仓库自身的前后端代码闭环支撑,也体现了"活跃社区 + 持续共建"的工程文化。
5. 全球互助共建答疑大群(QrCode)
第五区块(High-Quality Community Group)通过 docs/site/QrCode.tsx 中的QrCode/QrCodeGroup组件渲染交流群二维码,属于社区入口展示。从代码实现看,QrCode组件接收title与link两个 props,将图片与标题渲染为带样式的区块,是典型的首页运营位。
五、首页自身的工程化实现
值得一提的是,首页本身就是一个值得借鉴的 dumi 站点工程示例:
- 五个展示区块全部以
inline: true的 TSX 代码块形式内联进首页,由 dumi 直接编译渲染; - 复用了 docs/site/ 下的自定义组件:
Section(Section.tsx,提供title/style/titleStyle/scale四个 props,scale用于对区块内容做整体缩放)、Contributors、QrCode,样式分散在Section.less、Contributors.less、QrCode.less与全局 styles.less; - 文档站构建脚本为
dumi build(package.json),全仓库文档通过 Lerna + Yarn Workspaces 管理(lerna.json、package.json)。
六、上手路径建议
综合本文梳理的官方文档脉络,建议的进阶路线如下:
- 快速开始:docs/guide/quick-start.zh-CN.md 提供完整的安装、导入与首个表单用例;
- 内核原理:阅读 packages/core/docs/guide/index.zh-CN.md(UI 无关、超高性能、领域模型、智能提示、状态可观测五大主题)与 packages/core/src/models/ 源码;
- 进阶能力:按需查阅 docs/guide/advanced/ 下的联动(linkages)、校验(validate)、异步(async)、受控(controlled)、自定义组件(custom)等专题;
- 场景模板:docs/guide/scenes/ 提供登录注册、查询列表、分步表单、弹窗抽屉、编辑详情等中后台高频场景的最佳实践文档与可运行示例;
- JSON Schema:若需后端驱动渲染,深入学习 packages/json-schema/ 的协议编译能力。
结语
docs/index.md 虽只是一页首页文档,却是理解整个 Formily 项目的最短路径:三大特性(易用/高效/专业)定义了设计目标,五大区块对应"傻瓜写法、拖拽搭建、纯净内核、活跃社区"四大价值支柱。将首页宣言与packages/的多包结构、docs/的中英文文档体系、devtools/的调试工具相互印证,你就能在动手写第一行表单代码之前,先建立起对这套"统一前端表单解决方案"的完整心智模型。
- 前端
- UI组件
【免费下载链接】formily
📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3
相关推荐
Formily:阿里巴巴开源的高性能表单解决方案全面解析
Formily:阿里巴巴开源的高性能表单解决方案全面解析 Formily是阿里巴巴开源的高性能表单解决方案,专为解决现代前端开发中复杂表单处理的痛点而设计。本文
前端UI组件探索高效表单解决方案:Formily - 阿里巴巴的高性能JSON Schema驱动的React表单库
探索高效表单解决方案:Formily 阿里巴巴的高性能JSON Schema驱动的React表单库 在React开发中,尤其是在复杂的数据联动场景下,受控模式的
前端UI组件【免费下载】 推荐开源项目:阿里巴巴Formily - 高效动态表单构建解决方案
推荐开源项目:阿里巴巴Formily 高效动态表单构建解决方案 ! https://img.shields.io/npm/v/@formily/core?lab
前端UI组件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考