当前位置: 首页 > news >正文

Taro + Vue 在小程序里用上 scoped 样式

头疼

用 Taro 开发小程序时,如果你选了 Vue 技术栈,大概率会遇到一个头疼的问题:<style scoped>在小程序里不生效。

Vue SFC 的 scoped 原理是给元素加上data-v-xxx属性,再用属性选择器做样式隔离。但小程序平台对属性选择器的支持参差不齐,加上 Taro 编译对小程序的限制,最终导致 scoped 样式直接失效。

在用Taro + Vue开发小程序时头疼无法使用scoped样式,而是得用Taro官方介绍的 module 去编写,这种写法太麻烦了

// 得去config/index配置cssModules:{enable:true,// 默认为 false,如需使用 css modules 功能,则设为 trueconfig:{namingPattern:"module",// 转换模式,取值为 global/module,下文详细说明generateScopedName:"[name]__[local]___[hash:base64:5]",},};// vue中使用<template><view:class="$style.container">Hello</view></template><style lang="scss"scoped>.container{padding:20px;color:red;}</style>

今天分享一个刚开源的小插件taro-scoped-styles,专门来填这个坑。

它做了什么

一句话概括:把data-v-xxx属性选择器转换成类名选择器,让 scoped 样式在所有小程序平台都能正常工作。

转换在编译阶段完成,零运行时开销,装上即用,不用改业务代码。

主要特性

  • 纯编译时转换,零运行时开销
  • 兼容所有 Taro 支持的小程序平台
  • 支持 Vue 3 和 Vue 2
  • 支持 CSS / SCSS / Less / Stylus
  • 支持:deep()/::v-deep/>>>深度选择器
  • 不影响非 scoped 样式
  • 仅在小程序端生效,不会干扰 RN、H5 等平台

如何使用

1. 安装

npminstalltaro-scoped-styles --save-dev# 或yarnaddtaro-scoped-styles-D# 或pnpmaddtaro-scoped-styles-D

2. 配置

在 Taro 的配置文件里加上插件即可,无需其他额外配置:

constconfig={plugins:['taro-scoped-styles']}

编译时插件会自动处理,开箱即用。

3. 使用

跟之前正常使用即可

<template><viewclass="container">Hello</view></template><style scoped>.container{padding:20px;color:red;}</style>

兼容性说明

  • Taro 版本:完美支持 Taro 3.x 和 Taro 4.x
  • Vue 版本:Vue 3(推荐)/ Vue 2 均可
  • 小程序平台:微信、支付宝、字节、百度、QQ、京东全覆盖
  • 非小程序平台:H5 / React Native / Harmony 原生支持 scoped,插件会自动跳过,不做多余处理
http://www.cnnetsun.cn/news/3252781.html

相关文章:

  • pip 23.0+ 版本升级失败后修复:从 ModuleNotFoundError 到完整恢复的 5 个步骤
  • 2026年AI量化提效,工具重点要跟阶段走
  • Selenium 4.0 多线程爬虫避坑指南:3个关键配置解决 WebDriver 线程安全问题
  • STM32C8T6 门禁系统 3 种人脸识别方案对比:OpenMV LBP 与离线模块实测
  • STM32F103C8T6 + RFID 门禁系统实战:从原理图到代码的 5 个关键模块解析
  • SLAM 将PCL点云转换成八叉树地图
  • Stable Diffusion 2026最新版本地部署教程:一键安装到出图
  • 增强现实应用开发学习心得
  • AI重塑IT行业:从印度招聘趋势看技术转型与职业发展
  • ZEMAX 光学仿真:对比3种透镜聚焦光斑直径计算公式的适用场景与误差
  • PyTorch .pt/.pth/.pkl 3种格式深度对比:存储内容、加载速度与安全性实测
  • 请求参数重复定义报错,DMXAPI 聚合平台开发AI 排错工具,清理重复 JSON 字段
  • 0-10V转4-20mA模块电路设计:运放+三极管方案实测,负载电阻≤500Ω
  • 物联网安全那点事:一把打开“零信任之门”的金钥匙——设备接入认证与通信加密的全栈剖析
  • 呼和浩特中小企业做 GEO 推广选哪家?本土爱笑传媒一站式 AI 搜索获客方案
  • MC9S12XS128 智能车图像处理实战:100x160 分辨率下 3 种二值化算法效率实测
  • 能做3D的AI视频工具怎么选?即梦Seedance 2.5强势来袭!
  • 计算机毕业设计之基于ssm的校园跑腿管理系统的设计与实现
  • Spring Boot 3 + Vue 3 + MySQL 智慧诊疗系统源码 前后端分离 AI 辅助诊断项目实战
  • 真正的2亿像素体验,究竟由什么决定?
  • lk2nd 移植实战:为广信 EF33 老年机添加 ST7789V SPI 屏支持的 2 个核心补丁
  • DeepSeek V4 API价格策略解析与成本优化实战指南
  • 华为 MH5000-31 5G模组 Windows/Linux 双平台部署:从驱动安装到AT指令上网全流程
  • macOS Catalina下Jupyter Notebook配置全指南
  • OCRAutoScore:基于多模态AI的智能阅卷系统架构解析
  • 在线算法在实时推荐系统中的应用与性能保障7
  • 代理模式和适配器模式区别
  • HarmonyOS 小游戏《对战五子棋》开发第23篇 - 保持棋盘正方形
  • 维度建模实战:电商数仓 6 步构建星型模型,产出 10+ 核心事实/维度表
  • 直流有刷电机驱动方案:TC78H651AFNG与PIC18F85J10实战