首页 » 软件开发 » 企业应用设计系统Semi Design开源了(开源设计组件团队出品)

企业应用设计系统Semi Design开源了(开源设计组件团队出品)

萌界大人物 2024-07-24 18:29:48 0

扫一扫用手机浏览

文章目录 [+]

Semi Design 是由抖音前端团队,MED 产品设计团队设计、开发并维护的设计系统。
它作为全面、易用、优质的现代应用 UI 解决方案,从字节跳动各业务线的复杂场景提炼而来,支撑近千计平台产品,服务内外部 10 万+ 用户

特性

设计 —— 不变与多变

Semi Design 始终致力于提升企业应用的体验。
通过提炼简洁轻量,现代化的设计风格,细致打磨原子组件的交互,并在字节跳动的海量业务场景下进行迭代,沉淀了一套优质的默认基础 —— 它将保证 Semi 打造的企业应用产品,天生拥有连贯一致的「语言」,和明显优于陈旧系统的质量基线。

企业应用设计系统Semi Design开源了(开源设计组件团队出品) 软件开发
(图片来自网络侵删)

主题化 —— 品牌一键定制

通过对数千个设计变量 (Design Token) 的分层和梳理,设计师和开发者可在全局、乃至组件级别,对 表现层进行深度定制 —— 即使你不了解 CSS,也可以通过主题编辑器(DSM),打造符合业务和品牌多样化视觉需求的风格。
开发者则可通过 npm 包一键发布并替换,轻松定制,易于管理。

深色模式

为了兼容更多用户群体在不同生产环境下的使用偏好,作为浅色模式的补充,Semi Design 的任意主题均自动支持深色模式,并能在应用运行时动态切换。

国际化 —— 多元兼容

在字节跳动全球化业务实践下,Semi Design 经过 30+ 版本迭代,已具备完善的国际化特性 —— 覆盖简/繁体中文,英语、日语、韩语、葡萄牙语等 10+ 语言,日期时间组件提供全球时区支持,全部组件可自动适配阿拉伯文 RTL 布局。

跨框架技术方案

Semi Design 采用了一套跨前端框架技术方案,F/A 分层设计,将每个组件的 JavaScript 拆分为两部分:Foundation 和 Adapter,这使得我们可以通过仅重新实现适配器来跨框架重用 Foundation 代码,例如 React、Vue、Angular、Svelte 或者 WebComponent,快速打造不同平台上的通用组件库。

Foundation:包含最能代表 Semi Design 组件交互的业务逻辑,包括 UI 行为触发后的各种计算、分支判断等逻辑,它并不直接操作或者引用 DOM,任意需要 DOM 操作,驱动组件渲染更新的部分会委派给 Adapter 执行。
Adapter:是一个接口,具有 Foundation 实现 Semi Design 业务逻辑所需的所有方法,并负责 1. 组件 DOM 结构声明 2.负责所有跟 DOM 操作/更新相关的逻辑,通常会使用框架 API 进行 setState、getState、addEventListener、removeListener 等操作。
适配器可以有许多实现,允许与不同框架的互操作性。

提示:目前只实现了 Adapter 的 React 版本,你可以直接通过引入 semi-ui 来使用 React 组件。

物料社区

过去一年来,字节内部各业务线团队的用户围绕 Semi 的基础组件,自主设计和开发了包含表单、多媒体、用户引导、消息通知、图表等种类繁多的 UI 物料,并发布在物料市场。
Semi 的用户可基于产品需求,查找物料并复用,大幅节省开发成本;同时,优质的 UI 资源也得以形成积累和传播。

Design to Code

未来,Design to Code 方案将通过代码扫描,完成组件级别的识别与转译。
同时,结合团队从海量业务场景中沉淀的页面模板,用户将能以极低的成本,快速完成前端页面的克隆和结构还原。

A11y

Semi 始终关注 Web 可访问性,当前我们从语义化标签,色盘算法可对比度、文本感知性等方面实现了一部分的无障碍支持,但我们相信这仍有不少提升的空间。
我们后续会持续关注并提升组件的可操作性、可感知性,为基于鼠标的操作提供更便捷的键盘交互,提供更完善的 WAI-ARIA 支持。

多框架

高度可扩展性作为 Semi 的核心设计原则,贯穿于 Semi 的代码架构设计、API 设计、样式层抽象等各个方面。
得益于 Foundation/Adapter 架构设计以及样式文件分层原则,Semi 非常易于迁移到其他前端框架。
在 2.0 版本,我们基于 Typescript 对 Semi 进行了重写,期望在多框架迁移适配过程中依然能有良好的开发体验以及质量保障。

设计资源

设计师可以从 Figma 组件库 Semi Design System 获得色盘、样式库及组件。

兼容性

现代浏览器(Semi 暗色模式/样式文件依赖于 CSS variable,最低版本要求为 edge,ie11 及以下均不支持)

安装使用

1、安装 Semi

# 使用 npmnpm i @douyinfe/semi-ui# 使用 yarnyarn add @douyinfe/semi-ui# 使用 pnpmpnpm add @douyinfe/semi-ui

2、模块化方式使用组件

在 Webpack、create-react-app 或 Vite 项目中使用时,无需进行任何编译项配置,直接使用即可。
构建时所有相关资源均会按需打包。

import React, { Component } from 'react';import { Button, Toast } from '@douyinfe/semi-ui';class Demo extends React.Component {constructor() {super();}render() {return <Button onClick={() => Toast.warning({ content: 'welcome' })}>Hello Semi</Button>;}}

推荐在项目中引入 reset.css,它可以重置浏览器自带的默认样式,避免不同UA之间的样式差异。

3、在 Next.js 中使用

当你在 Next.js 项目中使用时,需要搭配 Semi 提供的编译插件(由于 Next.js 不允许 npm 包从 node_modules 中 import 样式文件,需要配合插件将默认的import CSS 语句移除,并且手动引入 CSS)

Step1

在项目根目录安装 @douyinfe/semi-next 。

# 使用 npmnpm i @douyinfe/semi-next# 使用 yarnyarn add @douyinfe/semi-next# 使用 pnpmpnpm add @douyinfe/semi-next

Step2

在项目根目录创建 next.config.js,并进行配置。

// next.config.jsconst semi = require('@douyinfe/semi-next').default({/ the extension options /});module.exports = semi({// your custom Next.js configuration});

Step3

在 global.css 中引入全量的 semi css。
目前在 Next.js 中不支持按需引入。

/ styles/globals.css /@import '~@douyinfe/semi-ui/dist/css/semi.min.css';

如何在 Next.js 中使用主题包:你需要更换 Step3 中 import 语句的路径,将默认主题 CSS 产物更换为你定制的主题包中的 CSS 产物,例如主题包为 @semi-bot/semi-theme-nyx-c

/ styles/globals.css /@import '~@semi-bot/semi-theme-nyx-c/semi.min.css';

—END—

开源协议:MIT

开源地址:https://github.com/DouyinFE/semi-design

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0