SuperAPI AI 工具集

Fluent UI Web Components

前端与建站

查看项目

更新于 10-21 23:14

技能介绍

Fluent UI Web Components 是微软 Fluent 2 设计语言的框架无关实现,基于 FAST 元素平台构建为自定义元素。它们可在任何支持 Web Components 标准的环境中渲染,包括原生 HTML/JS、Angular、Vue、Svelte、Blazor、PHP 模板或微前端外壳。

一、用途与选型 该组件库适合非 React 技术栈或需要跨框架隔离的场景。资料给出的选型建议为:React SPA 或 Next.js 应用推荐使用 @fluentui/react-components(React v9),因其 API 更丰富并支持 SSR;Angular / Vue / Svelte 应用推荐使用 @fluentui/web-components;混合框架的微前端、遗留 jQuery 或服务端渲染页面、SharePoint Framework (SPFx) 扩展、无框架的 Electron / WebView2 外壳,以及面向多团队的设计系统平台,均适合使用 Web Components。

二、主要能力 组件以 fluent- 前缀注册为自定义元素,具备 Shadow DOM 封装(样式不外泄也不内侵)、设计令牌 CSS 自定义属性主题化、FAST 基础(元素生命周期、模板绑定、可观察属性)以及可 tree-shaking(按需引入)。

组件目录涵盖:交互控件(fluent-button、fluent-anchor、fluent-checkbox、fluent-combobox、fluent-menu、fluent-radio、fluent-radio-group、fluent-select、fluent-slider、fluent-switch、fluent-text-area、fluent-text-field、fluent-tooltip);布局与容器(fluent-accordion、fluent-accordion-item、fluent-breadcrumb、fluent-card、fluent-dialog、fluent-divider、fluent-drawer、fluent-tab-panel、fluent-tabs、fluent-tab);数据展示(fluent-badge、fluent-data-grid、fluent-data-grid-row、fluent-data-grid-cell、fluent-image、fluent-label、fluent-text);反馈与进度(fluent-message-bar、fluent-progress-bar、fluent-spinner);表单结构(fluent-field、fluent-link)。

三、安装与使用方式 通过 npm / yarn / pnpm 安装:npm install @fluentui/web-components。快速注册全部组件使用 provideFluentDesignSystem().register(allComponents);按需注册可单独引入 fluentButton()、fluentCard()、fluentTextField() 等。也可通过 CDN 引入:<script type="module" src="https://unpkg.com/@fluentui/web-components"></script>,或指定版本如 @3.0.0/dist/web-components.min.js。TypeScript 配置建议 moduleResolution 为 bundler、target 为 ES2021、module 为 ES2022,lib 包含 ES2021、DOM、DOM.Iterable。

四、设计令牌集成 所有视觉值通过 CSS 自定义属性(设计令牌)控制,令牌可设置在 <fluent-design-system-provider> 或任意祖先元素上。令牌流动方式包括:组件库自带全局默认值、设计系统提供器覆盖、任意元素 style 属性内联覆盖。常用令牌包括 --fill-color(页面背景)、--accent-base-color(主品牌色)、--neutral-base-color(中性色种子)、--base-layer-luminance(明暗模式,1 为亮、0 为暗)、--type-ramp-base-font-size、--type-ramp-base-line-height、--control-corner-radius、--stroke-width、--focus-stroke-width、--disabled-opacity、--design-unit(默认 4px)、--density、--base-height-multiplier。暗色模式通过调整 base-layer-luminance 实现,提供器可嵌套以创建局部主题区域。也可通过编程方式访问令牌,如 fillColor.setValueFor(provider, "#f5f5f5")。

五、DataGrid 组件 <fluent-data-grid> 是最复杂的组件。基础用法通过设置 rowsData 数组渲染数据,支持 generate-header="sticky" 与 grid-template-columns 属性。可通过 columnDefinitions 显式定义列,包括 columnDataKey、title、cellTemplate、isRowHeader、headerCellTemplate 等。排序通过列头点击事件处理实现;行选择通过 row-focused 事件获取行数据;列宽调整通过 grid-template-columns 的 minmax 设置;大数据集可通过分批渲染或 IntersectionObserver 实现虚拟滚动。

六、框架集成 原生 JS/HTML 无需框架工具,直接通过模块脚本注册组件即可。Angular 需在模块中启用 CUSTOM_ELEMENTS_SCHEMA,模板中使用属性绑定 [attr] 与事件绑定 (event)。Vue 3 需在 vite.config.ts 中配置 isCustomElement 识别 fluent- 前缀,模板中使用 v-bind 与 v-on。Svelte 原生将未知标签视为自定义元素,在 main.ts 或 +layout.ts 中注册后即可在 .svelte 文件中使用。

七、限制 资料未提供关于收费、价格、平台支持范围、性能基准或浏览器兼容性细节的信息。官方文档地址为 https://learn.microsoft.com/en-us/fluent-ui/web-components/ 与 https://learn.microsoft.com/en-us/fluent-ui/web-components/components/overview,npm 包地址为 https://www.npmjs.com/package/@fluentui/web-components。