快来开启tailwind css之旅吧

707 阅读3分钟

今年找工作真的太难了,即使面到好多hr面,最后还是无疾而终;所以目前收到一份工作后就先屁颠屁颠的去了!目前已经入职一个星期了,之前有了解过tailwindcss,本来还想着入职新公司后,可以推广一波,没成想新公司已经在使用了

tailwindcss 目前已经发展到3.0 版本了,这个功能类优先的css框架可以给我们带来最直观的优点如下:

1,命名麻烦;我们之前开发,但凡设置一个div样式,都需要命名一个className,开发即要避免名称冲突,又要符合一定的语义;

2,css文件体积小;用tailwindcss 之后,我们开发中许多的css样式可以直接复用,最终打包生成的css文件体积会缩小很多,在资源加载性能方面会提高很多;

3,易于扩展调整和改变;对于一些整体UI风格颜色切换将更加灵活方便;

4,响应式媒体查询使用更方便;

5,IDE插件提供智能化的友好提示;

6,tailwind UI 提供一套UI组件模版;

缺点的话,使用原子样式会让我们的代码阅读上增加些难度,因为我们通常会用语义化的className提高代码阅读性;

安装

npm install -D tailwindcss@latest

(1)然后作为postcss插件来使用

(2)因为我们公司用的是 nuxt.js,所以我们是在nuxt.comfig.js中的buildModules

modules.export{
    ...
    buildModules: ['@nuxtjs/tailwindcss'],
}

自定义样式

tailwind虽然已经提供了非常多的class样式,它同时也支持我们自定义一些全局的样式,我们可以在nuxt.config.js 中的css配置下引入

自定义配置nuxt.config.js

// tailwind.config.js
module.exports = {
  purge: [],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {},
  plugins: [],
}

生产优化

在tailwind.config.js 中配置purge,会开启tree sharking 删除未使用的css

还有哪些原子样式的css框架

windicss:是从零开始编写的tailwind css的替代方案,零依赖,不需要安装postcss, autoprefixer;支持按需生成

unocss: 是一个引擎,而非一款框架;默认的 @unocss/preset-uno 预设,是一系列流行的原子化框架的通用超集,包括了 Tailwind CSS,Windi CSS,Bootstrap,Tachyons 等;所以这些css框架的原子样式都可以使用;

从内部实现上看,Tailwind 依赖于 PostCSS 的 AST 进行修改,而 Windi 则是编写了一个自定义解析器和 AST。考虑到在开发过程中,这些工具 CSS 的并不经常变化,UnoCSS 通过非常高效的字符串拼接来直接生成对应的 CSS 而非引入整个编译过程。同时,UnoCSS 对类名和生成的 CSS 字符串进行了缓存,当再次遇到相同的实用工具类时,它可以绕过整个匹配和生成的过程。

none                            8.75 ms /    0.00 ms 
unocss       v0.0.0            13.72 ms /    4.97 ms (x1.00)
windicss     v3.1.9           980.41 ms /  971.66 ms (x195.36)
tailwindcss  v3.0.0-alpha.1  1258.54 ms / 1249.79 ms (x251.28)

从结果来看,UnoCSS 可以比 Tailwind 的 JIT 引擎快 200 倍!

但是UnoCSS不提供的 @apply 预处理,IDE 智能提示,预处理等功能,所以可以使用windicss框架作为补充;所以我们可以期待一下 WindiCSS v4,它会以UnoCSS作为引擎;

但就如windicss作者所言,Tailwind CSS目前仍然是一个巨人,它有超过 3,000 次提交和 100 多个贡献者;在github上,Tailwind CSS有 54.7K star ,Windi CSS 有4.8k ;Tailwind CSS 就目前而言依然是主流!