Ant Design + Electron 桌面应用搭建指南:从登录页到分发上架
【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/GitHub_Trending/an/ant-design
给团队的内部工具套一层桌面壳,是 Electron 最常见的落地场景之一。这篇指南带你走完整条链路:用 Ant Design 加 Electron 把内部浏览器工具改成桌面应用,先做出一个带登录页、带品牌配色的最小界面,再把它打成可分发的安装包。读完你能独立搭出一个可运行的 React 桌面应用脚手架,并知道打包和性能环节的常规处理办法。
从一个具体场景说起
假设内部工具有个登录页:品牌色的主按钮、两个带校验的输入框、一行报错提示。网页版已经有了,现在你要把它变成桌面应用,要求打开有原生窗口、交互风格统一、最后能发给 Windows 和 macOS 的同事。
按这个顺序推进:先装好环境跑通一个空壳,再把登录表单、按钮、主题三个高频场景逐个落进去,最后处理打包分发和性能。每一步都只解决一个问题,不提前展开。
选型:为什么是这两个组合
先看 Ant Design 这一侧。它是企业级设计语言加 React 组件库,按钮间距、字号、颜色都有统一规范。桌面工具里大量是表单、表格、弹窗这类"标准件",用现成组件能省掉一轮"看起来可以、细节再调"的返工。组件文档里每个 API 都配了可运行的 demo,改参数就能看效果。
再看 Electron 这一侧。它本质是把 Chromium 和 Node.js 打进一个进程,让你直接用 Web 技术写界面,同时能调用系统菜单、文件对话框、原生通知。对内部工具来说,"跨平台"和"能访问本地资源"这两个能力就够用了。
取舍也要说清楚:Electron 会额外占用内存,如果你的工具只是套壳网页,浏览器加书签可能更划算。选它的理由通常是——团队已经会 React 和 TypeScript,再学一套原生技术栈的代价更高。
最短路径跑通一个应用
先准备 Node.js 环境,然后把 Ant Design 仓库克隆到本地,写代码时随时对照文档和 demo:
git clone https://gitcode.com/GitHub_Trending/an/ant-design cd my-antd-electron && npm install antd第一条命令拿到的是文档仓库,用来查 API 和示例;第二条把组件库装进你自己的 Electron 项目。Electron 项目可以用官方脚手架生成,也可以用 electron-vite、electron-forge 等模板,差别不大,关键是先跑起来。
主进程里建一个 BrowserWindow 加载本地页面,渲染进程里写最小界面:
import { Button, Space } from 'antd'; export default () => ( <Space> <Button type="primary">主要操作</Button> <Button>次要操作</Button> </Space> );Space负责按钮之间的间距。窗口里出现两个样式正确的按钮,就说明环境通了,接下来再往里面填功能。
高频场景拆解
下面三个场景覆盖了桌面工具界面的大部分工作量,都按"先配置、后看效果"的方式写。
登录表单:Form 与校验规则
登录页的核心是 Form 组件的三项配置:字段名、校验规则、提交回调。贴全量代码没有意义,核心就这三行:
<Form onFinish={onFinish}> <Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]}> <Input /> </Form.Item> </Form>密码框换成Input.Password,提交按钮用htmlType="submit"交给表单触发。onFinish只在所有校验通过后才会被调用,报错提示由组件自己渲染,你不用手写状态。完整的登录页写法在 Form 文档的 demo 里直接抄。
操作按钮:类型与加载态
按钮场景集中在表格行操作和表单底部。主操作用type="primary",其余降级为默认或文本按钮;提交请求期间加上loading属性防止重复点击。图标放icon属性里,不直接塞进 children。各种组合(幽灵按钮、危险按钮、按钮组)在 Button 文档都有现成 demo,按场景对号入座即可。
Ant Design 主题定制配置
品牌配色不需要改组件内部样式。在应用根部放一个ConfigProvider,通过theme.token覆盖全局 token:
<ConfigProvider theme={{ token: { colorPrimary: '#1f6feb', borderRadius: 6 } }}> <App /> </ConfigProvider>colorPrimary决定按钮、链接、选中态的主色,borderRadius统一圆角。所有组件读同一套 token,改一处全局生效。要切换暗色模式,把algorithm换成暗色算法即可,具体 token 含义参考 主题定制文档。
坑点与性能:遇到问题时查这里
Electron 打包步骤
开发完成后用 electron-builder 出包。在 Electron 项目的package.json里配置各平台的构建目标(Windows 用 nsis、macOS 用 dmg、Linux 用 AppImage),然后运行npm run build加对应平台的 dist 命令。产物里是带安装器的可执行程序,直接发给同事就行。注意files字段只保留运行必需的文件,开发依赖不要带进去。
组件按需加载
桌面端的包体直接决定启动速度。Ant Design 5.x 是 ESM 模块,打包器(webpack、vite)默认就能做 tree-shaking:你import { Button } from 'antd',没用的组件不会进产物。旧项目如果全量引入了整包样式,按 Tree Shaking 说明 检查一遍打包配置。
启动慢、内存高怎么办
启动慢先查包体:打开开发者工具的 source map,看最大的几个 chunk 是什么,然后把不常用的页面改成路由级懒加载。内存高常见于表格一次性渲染几千行,给 Table 开虚拟滚动,再配合app.commandLine限制并行渲染进程,通常能压回正常水平。
接下来可以做的三件事
- 翻一遍 主题定制文档,把
algorithm换成暗色算法,做出夜间模式。 - 跑一次按平台的打包命令,拿到 Windows 和 macOS 两个产物,发到同事机器上验证。
- 把登录页接上真实校验和记住密码,对照 Form 文档 的异步校验 demo 改。
【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/GitHub_Trending/an/ant-design
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考