小程序的坑

本文介绍了小程序开发过程中遇到的各种问题及解决方案,包括数据绑定技术的应用、图片显示处理、页面跳转限制、wxml标签特性、动画冲突解决及js执行顺序等。

1、没有DOM

无法使用熟悉的$查找、document.getElementById等等这些操作,小程序取而代之的是数据绑定技术,所谓的数据驱动,就是数据改变之后,视图展示跟着自己会变。DOM没了,所以只好频繁的使用this.setData({})来操作页面属性。

tip:在方法最初最好添加 var than = this; 使用than代替this,否则方法内部函数的this会被替代。

 

2、图片问题

除tapbar外,背景图无法使用本地资源,替代方式是使用base64资源或者外网加载。每个image标签底部有一条透明间隔,非padding,非margin。在图片前面做遮罩层时可能会被坑。

 

3、跳转

小程序页面跳转打开最多五层,超出五层不会跳转了,所以大家要注意,可以在跳转的时候关闭前一个页面。

 

4、wxml标签

wxml的标签跟html里面的一些标签是一样的,就说view标签就相当于div标签,text标签相当于span标签吧,然就是表单元素,这里就要注意了,在微信小程序中,表单元素都是原生组件,微信小程序中原生组件层级最高,所以在用input,canvas,map这些组件就要注意了。其中在样式上不支持overflow-x/overflow-y,只可使用overflow。

在input标签中会出现placeholder文字位置不固定,可使用使用placeholder-class属性修改placeholder样式。input标签无法设置 font-family; 。对input直接float:left也是不行的,要在input外面套view,然后对其进行浮动。

scroll-view组件注意事项:1、不要在scroll-view 中使用 textarea、map、canvas、video 组件2、scroll-into-view 的优先级高于 scroll-top。3、在滚动 scroll-view 时会阻止页面回弹,所以在 scroll-view 中滚动,是无法触发 onPullDownRefresh。

在map组件中只能使用cover-view标签,在cover-view标签下只能使用cover-view以及cover-image标签,这两种标签在样式上的问题非常多,不建议使用,问题1、当使用display:none;做隐藏的时候,其内容文字会出现在屏幕右上角,建议使用 wx:if="false"或position:absolute;left:-1000rpx;这种方式做隐藏。2、border不支持单边。3、不支持padding的使用,在安卓端会出现padding消失的问题。

 

5、动画问题

在小程序中当有两个元素同时发生变化时,会出现冲突,导致其中一个变化,而另一个不做变化,所以要使用setTimeout方法避免元素同时出现变化。

 

6、js问题

js执行顺序,在开发者工具中执行先执行aap.js然后执行其他js文件,但在手机上app.js和其他js是同时执行的,就比如说你在app.js里面向本地存储一个变量,然后再去index.js里面取这个变量,在开发者工具中是可以取到的,但在手机上它会取不到的

转载于:https://www.cnblogs.com/xiaokele1314/p/8982071.html

微信小程序在使用 `jszip` 时确实会遇到兼容性问题,这主要与小程序运行环境的限制有关。以下是解决方案和替代方法的详细说明: ### 1. 问题分析 微信小程序的运行环境对 JavaScript 的支持有限,例如: - 无法使用 `Blob` 和 `File` 等浏览器特定的 API。 - 小程序的模块加载机制与浏览器环境不同,可能导致 `jszip` 的某些依赖无法正常工作。 - 微信小程序对异步操作的限制较多,可能影响 `jszip` 的文件压缩或解压功能。 ### 2. 解决方案 #### 2.1 使用兼容性库或封装 可以通过使用经过适配的小程序专用库来替代 `jszip`,例如: - **`jszip-miniprogram`**:这是一个专门为微信小程序优化的 `jszip` 替代库,支持大部分 `jszip` 的功能,并且解决了与小程序环境的兼容性问题。 - 安装方式: ```bash npm install jszip-miniprogram --save ``` - 使用示例: ```javascript const JSZip = require('jszip-miniprogram'); JSZip.loadAsync(url).then(function(zip) { zip.file("hello.txt").async("text").then(function(content) { console.log(content); }); }); ``` #### 2.2 使用小程序内置 API 如果只需要进行简单的文件操作,可以考虑使用微信小程序的内置 API,例如: - `wx.getFileSystemManager()`:用于获取文件系统管理器。 - `wx.downloadFile()` 和 `wx.readFile()`:用于下载和读取文件。 这些 API 可以与小程序的文件系统结合使用,从而避免引入 `jszip`。 ### 3. 替代方案 #### 3.1 后端处理 如果前端无法满足需求,可以将压缩或解压操作交给后端处理。前端通过 `wx.uploadFile()` 将文件上传至服务器,由后端完成处理后再返回结果。 #### 3.2 使用其他压缩库 除了 `jszip`,还可以尝试其他轻量级的压缩库,例如: - **`pako`**:一个基于 JavaScript 的 zlib 压缩库,支持小程序环境。 - 安装方式: ```bash npm install pako ``` - 使用示例: ```javascript const pako = require('pako'); const data = new Uint8Array([1, 2, 3, 4, 5]); const compressed = pako.deflate(data, { level: 9 }); console.log(compressed); ``` ### 4. 注意事项 - **文件大小限制**:微信小程序对本地文件的大小有限制,需注意文件操作的规模。 - **异步操作**:小程序的异步操作需要使用 `Promise` 或 `async/await`,确保代码的兼容性。 - **调试工具**:使用微信开发者工具进行调试,确保代码在小程序环境中正常运行。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值