React css自动原子化

本文介绍了作者开发的一个CSS自动原子化工具,旨在解决现有方案的不便。通过Babel处理JS,PostCSS处理CSS,实现CSS规则与JS类的匹配替换。文章详细阐述了实现过程,包括JS和CSS的AST转换、合并策略等,并展示了打包后的代码片段。
摘要由CSDN通过智能技术生成

开篇

闲来无事,开发一个css自动原子化工具玩玩。

本文仅为实现思路,如有改进地方希望各位积极评论交流。

背景

现有的css原子化方案对于开发者不算友好。

  1. 开发者很难记得所有原子化样式。
  2. 对于不常用的样式需要进行配置。

效果

打包效果对比

原子化前->原子化后 (gzip压缩之前,由于css原子化之后gzip压缩比率降低,导致效果没有压缩前明显)

以下为原子化完成后webpack打包出的代码片段

打包后部分js片段

打包后部分css片段

实现原理

  1. 处理js,使用babel将js转化为ast,对ast不同结构进行处理,将其转化为js树。
  2. 处理css,使用postcss将css转为ast,将其转化为css block。
  3. 合并,css规则匹配js上的class,进行替换。

处理JS

  1. 使用babel将js代码转为ast。
babel.parse(code);
  1. 对不同类型结构进行不同处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值