Ant Design:企业级 UI 设计语言与 React 组件库

news/2025/10/18 14:18:53/文章来源:https://www.cnblogs.com/qife122/p/19149656

Ant Design

项目描述

Ant Design 是一套企业级的 UI 设计语言和 React 组件库,致力于提供高质量的设计规范和丰富的组件资源。该项目基于 TypeScript 开发,提供完整的类型定义,支持 React 16 到 19 版本,具有出色的国际化能力和可定制化主题功能。

功能特性

  • 丰富的组件库:提供超过 60 个高质量 React 组件,涵盖布局、导航、数据录入、数据展示、反馈等各类场景
  • TypeScript 支持:完整的 TypeScript 类型定义,提供优秀的开发体验
  • 国际化解决方案:内置多语言支持,轻松实现国际化需求
  • 可定制主题:支持 CSS 变量和设计令牌,方便进行主题定制
  • 企业级设计规范:遵循 Ant Design 设计语言,保证设计的一致性和专业性
  • 跨平台兼容:支持服务端渲染,兼容现代浏览器
  • 开发工具完善:提供完整的开发、构建、测试工具链

安装指南

环境要求

  • Node.js 版本 >= 16
  • React 16 ~ 19
  • 现代浏览器支持(Chrome 80+)

安装依赖

# 使用 npm 安装
npm install antd# 使用 yarn 安装
yarn add antd# 使用 pnpm 安装
pnpm add antd# 使用 Bun 安装
bun add antd

开发环境设置

# 克隆项目
git clone https://github.com/ant-design/ant-design.git# 安装依赖
npm install# 启动开发服务器
npm start# 运行测试
npm test# 构建项目
npm run build

使用说明

基础使用

import React from 'react';
import { Button, DatePicker } from 'antd';const App = () => (<><Button type="primary">主要按钮</Button><DatePicker /></>
);export default App;

国际化配置

import React from 'react';
import { ConfigProvider } from 'antd';
import zhCN from 'antd/locale/zh_CN';const App = () => (<ConfigProvider locale={zhCN}><YourApp /></ConfigProvider>
);

主题定制

import React from 'react';
import { ConfigProvider } from 'antd';const theme = {token: {colorPrimary: '#00b96b',},
};const App = () => (<ConfigProvider theme={theme}><YourApp /></ConfigProvider>
);

核心代码

组件样式管理

// components/style/index.ts
function pascalCase(name) {return name.charAt(0).toUpperCase() + name.slice(1).replace(/-(\w)/g, (m, n) => n.toUpperCase());
}// 自动导入组件样式
const req = require.context('./components', true, /^\.\/[^_][\w-]+\/style\/index\.tsx?$/);req.keys().forEach((mod) => {let v = req(mod);if (v?.default) {v = v.default;}const match = mod.match(/^\.\/([^_][\w-]+)\/index\.tsx?$/);if (match?.[1]) {if (match[1] === 'message' || match[1] === 'notification') {exports[match[1]] = v;} else {exports[pascalCase(match[1])] = v;}}
});

构建配置

// scripts/dist.config.js
function addLocales(config) {const newConfig = { ...config };let packageName = 'antd-with-locales';if (newConfig.entry['antd.min']) {packageName += '.min';}newConfig.entry[packageName] = './index-with-locales.js';newConfig.output.filename = '[name].js';return newConfig;
}function externalDayjs(config) {const newConfig = { ...config };newConfig.externals.dayjs = {root: 'dayjs',commonjs2: 'dayjs',commonjs: 'dayjs',amd: 'dayjs',};return newConfig;
}

图标系统

// site/theme/common/IconSearch/index.tsx
import React, { useCallback, useMemo, useState } from 'react';
import Icon, * as AntdIcons from '@ant-design/icons';export enum ThemeType {Filled = 'Filled',Outlined = 'Outlined',TwoTone = 'TwoTone',
}const IconSearch: React.FC = () => {const [displayState, setDisplayState] = useState({searchKey: '',theme: ThemeType.Outlined,});const handleSearchIcon = debounce((e: React.ChangeEvent<HTMLInputElement>) => {setDisplayState(prevState => ({ ...prevState, searchKey: e.target.value }));}, 300);const handleChangeTheme = useCallback((value: ThemeType) => {setDisplayState(prevState => ({ ...prevState, theme: value }));}, []);return (<div>{/* 图标搜索和展示逻辑 */}</div>);
};

演示组件包装器

// site/theme/common/DemoWrapper.tsx
import React, { Suspense } from 'react';
import { DumiDemo, DumiDemoGrid } from 'dumi';const DemoWrapper: typeof DumiDemoGrid = ({ items }) => {const { showDebug, setShowDebug } = React.useContext(DemoContext);const [expandAll, setExpandAll] = useLayoutState(false);const [enableCssVar, setEnableCssVar] = useLayoutState(true);const demos = React.useMemo(() =>items.reduce((acc, item) => {const { debug } = item.previewerProps;if (debug && !showDebug) return acc;return acc.concat({...item,previewerProps: {...item.previewerProps,expand: expandAll,debug: false,originDebug: debug,},});}, []),[expandAll, showDebug]);return (<div className="demo-wrapper"><ConfigProvider theme={{ cssVar: enableCssVar, hashed: !enableCssVar }}><DumiDemoGriditems={demos}demoRender={(item) => (<Suspense key={item.demo.id} fallback={<DemoFallback />}><DumiDemo {...item} /></Suspense>)}/></ConfigProvider></div>);
};

主题切换动画

// site/theme/common/hooks/useThemeAnimation.ts
const useThemeAnimation = () => {const {token: { colorBgElevated },} = theme.useToken();const toggleAnimationTheme = (event: React.MouseEvent<HTMLElement>, isDark: boolean) => {if (!(event && typeof document.startViewTransition === 'function')) return;const x = event.clientX;const y = event.clientY;const endRadius = Math.hypot(Math.max(x, innerWidth - x), Math.max(y, innerHeight - y));document.startViewTransition(async () => {// 等待主题变更完成while (colorBgElevated === animateRef.current.colorBgElevated) {await new Promise<void>(resolve => setTimeout(resolve, 1000 / 60));}const root = document.documentElement;root.classList.remove(isDark ? 'dark' : 'light');root.classList.add(isDark ? 'light' : 'dark');});};return toggleAnimationTheme;
};

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年最新推荐钢套钢保温钢管源头厂家榜:聚焦品质与实力,精选优质厂家助力采购决策

引言当前钢套钢保温钢管市场需求持续增长,但行业乱象仍未彻底改善。部分小型厂家为追求短期利益,使用劣质原材料、简化生产工艺,导致产品保温性能差、易腐蚀,不仅增加工程后期维护成本,还埋下安全隐患;同时,行业…

2025年10月市场地位认证机构推荐榜:尚普与华信人深度对比评测

一、引言 在品牌同质化加速、流量成本走高的当下,企业若想用“销量第一”“品类领导者”一类表述进行传播,必须先拿到一张能被市场监管、渠道伙伴、投资人同时认可的“市场地位认证”。对于市场总监、融资负责人、招…

2025年10月智能体公司推荐榜单:五强对比与中立评测助您精准选型

一、引言 在人工智能从“模型能力”走向“场景落地”的2025年,智能体公司已成为政企客户、系统集成商与创新型开发者共同关注的枢纽环节。对于需要把大模型能力快速嵌入业务流的用户而言,选对智能体供应商意味着在数…

XPath索引定位深度解析://X[n]与(//X)[n]的本质区别

XPath索引定位深度解析://X[n]与(//X)[n]的本质区别 在自动化测试和网页爬取中,XPath是定位元素的利器。但许多开发者会遇到一个困惑: //div[@class="a"][1] 返回了多个元素(而非预期的1个) //div[@cla…

2025年10月波形护栏厂家推荐榜单:基于公开数据的中立对比与选购参考

一、引言 对于交通建设承包方、市政采购经办人以及需要批量更换护栏的运维单位而言,波形护栏的防撞等级、防腐年限、供货周期与售后响应速度直接关联到道路安全预算与后期维护成本。2025年四季度,国内钢材价格小幅波…

咱也是用上 claude 4.5 api 了

咱也是用上 claude 4.5 api 了claude连不了官方还买不了中转吗! 支持 claude code、cline、roo code、kilo code、Cherry Studio、酒馆 等常见工具~作为备用,不要太爽! ⭐️支持 claude-sonnet-4-5-20250929、clau…

优化电商包装的机器学习模型解析

本文介绍了一种基于线性模型的包装优化方法,通过数据增强和有序性约束,在降低24%货损率的同时减少5%运输成本。该模型处理了1亿个产品-包装组合,解决了传统机器学习方法在处理有序分类问题时的局限性。优化电商包装…

Index of /python/

https://mirrors.ustc.edu.cn/python/

2025年10月项目管理工具推荐榜:十款主流平台深度对比与选购指南

一、引言 在2025年第四季度预算锁定前夕,企业数字化负责人、PMO总监、初创团队CEO乃至政府采购中心都面临同一道选择题:如何在有限成本内为组织引入一套可用、可扩、可管的项目管理工具。工具一旦落地,将直接影响交…

2025年10月项目管理工具推荐榜单:基于真实数据的中立对比与选购指南

一、引言 在数字化交付节奏持续加快的2025年,项目经理、IT负责人以及采购决策者面临同一道考题:如何在预算可控的前提下,为团队挑选一套既能支撑复杂研发流程,又能与国产软硬件生态无缝衔接的项目管理工具。工具一…

GRPO

参考视频 GRPO 指的是 Group Relative Policy Optimization(组相对策略优化),最早由 DeepSeek 在 DeepSeekMath 里提出,用来做 LLM 的 RL(尤其是推理/Chain-of-Thought 任务)的高效替代 PPO 的算法。 PPO 需要一…

QQ音乐v19.51下载

最近想找QQ音乐的19.51这个经典版本(用过的都知道它的魅力所在), 没想到仅仅2年互联网就几乎失忆了, 最后翻了几页才找到一个链接是真的, 赶紧备份了几份, 放一份在网上 QQMusic-v19.51下载

2025年10月项目管理工具推荐榜:覆盖敏捷瀑布混合模式的中立评析与避坑要点

一、引言 在数字化转型进入深水区的2025年,项目管理工具早已不是简单的任务看板,而是企业研发、交付、合规、成本控制的核心枢纽。对于正在选型的CTO、PMO负责人、采购经理以及成长型团队领导者而言,如何在功能深度…

2025年10月止痒控油洗发水推荐榜:十款热门单品多维对比与中性选购指南

一、引言 头皮瘙痒伴随出油过量,是消费者在日常护理中最常见却又最难平衡的痛点。对于需要频繁出席商务场合的职场人群、长期佩戴安全帽的工厂员工以及追求造型持久的年轻消费者来说,控油力度不足会导致发型塌陷,而…

2025年10月止痒控油洗发水推荐榜单:十款热门单品深度对比与中立评测

一、引言 头皮瘙痒伴随出油过量,是消费者在日常护理中最常见却又最容易被忽视的痛点。对于需要长期保持形象整洁的职场人群、频繁染烫的潮流消费者以及脂溢性皮炎困扰者来说,选择一款兼顾止痒与控油的洗发水,不仅关…

关于小程序开发的事(需要找团队开发的,请看)

本文旨在针对有小程序开发需求的同志(找团队开发)减少一定不必要的坑以及能让您多体谅体谅开发人员。小程序正常开发流程:UI->需求分析->前端+后端实现需求->测试->上线针对UI(很重要) 1、如果您找寻…

2025年10月止痒控油洗发水评测推荐:聚焦头皮屏障修复与临床验证的排名解析

一、引言 头皮瘙痒伴随出油过量,是消费者在日常护理中最常见也最困扰的两大痛点。对于需要兼顾形象管理、社交场景与舒适体验的人群而言,一款既能快速止痒又能长效控油的洗发水,直接影响每日的生活质量与自信程度。…

2025年10月激光切割机品牌推荐榜:五强对比评测与选购决策指南

一、引言 在金属加工、钣金制造、广告标识、工程机械、新能源电池壳体等场景中,激光切割机已成为提升材料利用率、缩短交付周期、降低后续打磨成本的关键设备。对于计划2025年四季度完成设备升级或新增产线的采购者而…

2025年10月激光切割机品牌推荐排名:以透明数据为基础的实用选择指南

一、引言 在金属板材、广告标识、汽车配件、家电厨卫等制造场景中,激光切割机已成为提升加工精度与生产效率的核心装备。对于计划新增或升级产线的企业采购者、代工厂负责人以及设备租赁运营商而言,如何在预算可控的…

2025年10月石墨电极厂家推荐排名:晶碳科技产品矩阵与合规资质透视

一、引言 石墨电极是高温工业不可替代的导电载能材料,其导电效率、抗热震寿命与杂质控制水平直接决定单晶硅拉晶、电炉炼钢、精密电火花加工等环节的能耗与良品率。对于2025年四季度计划锁定原料供应链的采购总监、设…