前端命名规范_2B 场景下的前端组件库换肤设计理念与实践

导读

一个统一、规范的组件库,能够不断沉淀设计师的思考、降低设计与开发成本,保证产品在不断发展的过程中,用户体验不被打断。同时,熵简科技作为一家深耕B端的服务商,其前端组件库还需要快速赋能 2B 场景下的业务需求。文本针对 2B 场景,谈一谈熵简大前端团队在构建前端组件库中的设计理念和实践。作者信息本文出自熵简科技大前端团队,团队致力于打造世界级的B端产品。主要工作包括搭建先进、统一的前端基础架构,建立严格的产品设计规范,探索前沿技术的业务落地,持续沉淀优秀的前端案例,不断提升各个产品线的客户使用体验及开发效率。

f51c381b7e8119ed604920474acda8e8.png

1、背景

前端组件化已经成为一种主流,一种共识。一个统一、规范的组件库,能够不断沉淀设计师的思考、降低设计与开发成本,同时也可以降低用户在不同产品模块之间切换的学习成本,保证产品在不断发展的过程中,用户体验不被打断。

熵简科技是一家为企业客户提供数据智能平台的服务商,因此我们团队在构建前端组件库时,除了需要考虑上面的需求以外,同时还要快速赋能 2B 场景下的业务需求。

在2B场景下,很多客户需要对产品进行私有化部署以及定制化改造,客户往往会对设计风格提出与自身公司文化背景相统一的定制化需求,这时就需要我们的组件库能够在输出效果稳定可预期的同时,具备响应客户需求变化的强大扩展性。

为了达到上面的要求,在整个设计和开发过程中,我们一直遵循两个原则:

1.原子化:类比物质的分子组成结构(原子构成分子,分子构成物质),原子设计就是将页面颗粒度分为原子、分子、组织、模板、页面的超细维度,进行组件和组件的层层嵌套。同样我们在设计组件时将设计元素的颗粒度进一步精分、组合产生颜色搭配主题、形态组合主题等,不同的主题结合产生最终的组件样式。

2.统一语义化命名:UI和前端统一规范各原子化"物料"的命名,减少协作中的沟通成本。

2、2B场景下的设计原则

2.1 系统一致性原则

实际的项目开发通常需要在同一环境下整合多个产品系统,组件库的开发能很好地保证各个系统有一致的视觉语言、交互操作规范。

2.2 敏捷开发原则

2B业务在POC阶段需要有快速的视觉Demo输出,因此原子化的组件设计与模块化的组件开发配合显得尤为重要。

最终,我们希望能够搭建起 产品/UI/前端 三方高效的协作流程,如下所示:

8b3426893ec2c279b2181f661a8a8ece.png

3、UI团队工作

3.1 定义并创建原子化变量

在设计的初始阶段,先将“颜色”这个最基础单位按其之后在项目中的使用意图进行分组和命名,前端在设定不同组件的颜色属性时也会以颜色名字的方式进行设定和修改。

536fcc42c3adc197e2251889ebc39d34.png

3.2 UI基于Sketch的Symbol功能进行变量创建

Sketch的symbol功能很好的为原子化提供了实践可能性。在sketch文件中将最小颗粒度“原子(如颜色)”按照其使用意图作为名称进行命名;颗粒度再复杂一级的“分子(如字体)”变量名则由 typeface/weight/color/size 的组合排列产生。

477f53b512c0e98138d751e431198b59.png
f5d453c92434974b70cc45df96e73eb4.png

当进一步设计有功能属性的基础组件(如按钮、列表等)时,组件内的文字和颜色使用引用预定义好的“原子单位”,这也为日后样式修改时确保组件一致性提供了一定的依据。

8897a6683eca45e6d57d541fedbc8e52.png
494a2f2c97f56b0e66eb4908840927aa.png

3.3 Sketch上传Zeplin来完成设计与开发团队的同步协作

zeplin作为sketch的“好基友”可以很好的实现将设计语言到开发语言的翻译工作。设计好的symbol通过 Sketch/Plugin/Zeplin/Export Selected Board上传至zeplin的共享平台。

eea5ccd373bce2e96c99285d0d5e4623.png

在zeplin的styleguide栏目下以树状结构来分类组件

f9d728d0098d0aa9607c7484e7d00de1.png

zeplin内嵌的symbol识别功能使得在产品业务相关的页面中对于引用到的组件进行自动识别,方便开发人员识别原子化变量

84fed4f30b6bb60bbfd347dd5ad3caa2.png

4、前端团队工作

4.1 前端组件设计和开发原则

基于Sketch中的symbol功能,前端也需要将组件进行原子化,并根据symbol的变量命名将常用的大小、颜色创建为变量。

前端组件根据功能以及颗粒度可以分为“基础组件”和“高阶组件”。基础组件一般是页面中颗粒度中最小也是最常用的组件,例如input,button等;高阶组件通常是由基础组件进行一定的变形、组合或两者兼有而形成的;而高阶组件+基础组件最终组成了完整的页面。为了满足2B场景下的整体风格替换,所有组件在开发的时候要将用到的颜色、字体等"原子"用变量的方式引入。

在目前前端开发中,样式的变量创建方式主要有两种:一是基于css原生支持的自定义变量,二是基于less、scss等css预编译器。考虑到自定义变量可能存在的浏览器兼容性问题,最终我们组件库采用了less作为样式开发的语言。less 是一门 CSS 预处理语言,除了之前提到的变量功能,还有嵌套、混合(mixin)、函数等方便的功能。

4.2 前端组件开发实践

至此,前端开发可以根据之前zeplin上的StyleGuide,将常用的变量进行定义,并在组件开发中使用:

dcbea3643e862f8de9ae200760ab2671.png
b8f2689e4ff5921f82348a319214f2b5.png

less变量定义

3f52566f57bc85a5c7bb769ca04bac9d.png

组件库变量应用

除此之外,我们利用less的mixins特性封装了文字样式混合,可通过传参编译成相应代码,从而减少重复代码并且方便开发使用。

94ae1dac9f692795a2239c98faa57b81.png

定义mixin

dddf4f3f192eb05ee3fe3315e0442f59.png

mixin的使用

4.3 Less变量覆盖与自动注入

当我们按照以上原则完成组件及页面的开发,就可以非常方便的解决业务场景下遇到的“换肤“问题:只需要根据主题修改相关变量即可完成整个项目的主题更换。那在项目中,在不改变组件库变量文件的前提下,如何才能修改样式变量呢?最终我们采用less变量覆盖以及变量文件自动注入的方式解决了这个问题。

(1)less变量覆盖

e6189ecac83e849067e3f81029681860.png

(2)less自动注入

less自动注入目前我们有两种方案:一是通过less-loader提供的modifyVars、二是通过style-resources-loader来实现,less-loader实现如下:

91edb984f291237b1545c5d73aab0d18.png

style-resources-loader实现如下:

b9ce91ce6262f5f30ed2abf3a654a385.png

5、设计规范总结

基于原子化设计理念,针对2B场景下的换肤需求,我们提出并完善了这套在构建时即可实现的换肤方案。这套理论可以应用于网站的整体开发中并已经过实践验证,最终能够实现网站整体换肤的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值