提示:如果需要使用Taro编写小程序而不是H5的话,此方案并不生效。可参考: https://docs.taro.zone/docs/css-in-js
在用Taro框架写小程序的时候,写组件样式的时候,总觉得全部写在css文件里,如果需要通过某个参数来调节不同的样式,那么就比较麻烦。
这时候就想到了styled-components,同时又由于上一个项目是使用tailwindcss来编写的样式,那么有没有办法可以使用styled-components的语法来写tailwind呢?
搜索了一下NPM仓库,还真有,tailwind-styled-components
可以实现这个功能,但是实现这个功能之前,需要在Taro中安装tailwind。
安装weapp-tailwindcss-webpack-plugin
具体安装方式可以查阅官方文档连接:
https://github.com/sonofmagic/weapp-tailwindcss-webpack-plugin/blob/main/docs/taro.md
这里描述下我的步骤,当前我的Taro项目使用webpack5,于是使用插件TaroWeappTailwindcssWebpackPluginV5
。
- 安装依赖
1 | yarn add -D weapp-tailwindcss-webpack-plugin postcss-rem-to-responsive-pixel tailwindcss postcss autoprefixer |
- 在 taro-app/config 中添加
1 | const { TaroWeappTailwindcssWebpackPluginV5 } = require('weapp-tailwindcss-webpack-plugin') |
插件的安装就此完毕,开始安装tailwindcss,这里的操作步骤可以参考tailwindcss官方安装文档,也可以参考上面插件的文档。
- 执行 npx tailwindcss init
创建 postcss.config.js 和 tailwind.config.js
1 | // postcss.config.js |
1 | // tailwind.config.js |
- 在全局css文件中引入即可使用
PS:如果在根JS中引用是无效的,原因未知。
1 | @import 'tailwindcss/base'; |
这样,在Taro小程序中配置tailwindcss的操作就完成了,接下来要配置styled-components相关内容。
安装Tailwind-Styled-Component与styled-components
这两个插件互不影响,执行yarn命令安装即可。
1 | yarn add -D tailwind-styled-components |
配置VSCode语法提示
使用styled-components之后会发现,使用styled语法时,并不会出现css的相关语法提示,这是因为没有安装插件造成的。
插件名称vscode-styled-components
在VSCode市场中安装即可,这时可以发现styled-components语法的高亮和提示恢复正常了。那么Tailwind-Styled-Component该如何操作?
首先需要安装Tailwind CSS IntelliSense,这个插件提供了tailwindcss相关语法的高亮和语法提示。
并且Tailwind CSS IntelliSense 提供了自定义语法高亮的参数,可以在VScodesettings.json
自行配置。
1 | "tailwindCSS.includeLanguages": { |
配置完毕之后,即可实现Tailwind-Styled-Component与styled-components语法的共存。
这时再去编写样式自由度会相对高一些(但是也会更混乱),有些不适合tailwind写的样式就可以使用css来写了。
另一种方式
在查询资料的过程中,也发现了另一种在sytled-components中使用tailwindcss的方式,也就是使用@apply
来将tailwind编译为普通css。
因为这种方式感觉也很有趣,特此记录一下。
使用的是一个babel插件:
1 | yarn add -D babel-plugin-styled-windicss |
配置babel:
1 | //.babelrc |
Tailwind CSS IntelliSense 插件配置:
1 | "tailwindCSS.experimental.classRegex": [ |
使用方式:
1 | let Text = styled.div` |
参考地址:
- https://blog.csdn.net/qq_37214567/article/details/124319226