Taro3+Vue3重构Mpvue小程序项目踩坑记

news2024/9/24 1:26:43

1、Taro小程序编译时报错;

图片描述

  • 原因:页面中存在小程序识别不了的标签;如div
  • 解决方法:
      1. 将div标签替换成小程序可识别的标签;
      1. 安装Taro中提供的插件:@tarojs/plugin-html, 使其可被识别;
        插件安装教程参考Taro官网:https://taro-docs.jd.com/docs/use-h5

2、微信的page-container组件弹出时将页面滚动至顶部?

  • 原因:page-container组件弹出时,page标签会被添加上如下样式,导致页面会被滚动至顶部;
    在这里插入图片描述

  • 微信开放社区提供的解决方案可参考:https://developers.weixin.qq.com/community/develop/doc/000ca0ca3c496803b7db22fa85bc00?_at=1584495477343.;

  • 我在项目中的解决方案如下:弹出层子组件使用了nut-popup进行弹出,当父组件滚动时记录当前滚动的高度,给标签添加scroll-top属性;
    在这里插入图片描述

3、编译时提示如下错误;

  • 原因:在两个不同页面件中a.css和b.css样式文件引入先后的顺序不一致;具体原因可查看:https://laysent.com/til/2019-11-28_conflicting-order-in-mini-css-extract-plugin
    在这里插入图片描述
  • 解决方法:
    • 如果a.css和b.css文件有关联性,即b.css必须在a.css文件后引入,则在每个页面中统一CSS的引入顺序;
    • 在config/index.js文件中增加如下配置:忽略CSS引入的顺序检查;
      在这里插入图片描述

4、给本地this变量起别名时ts报错:在这里插入图片描述* 原因:eslint 为了防止this变量和局部变量混淆

  • 解决方法:在 .eslintrc.js中的rules添加 “@typescript-eslint/no-this-alias”: [“off”]

5、Taro3中不支持样式的scoped写法,容易出现页面间的样式污染,怎么解决?

  • 解决方法:
    • 1)修改冲突的选择器名称,使其不重复;
    • 2)使用CSS Modules管理每个业务页面的样式;
  • CSS Modules使用步骤:(参考Taro官网教程:https://taro-docs.jd.com/docs/css-modules)
    • 1)在配置文件中开启css modules的使用;
    • 2)修改css的文件名;页面的xxx.scss文件修改为xxx.module.scss;
    • 3)在js文件中引入xxx.module.scss文件;
    • 4)在.vue文件中使用styles.xxxx使用选择器;
    // config/index.js文件
    ...
    mini: {
        cssModules: {
           enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true
        }
    }
    ...
    
    // xxx业务模块js
    import styles from './xxx.module.scss';
    setup() {
       return {
          styles
       }
    }

6、使用modules时父子组件样式的问题;

  • 问题描述:子组件有一个样式stylesChild.A,父组件调用子组件的时候需要复用子组件的样式,但是在父组件中子组件的父容器样式是stylesParent.xxxx;那么子组件自己的样式就复用不了了;
  • 解决方法:
    • 1)子组件定义className属性,父组件使用子组件时将类名传入,在子组件中复写传入的className样式;
      在这里插入图片描述
    • 2)css modules和普通class混用, 在父组件使用子组件时给子组件添加普通class,然后在父组件中定义普通class样式;
      在这里插入图片描述

7、购物车页面数量输入框聚焦时输入键盘向上顶起,页面会滚动一段距离,导致输入框的内容移位?

  • 解决方案参考:https://developers.weixin.qq.com/community/develop/article/doc/000a00e1fd0790488e6a034f156813

8、nutui实现各组件主题颜色定制;

  • 官网配置参考链接:https://nutui.jd.com/theme/#/base

9、border-radius在模拟器和安卓手机上显示正常,但是在IOS手机上不显示;

  • 解决方法参考:https://developers.weixin.qq.com/community/develop/doc/000a6c9dee8fc0866e3b9ed5651400

  • 在使用transform的元素的上一级元素上添加如下css样式:-webkit-transform: rotate(0deg);

10、小程序打包上传预览版时提示: xxxx无依赖文件;

  • xxxx.LICENSE.txt: 为xxxx文件的注释单独存放的文件,
  • terserWebpackPlugin.extractComments:是否将注释提取到单独的文件;设置打包时为false,不将注释提取到单独的文件中;
  // config/dev.js的文件内容
  ...
  mini: {
    ...
     chain.merge({
        plugin: {
          install: {
            plugin: require('terser-webpack-plugin'),
            args: [{
              terserOptions: {
               ...
              },
              extractComments: false  // 不将注释提取到单独文件
            }]
          }
        }
      ...
    })
  }

11、小程序项目引入crypto-js插件后,提示包体积过大?

  • 解决方案:
    • 1)将插件包降级为3.1.9-1,因为4.1.1版本包含了bower和node部分,
      官网问题描述参考:https://github.com/brix/crypto-js/issues/276
    • 2)使用时不要整包加载,要按需引入;
      不建议: let CryptoJS = require(‘crypto-js’)

12、扫描/识别二维码进入指定的小程序中某个页面是怎么实现的?

  • 1)根据vue-qr和qr-code插件在后台管理系统动态生成二维码,该二维码绑定的有一个普通链接;
  • 2)在小程序开发者后台:开发管理-开发设置-扫普通链接二维码打开小程序选项中配置二维码地址和小程序打开路径的对应关系;即可实现扫二维码跳转到指定小程序的页面;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1263804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab 点云曲率计算(之二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前已经讨论过许多关于计算曲率的问题,这里使用一个通过拟合三次曲面方程的方式来计算曲率,计算过程如下图所示: 二、实现代码 %********

springboot+bootstarp+jsp房屋租赁系统ssm_t65a9

小型房屋租赁系统主要有管理员、房东和租户三个功能模块。以下将对这三个功能的作用进行详情的剖析。 管理员模块:管理员是系统中的核心用户,管理员登录后,可以对后台系统进行管理。主要功能有个人中心、房东管理、租户管理、房源城市管理、房…

数据库应用:MongoDB 库与集合管理

目录 一、理论 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 二、实验 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 三、问题 1.不显示新创建的数据库 2.插入数据报错 3.删除指定数据库报错 一、理论 1.MongoDB用户管理 (1) 内置角色 数据库用户…

什么是高级语言、机器语言、汇编语言?什么是编译和解释?

1、高级语言 计算机程序是一种让计算机执行特定任务的方法。程序是由程序员用一种称为编程语言的特殊语言编写的。编程语言有很多种,例如 C、C、Java、Python 等。这些语言被称为高级语言,因为它们更接近人类的自然语言,而不是计算机能够直接…

【LeetCode刷题】--38.外观数列

38.外观数列 方法:遍历生成 该题本质上是依次统计字符串中连续相同字符的个数 例如字符串 1112234445666我们依次统计连续相同字符的个数为: 3 个连续的字符 1, 222 个连续的 2,1 个连续的字符 3,3个连续的字符 4,1个连续的字符…

创建一个带有背景图层和前景图层的渲染窗口

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题: 创建一个带有背景图层和前景图层的渲染窗口,知识点:1. 画布转image;2. 渲染图层设置;3.…

如何高效批量生成条形码?

条形码作为商品、库存和信息管理的基础工具,扮演着至关重要的角色。为了满足用户对于高效、专业、多样化的条形码生成需求,我们推出了一款专业高效的在线条形码生成工具。 网址:https://www.1txm.com/ 多样化条形码支持 易条形支持多种常见…

Django请求生命周期流程

浏览器发起请求。 先经过网关接口,Django自带的是wsgiref,请求来的时候解析封装,响应走的时候打包处理,这个wsgiref模块本身能够支持的并发量很少,最多1000左右,上线之后会换成uwsgi,并且还会加…

Redis 主库挂了,如何不间断服务?

目录 1、哨兵机制的基本流程 2、主观下线和客观下线 3、如何选定新的主库? 总结 // 你只管前行,剩下的交给时间 在 reids 主从库集群模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的…

宠物网站的技术 SEO:完整指南

您是宠物行业网站的从业者吗?那么您一定知道,当人们寻找与宠物相关的资源时,在搜索引擎结果中排名靠前有多么重要。 这就是技术SEO的用武之地!它正在调整您网站的后端代码和服务器配置,以在 SERP 中排名更高。 在此&…

PCF8591多通道数据读取异常问题

问题描述 PCF8591在循环读取两个通道时,两个通道数据出现交错问题。 例如我们想实现:第一次读取通道一、第二次读取通道二、第三次读取通道一、第四次读取通道二……依次循环 但实际数据:第一次读取的值为0x80、第二次读取的值为通道一的值、…

西南科技大学C++程序设计实验二(类与对象一)

C++最大的特点就是面向对象,掌握它的几种基本性质还是好理解的,可以看我C++专栏的期末速成,希望对你们学习C++有帮助。 一、实验目的 1.理解简单类的定义、说明与使用 2.理解类中不同属性数据成员的访问特点 3.理解构造函数、析构函数的作用 重点:掌握类的定义与实现,…

java多线程-扩展知识一:进程线程、并发并行、同步异步

1、进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程…

前端入门(三)Vue组件化编程、脚手架、插槽插件、存储、vuex、组件事件、动画、代理

文章目录 Vue 组件化编程 - .vue文件非单文件组件组件的注意点组件嵌套Vue实例对象和VueComponent实例对象Js对象原型与原型链Vue与VueComponent的重要内置关系 应用单文件组件构建 Vue脚手架 - vue.cli项目文件结构组件相关高级属性引用名 - ref数据接入 - props混入 - mixin …

轻巧高效的剃须好工具,DOCO黑刃电动剃须刀上手

剃须刀大家都用过,我比较喜欢电动剃须刀,尤其是多刀头的悬浮剃须刀,感觉用起来很方便,剃须效率也很高。最近我在用一款DOCO小蔻的黑刃电动剃须刀,这款剃须刀轻巧易用,而且性价比超高。 相比于同类产品&…

进程和线程的关系

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:JavaEE 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 进程&线程 1. 什么是进程PCB 2. 什么是…

ABAP算法 模拟退火

模拟退火算法 算法原理及概念本文仅结合实现过程做简述 模拟退火算法是一种解决优化问题的算法。通过模拟固体退火过程中的原子热运动来寻找全局最优解。在求解复杂问题时,模拟退火算法可以跳出局部最优解获取全局最优解。 模拟退火算法包含退火过程和Metropolis算法…

【封装UI组件库系列】封装Button图标组件

封装UI组件库系列第四篇封装Button按钮组件 🌟前言 🌟封装Button组件 1.分析封装组件所需支持的属性与事件 支持的属性: 支持的事件: 2.创建Button组件 🌟封装功能属性 type主题颜色 plain是否朴素 loading等…

sqli-labs关卡21(基于cookie被base64编码的报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场需要了解的前置知识1、什么是base64编码? 三、靶场第二十一关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于…

基于scrapy框架的腾讯招聘信息网络爬虫设计与实现

基于scrapy框架的腾讯招聘信息网络爬虫设计与实现 摘要:随着网络科技技术的快速增长,网络数据已经成为一种极其重要的资源。如今的一个研究热点是如何快速和有效率地寻找、提取、分析数据。对于这些方法,运用Python的Scrapy框架可以设计出网…