83
支付宝CSS样式架构 小鱼(@sofish)

Css schema by_sofish

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Css schema by_sofish

支付宝CSS样式架构小鱼(@sofish)

Page 2: Css schema by_sofish

叫我小鱼(林建锋)两年前在法学院毕业目前在支付宝搞搞前端微博:@sofish

博客:http://sofish.de

关于 sofishABOUT

Page 3: Css schema by_sofish

构建⼀一个可扩展,适合团队协同开发的库用方便的方式发布上线

内容概要SUMMARY

Page 4: Css schema by_sofish

基础构建 规范、浏览器解决方案(方法+插件)、通用库等

团队开发 组件代码库+展示平台、工具(TODO)

静态部署 打包、部署

内容概要SUMMARY

Page 5: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(我们的做法)

⼀一套编码、组件库构建+维护+升级规范

⼀一个通用组件库 + 拥有展示平台的库

⼀一种打包部署方案

⼀一些些解决方案(插件)

Page 6: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(我们的做法)

⼀一套编码、组件库构建+维护+升级规范

⼀一个通用组件库 + 拥有展示平台的库

⼀一种打包部署方案

规范组件库 支付宝

构建 部署

解决方案

⼀一些些解决方案(插件)

Page 7: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么?

Page 8: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

Page 9: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

CSS 框架

Page 10: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

CSS 框架

产品组件

Page 11: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

Page 12: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

多团队、多产品并行开发支付宝遇到的问题:

Page 13: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

我们要解决的问题是什么

多团队、多产品并行开发支付宝遇到的问题:

PA.CSS 6000行/100KB

代码冗余严重

全局设置太多,多产品共用耦合高

Page 14: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

代码多

代码冗余严重

全局设置多

Page 15: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

代码多

代码冗余严重

全局设置多

=> 精简吧

Page 16: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

代码多

代码冗余严重

全局设置多

=> 精简吧

=> 做成 CSS 框架吧

Page 17: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

代码多

代码冗余严重

全局设置多

=> 精简吧

=> 做成 CSS 框架吧

=> 严格规定框架不能修改

Page 18: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

代码多

代码冗余严重

全局设置多

new 提供⼀一个解决 BUG 的库

=> 精简吧

=> 做成 CSS 框架吧

=> 严格规定框架不能修改

Page 19: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 20: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 21: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 22: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

new

Page 23: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

最终她只有 20KB所有产品都可以基于她来扩展

Page 24: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

最终她只有 20KB所有产品都可以基于她来扩展

不再需要引用 100 KB 的 CSS

可以只关注本产品的升级维护、不怕改动影响到其他产品的样式

有浏览器兼容方案帮忙解决头痛的问题

Page 25: Css schema by_sofish

福特说:如果我当年去问顾客他们想要什么,他们肯定会告诉我:“⼀一匹更快的马”

Page 26: Css schema by_sofish

福特说:如果我当年去问顾客他们想要什么,他们肯定会告诉我:“⼀一匹更快的马”

我们是不是该换⼀一种思路了

Page 27: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

产品⼀一

产品三

产品五

产品二

产品四

产品六

样式库

Page 28: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 29: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

编码风格不统⼀一:命名、注释、模块化

不能跨产品重复利用

代码仍然冗余

产品组内合作困难、换产品组需要适应期

依赖情况不明,个性化强

并不是所有元件都会用到、并且需要覆盖框架

Page 30: Css schema by_sofish

new

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 31: Css schema by_sofish

new

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 32: Css schema by_sofish

new

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 33: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 34: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 35: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 36: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 37: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 38: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

Page 39: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

抽象出组件,提供组件 DOM 模板,颗粒化模块

提供最基础的依赖文件

制定编码规范,统⼀一命名、注释、模块化

制定组件库构建、维护和升级规则

Page 40: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

抽象出组件,提供组件 DOM 模板,颗粒化模块

提供最基础的依赖文件

制定编码规范,统⼀一命名、注释、模块化

制定组件库构建、维护和升级规则

Page 41: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

产品组

产品组

产品组

产品⼀一

产品二

产品三

Page 42: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

产品组

产品组

产品组

产品⼀一

产品二

产品三

Page 43: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

产品组

产品组

产品组

产品⼀一

产品二

产品三

Page 44: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

产品组

产品组

产品组

产品⼀一

产品二

产品三

统⼀一的编码方式,在那个位置(产品线)组件代码都⼀一目了然。各产品组只关注自己产品组件的构建、维护和升级

只依赖 base.css,可跨产品使用(为什么有用?)

Page 45: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

除了规范外最重要的是: 通用解决方案

Page 46: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

除了规范外最重要的是: 通用解决方案

layout、1px round cornerrorate、css3-like shadowforce wrap、vertical & horizonal alignflash copy、float:centerline-gradient、iframe auto adjust ...

Page 47: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

除了规范外最重要的是: 通用解决方案

layout、1px round cornerrorate、css3-like shadowforce wrap、vertical & horizonal alignflash copy、float:centerline-gradient、iframe auto adjust ...

Page 48: Css schema by_sofish

基础构建

规范、浏览器解决方案(方法+插件)、通用库等

(为什么这样做)

除了规范外最重要的是: 通用解决方案

layout、1px round cornerrorate、css3-like shadowforce wrap、vertical & horizonal alignflash copy、float:centerline-gradient、iframe auto adjust ...

产品⼀一

产品三

产品五

产品二

产品四

产品六

Page 49: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

Page 50: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

基于统⼀一规范的库,产品组只需要关注自己的组件库。即使因有临时需要转到其他产品组,也可以因为相同的规范很迅速适应。

Page 51: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

基于统⼀一规范的库,产品组只需要关注自己的组件库。即使因有临时需要转到其他产品组,也可以因为相同的规范很迅速适应。

Page 52: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

基于统⼀一规范的库,产品组只需要关注自己的组件库。即使因有临时需要转到其他产品组,也可以因为相同的规范很迅速适应。

如果要重复使用组件代码呢?

Page 53: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

基于统⼀一规范的库,产品组只需要关注自己的组件库。即使因有临时需要转到其他产品组,也可以因为相同的规范很迅速适应。

如果要重复使用组件代码呢?

告诉队友放在那个地方(svn)有个可视的方式让他确认是否是自己需要的

Page 54: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

Page 55: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

建立产品组件库的展示平台提供方便的组件代码获取方式

Page 56: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

Page 57: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

Page 58: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

(1)组件代码库不得跨产品引用(2)关于重得劳动

Page 59: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

(1)组件代码库不得跨产品引用(2)关于重得劳动

BUG 是头痛的问题业务是头发的问题,基础技术还得应用于产品

(通用解决方案)

Page 60: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

(1)组件代码库不得跨产品引用(2)关于重得劳动

BUG 是头痛的问题业务是头发的问题,基础技术还得应用于产品

(通用解决方案)

Page 61: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

(1)组件代码库不得跨产品引用(2)关于重得劳动

BUG 是头痛的问题业务是头发的问题,基础技术还得应用于产品

(通用解决方案)

有通用解决方案,能不能有通用产品组件?

Page 62: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

目前我们在正从交互到视觉,再到前端建立⼀一套全站统⼀一的规范并构建成⼀一个通用库

Page 63: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

目前我们在正从交互到视觉,再到前端建立⼀一套全站统⼀一的规范并构建成⼀一个通用库

Page 64: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TODO)

(统⼀一、透明)

目前我们在正从交互到视觉,再到前端建立⼀一套全站统⼀一的规范并构建成⼀一个通用库

保护头发,从减少产品重复劳动开始!

Page 65: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TO-DO)

(TO-DO)

(1)Code  Review

(2)跨产品组件复制的背景图片问题

Page 66: Css schema by_sofish

团队开发

组件代码库+展示平台、工具(TO-DO)

(TO-DO)

(1)Code  Review

(2)跨产品组件复制的背景图片问题扩展 CSS(如扩展 LESS CSS)Auto Sprites(CSS Gaga、imagemagic)

Page 67: Css schema by_sofish

静态部署

版本管理、打包、压缩,最级部署线上环境

(1)版本管理、打包压缩(2)GUI  界面部署

Page 68: Css schema by_sofish

静态部署

版本管理、打包、压缩,最级部署线上环境

(1)版本管理、打包压缩

(2)GUI  界面部署

Page 69: Css schema by_sofish

静态部署

版本管理、打包、压缩,最级部署线上环境

(1)版本管理、打包压缩

(2)GUI  界面部署

maven + ant + yui compressor

Page 70: Css schema by_sofish

静态部署

版本管理、打包、压缩,最级部署线上环境

(1)版本管理、打包压缩

(2)GUI  界面部署

maven + ant + yui compressor

maven + nodejs

Page 71: Css schema by_sofish

静态部署

版本管理、打包、压缩,最级部署线上环境

(1)版本管理、打包压缩

(2)GUI  界面部署

maven + ant + yui compressor

maven + nodejs

使用支付宝前端架构组基于Maven 的(组件库)版本管理、部署系统

Page 72: Css schema by_sofish
Page 73: Css schema by_sofish

说完我们的这套方案

Page 74: Css schema by_sofish

然后呢?说完我们的这套方案

Page 75: Css schema by_sofish

然后呢?说完我们的这套方案

Page 76: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

Page 77: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

Page 78: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

Page 79: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

Page 80: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

如果你感兴趣可以联系我

Page 81: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

如果你感兴趣可以联系我

Page 82: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

如果你感兴趣可以联系我

[email protected]

Page 83: Css schema by_sofish

然后呢?说完我们的这套方案

我们还在做更多的事

开源

如果你感兴趣可以联系我

[email protected]

Thank You!你们的:小鱼(@sofish)