ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

amis 接进 React 项目后,我少写了一半表单代码:一次老项目接入复盘

amis 接进 React 项目后,我少写了一半表单代码:一次老项目接入复盘 amis 接进 React 项目后我少写了一半表单代码一次老项目接入复盘【免费下载链接】amis前端低代码框架通过 JSON 配置就能生成各种页面。项目地址: https://gitcode.com/GitHub_Trending/am/amis产品把清单甩过来的那个下午产品经理给我发了条微信“这个版本加三个页面客户列表、权限配置表单、导出报表周五演示。”那天是周三我们组前端就我一个人。当晚我开工凌晨两点写完客户列表——表单、校验、分页、报错处理全是手搓。合上电脑那刻我突然想我为什么在反复写同一套 CRUD于是开始认真研究 amis React 集成想用低代码框架的 JSON 配置直接生成这些页面只在它干不了的细节处手写代码。动手之前先聊聊该不该动手。动鼠标之前先问自己三个问题如果你的项目是动画手势满天飞、设计稿要求像素级还原的 C 端产品那它大概率不需要这套东西游戏工作室和做影视化页面的团队请关掉这篇。如果你的项目是内部后台几十个页面由表单、表格、详情弹窗组成其中七成长得差不多那它值得试。如果你的团队前端就一两个人忙不过来后端还天天加字段改接口那更值得试——这正是 amis 低代码回本最快的场景。说白了这是笔交换你放弃“每一行代码自己写”的自由换来一套统一组件和配置生成页面的效率。真上手之后拿到的第一张截图一个纯 JSON 配置出来的表单弹窗没有一行手写组件代码聊完该不该上聊聊怎么上。我把 amis 塞进老项目的那次经历我先翻了项目现有的 webpack 配置发现只缺字体和静态资源的 loader加两条规则就完事。装依赖、配 loader、写个渲染壳三步收工比跑一遍单测还快。第一件正经事是引样式我刻意没写自己那套 resetimport { render as renderAmis } from amis; import amis/lib/themes/cxd.css; import amis/lib/helper.css;写这三行而不是别的是因为它内置的一百多个组件样式都收在这一个主题文件里自己再补一套只会互相打架。然后写渲染壳。schema 就像给施工队的设计图纸组件是照着图纸干活的工人。我一开始想把配置直接扔进去就完事结果卡在网络请求上amis 默认请求不带我们项目的鉴权头和拦截器直接让它发请求登录态全是散的。于是我给 fetcher 留了个口子把它理解成项目自己的快递代收点——所有对外请求先经代收点走一遍项目统一校验再放行renderAmis(schema, { data: { user } }, { theme: cxd, fetcher: async ({ url, method, data }) { const res await http.request(url, { method, data }); return res.data; } });这几行必须走项目自己的请求实例而不是裸用 axios原因是鉴权头、错误弹窗、重试逻辑全在旧实例里重写一遍等于给自己埋雷。壳子跑通后列表页真的半天交付了CRUD 就是一段 JSON字段拿不准就去查 Schema 字段参考docs/zh-CN/concepts/schema.md。集成本身不难难的是接进去之后。三个我被问烂的问题第一个关于样式。现象是接入后项目自己的按钮和 amis 组件线高对不齐像两套衣服混穿。我第一反应是以为遇到了 bug追了半天样式加载顺序一无所获。实际解法最外层套一个隔离 class把主题 css 的作用域圈在里面实在不搭的地方只覆写几个 CSS 变量。amis 样式冲突隔离这事提前做比事后救火便宜得多。第二个是 amis 和 Redux 状态怎么打通。现象是我想把 React 侧的用户权限读进表格又想把表格选中结果丢回 store。我第一反应是得写个桥接组件。实际解法简单得多把状态作为 data 传进 renderAmis 的第二个参数变了就重渲染反向用 ref 拿到实例调方法或者监听表单的 onEvent 拿提交结果。别问我怎么知道的我第一次就把它想复杂了其实这就是常规的传 props。第三个是 amis 自定义组件怎么注册。现象是产品要一个特定业务控件内置类型里没有。我第一反应是得 fork 仓库改源码。实际解法直接注册就行import { Renderer } from amis; Renderer({ type: biz-owner-picker })(OwnerPicker);注册完JSON 里写 type: biz-owner-picker 就能认出来。文档里还有更细的玩法比如用 render 方法渲染子节点docs/zh-CN/extend/custom-react.md。前面说的都是能干的下面说不能的。说几句不好听的这套组合有天花板交互一旦复杂JSON 配置反而比等量的 React 代码难读那时候低代码就变成“低可读性”。团队的隐性成本有三笔每个人都要学一遍这套配置词汇调试时组件层层套娃堆栈很难读主题和组件库绑定较深版本升级只能整包换。至于提效我不写表格一个项目里列表页平均交付时间砍了一半但没有五十个页面的样本不敢当定律。所以在你决定要不要让项目接入 amis 之前先想清楚你们项目里最该被 JSON 掉的是哪块【免费下载链接】amis前端低代码框架通过 JSON 配置就能生成各种页面。项目地址: https://gitcode.com/GitHub_Trending/am/amis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表