uniapp+vue3+pinia+tailwindcss+gulp 开发小程序-H5

有用过tailwindcss的小伙伴都知道,开发起来免去写样式的重复步骤使用起来那是得心应手,
tailwindcss里面也有在各个框架里面的使用方法 具体查看 还有cdn的使用方法

今天就说说如何在uniapp里面使用tailwindcss
首先呢创建一个uniapp的vue3项目 具体操作 当然了选择vue3项目项目命令(npx degit dcloudio/uni-preset-vue#vite my-vue3-project)
vue3 采用的是vite构建打包 有不了解的小伙伴可以看看先去了解了解

项目新建完成

接下来需要安装需要的依赖
咱们要使用pinia肯定是需要安装的 不使用pinia也可以使用vuex默认有安装

yarn add pinia
# or with npm
npm install pinia

下一步就是安装tailwindcss了
需要安装tailwindcss、postcss、autoprefixer、postcss-class-rename

npm install -D tailwindcss@latest postcss@latest autoprefixer@latest

默认安装tailwindcss会是3.0版本 3.0版本新增jit模式 jit模式是什么 简单的说就是即时编译器 不理解的可以多看看文档这里不做多解释
postcss-class-rename 这个主要是对小程序里面的部分样式做修改,比如说class="w-[200]" 在浏览器里面是支持的 到了小程序就不行了 所以需要做一个更名

最后一步安装gulp 和gulp-replace
这里就有人问了,gulp是什么?为什么要安装gulp
上面我们说了小程序对部分样式不支持,需要做调整、修改,这里肯定有有人问了,上面postcss-class-rename不是做了修改了吗
postcss-class-rename修改的是css里面的,我们还需要懂构建工具去修改wxml里面的class值

所有依赖安装完成之后呢就要初始化tailwindcss了
打开命令行并找到项目目录执行这段命令

npx tailwindcss init

会在项目目录生成一个tailwind.config.js文件
里面会有一些基础配置
我的就很简单不像其他的动不动就几百行--配置如下


module.exports = {
    mode: 'jit',
    content: ["./src/**/*.vue","./src/**/*.scss","./src/**/*.css"],
    media: false,
    separator: '__',
    theme: {
        extend: {
            colors:{
                zhu_color:"#ff0000",    //这里可以定义一些项目常用的颜色--一样可以使用/来使用透明度
            },
        },
    },
    variants: {
        extend: {},
    },
    plugins: [],
    corePlugins: {//禁用一些小程序class不支持的分割
        preflight: false, // 默认样式
        // divideColor: false, // 分割边框颜色
        // divideOpacity: false, // 分割边框透明度
        // divideStyle: false, // 分割边框类型
        // divideWidth: false, // 分割边框长度
        // space: false, // 间距
        // placeholderColor: false, // 占位符颜色
        // placeholderOpacity: false, // 占位符透明度
        // ringWidth: false, // 阴影相关
        // boxShadow: false, // 阴影
        // container: false, // 容器布局
        // borderColor: false, // 边框颜色(在高版本中,生成了一个带 * 的样式,所以需要禁用)
    }
}

postcss部分

项目目录新建postcss.config.js文件
复制如下代码

const { uniPostcssPlugin } = require('@dcloudio/uni-cli-shared')

module.exports = {
    plugins: [
        uniPostcssPlugin(),
        require('autoprefixer')(),
        require("tailwindcss")({ config: require("./tailwind.config") }),
        ...(
            process.env.UNI_PLATFORM !== "h5" ? [
                    // 使用postcss-class-name 包将小程序不支持的类名写法转换为支持的类名,如:"hover:xxx"
                    require("postcss-class-rename")({
                        "\\\\:": "-",
                        "\\\\/": "-",
                        "\\\\.": "-",
                        ".:": "tailwind",
                        "\\\*": "tailwind",
                    })
                ] : [
                    require("autoprefixer")({
                        remove: true,
                    }),
                ]
        ),
    ]
}

gulp部分

在项目目录新建gulpfile.js文件
复制如下代码进去

var replace = require('gulp-replace');
const gulp = require('gulp')

const updateTailwind = async () => {
    /* 找到微信小程序构建后的文件 */
    await gulp.src('./dist/dev/mp-weixin/**/**/*.wxml')
    /* 在文本中找到class拿出来做修改 */
     .pipe(replace(/class="((\w+([-]*)|([/]?)\w)|(\w+[-]['[']\w+])?(\[\/w\]\\)?\s?)+"/ig, (match, p1) => {
        let useMatch = match;
        /* 找到/替换为- */
        if (useMatch.includes("/")) {
            useMatch = useMatch.replace("/", "-")
        }
        /* 找到[x]替换为 -x- */
        if (useMatch.includes("[")) {
            useMatch = (useMatch.replace(/\[/g, "-")).replace(/\]/g, "-")
        }
        /* 返回回去 */
        return useMatch
    }))
    /* 修改后的保存地方 */
    .pipe(gulp.dest('./dist/dev/mp-weixin/'));
}


/* 默认任务 */
gulp.task('default', function (ret) {
    return updateTailwind();
});


/* 监听src下面的文件做了修改 */
gulp.watch('src/**/**').on('change', function (event) {
    console.log(event + '文件发生了改变~');
    setTimeout(updateTailwind, 1000);
});

引入样式

在app.vue里面style节点


<style>
@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";
</style>

插件部分

vscode插件Tailwind CSS IntelliSense 可以大大提高效率

main.js部分

这里面对tailwindcss没有什么需要配置的
pinia具体使用
这里需要对pinia进行use

import App from "./App.vue";

import { createSSRApp } from "vue";
import { createPinia as createPina } from 'pinia'

export const createApp = () => ({ app: createSSRApp(App).use(createPina()) })

接下来就可以在vue文件里面使用了

启动项目npm run dev:mp-weixin之后
还需要在项目目录使用gulp命令执行gulpfile.js
如果不生效就重新启动一次

重点

在使用的时候会有默认的一些值都是rem在小程序里面也能用
但是不是那么好用
所有不建议用默认值

这里就可以完整的发挥jit的作用了
比如w-80 构建后和 width:320px; 大致是一样的

所以上面使用的gulp就要起作用了
如果想用width:750rpx; -> class="w-[750rpx]"
不仅是宽度、宽度、边距、填充都是这样需要加上rpx在H5会编译成rem在小程序会编译成rpx

在Tailwind CSS 里面颜色透明度也不用那么麻烦
和H5里面一样的使用
比如text-red-500/25 0.25透明度 后面的值也不是随便填的具体看这里

--如果有哪里写的不对的地方,还请指出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容