最近接手一个项目时,发现项目启动得40多秒,同事电脑配置有点低,启动得2分钟了,,对我这种急性子来说,着实太慢。
优化前启动时间:40s
优化后启动时间:27s
研究一段时间后发现,tailwind.config.js内配置的spacing项导致项目启动慢了13秒。
tailwind.config.js:
```javascript
const {inset,spacing,textColor,fontSize,lineHeight} = require('./tailwind.theme.js')
module.exports = {
purge: [],
darkMode: false, // or 'media' or 'class'
theme: {
textColor,
fontSize,
lineHeight,
container: {
center: true,
screens: {
sm: '984px',
md: '984px',
lg: '984px',
xl: '1200px',
'2xl': '1136px',
},
},
extend: {
inset,
spacing
},
},
variants: {
extend: { },
},
plugins: []
}
tailwind.theme.js:
//将px转换为
remconst pxToRem = (px)=> `${px / 16}rem`
// 宽高
const spacing = {
"1px": "0.0625rem",
"2px": "0.125rem",
"3px": "0.1875rem",
"4px": "0.25rem",
"5px": "0.3125rem",
"6px": "0.375rem",
"7px": "0.4375rem",
"8px": "0.5rem",
"9px": "0.5625rem",
"10px": "0.625rem",
"11px": "0.6875rem",
"12px": "0.75rem",
"13px": "0.8125rem",
"14px": "0.875rem",
"15px": "0.9375rem",
"16px": "1rem",
"17px": "1.0625rem",
"18px": "1.125rem",
"19px": "1.1875rem",
"20px": "1.25rem",
"21px": "1.3125rem",
"22px": "1.375rem",
"23px": "1.4375rem",
"24px": "1.5rem",
"25px": "1.5625rem",
"26px": "1.625rem",
"27px": "1.6875rem",
"28px": "1.75rem",
"29px": "1.8125rem",
"30px": "1.875rem",
"31px": "1.9375rem",
"32px": "2rem",
"33px": "2.0625rem",
"34px": "2.125rem",
"35px": "2.1875rem",
"36px": "2.25rem",
"37px": "2.3125rem",
"38px": "2.375rem",
"39px": "2.4375rem",
"40px": "2.5rem",
"41px": "2.5625rem",
"42px": "2.625rem",
"43px": "2.6875rem",
"44px": "2.75rem",
"45px": "2.8125rem",
"46px": "2.875rem",
"47px": "2.9375rem",
"48px": "3rem",
"49px": "3.0625rem",
"50px": "3.125rem",
"51px": "3.1875rem",
"52px": "3.25rem",
"53px": "3.3125rem",
"54px": "3.375rem",
"55px": "3.4375rem",
"56px": "3.5rem",
"57px": "3.5625rem",
"58px": "3.625rem",
"59px": "3.6875rem",
"60px": "3.75rem",
"61px": "3.8125rem",
"62px": "3.875rem",
"63px": "3.9375rem",
"64px": "4rem",
"65px": "4.0625rem",
"66px": "4.125rem",
"67px": "4.1875rem",
"68px": "4.25rem",
"69px": "4.3125rem",
"70px": "4.375rem",
"71px": "4.4375rem",
"72px": "4.5rem",
"73px": "4.5625rem",
"74px": "4.625rem",
"75px": "4.6875rem",
"76px": "4.75rem",
"77px": "4.8125rem",
"78px": "4.875rem",
"79px": "4.9375rem",
"80px": "5rem",
"81px": "5.0625rem",
"82px": "5.125rem",
"83px": "5.1875rem",
"84px": "5.25rem",
"85px": "5.3125rem",
"86px": "5.375rem",
"87px": "5.4375rem",
"88px": "5.5rem",
"89px": "5.5625rem",
"90px": "5.625rem",
"91px": "5.6875rem",
"92px": "5.75rem",
"93px": "5.8125rem",
"94px": "5.875rem",
"95px": "5.9375rem",
"96px": "6rem",
"97px": "6.0625rem",
"98px": "6.125rem",
"99px": "6.1875rem",
"100px": "6.25rem",
"114px": pxToRem(114),
"120px": pxToRem(120),
"130px": pxToRem(130),
"135px": pxToRem(135),
"168px": pxToRem(168),
"176px": pxToRem(176),
"224px": pxToRem(224),
"237px": pxToRem(237),
"257px": pxToRem(257),
"260px": pxToRem(260),
"264px": "16.5rem",
'270px':pxToRem(270),
'280px':pxToRem(280),
"290px": pxToRem(290),
"300px": "18.75rem",
"343px": "18rem",
'392px':pxToRem(392),
"400px": "25rem",
"452px": "28.25rem",
"480px": "30rem",
"600px": "37.5rem",
"720px": "45rem",
'1010px':pxToRem(1010),
'1028px':pxToRem(1028),
'1200px':pxToRem(1200),
'1135px':pxToRem(1135),
}
解决方案:将spacing配置项转为css格式,如:
const spacing = {
"1px": "0.0625rem",
}
转为
.w-1px {
width: 0.0625rem;
}
.h-1px {
height: 0.0625rem;
}
实现步骤:使用nodeJS遍历spacing,拼接成css格式字符串,写入spacing.css文件内。
const fs =require("fs")
// 宽高const pxToRem = (px)=> `${px / 16}rem`
const spacing = {
"1px": "0.0625rem",
"2px": "0.125rem",
"3px": "0.1875rem",
......
......
}
let str = ''
Object.entries(spacing).forEach(([key,value])=>{
str += `.w-${key}{
width:${value}
}\n
.h-${key}{
height:${value}
}\n`
console.log('key,value',key,value);
})
fs.writeFile('./spacing.css', str,function(err){
if(!err){
console.log('写入完毕!');
}
})
最后把tailwind.config.js内配置的spacing去掉,然后将spacing.css引入就可以啦!