微信小程序开发实战记录

近期公司需要开发一个小程序项目,时间非常紧急,在开发过程中遇到几个困扰的问题及解决方案,记录如下:

小程序框架选择

  • 基础框架:小程序原生框架 + sass
  • ui: 采用 vant weapp
  • 图表:采用 ec-echarts

1 微信小程序 打开问卷星

小程序功能中有一个满意度调查的功能,不是原生功能,而是使用三方的问卷星网页链接,我们知道,小程序中需要嵌套网页的话,其中一条要求就是需要在网站的根目录下存放校验文件,但我们不可能在问卷星网站下去存放校验文件,所以这个功能当时陷入了困境,偶然查看问卷星的文档,发现其有小程序版同样可以使用问卷调查,但需要一个 activityId ,看格式与网页链接后缀中的一段 path 非常像,如下:
在这里插入图片描述
拿过来试了一下,发现真的可以使用,问题就此解决,代码如下:
在这里插入图片描述

2 微信小程序 wxs 使用正则的问题

因为小程序的机制,我们要在 wxml 中使用函数的话,只能通过 wxs 脚本的方式引入到页面中使用,在使用正则的时候,本人顺其自然的按照 js 中的语法使用正则,导致各种报错,还一头雾水,仔细阅读文档后发现,正则在小程序中的使用语法是不同的,需要使用自带的 getRegExp 方法,并且前后无需 / 作为开始、结束,方法包含两个参数,第一个为正则表达式的字符,第二个为正则的修饰符,代码如下:

var numberWithCommas = function (n) {
  return n.toString().replace(getRegExp('\B(?=(\d{3})+(?!\d))', 'g'), ',');
}

3 微信使用 echarts 层级问题

参考微信小程序,原生组件同层渲染:https://developers.weixin.qq.com/miniprogram/dev/component/native-component.html#%E5%8E%9F%E7%94%9F%E7%BB%84%E4%BB%B6%E5%90%8C%E5%B1%82%E6%B8%B2%E6%9F%93
在开发者工具中 echarts 的样式会重叠到其它组件上面,但真机中会正常显示,所以如果开发中能看得下去,就可以先不用管,解决方案的代码如下:

<view class="xc-bar">
   <!-- 目前在开发者工具中会有重叠的情况,真机不会 -->
   <ec-canvas canvas-id="xc-bar" ec="{{ ec }}" id="{{ecid}}"></ec-canvas> 
   <!-- 以下可以解决在开发者工具中重叠情况,暂无必要 -->
   <!-- <ec-canvas canvas-id="xc-bar" force-use-old-canvas ec="{{ ec }}" id="{{ecid}}"></ec-canvas> -->
</view>

4 h5 中判断是否在小程序环境中

项目中嵌入了h5 页面,在不同的环境中,某些功能是不同的,需要我们根据环境的不同来判断处理,判断方式如下,但有一个需要我们注意的问题:

export const isWx = () => {
    return new Promise(resolve => {
        try {
            if (window.__wxjs_environment === 'miniprogram') {
                resolve('mini-wx');
            } else {
                resolve('no-mini-wx');
            }
            // window.wx?.miniProgram.getEnv((res: IMini) => {
            //     if (res.miniprogram) {
            //         resolve('mini-wx');
            //     } else {
            //         resolve('no-mini-wx');
            //     }
            // });
        } catch (err) {
            resolve('no-mini-wx');
            console.log(err);
        }
    });
};

代码中判断的地方,都是官方文档所提供的,而被注释掉的部分,则是因为在某些情况下,getEnv 方法虽然存在,但并不会执行传入的方法,而导致 Promise 挂起,页面操作卡死。

5 嵌套 h5 中实现分享企微、微信和下载功能

项目中嵌入的h5有多个入口,包含分享功能,在app中可以通过bridge调起原生的分享、下载功能,但是在小程序中,因为平台限制的原因,不能调起小程序的 api,并且提供的jssdk也没有相关功能,所以在实现这个功能时,只能像淘宝等应用一样,把想要分享的数据,一键复制到粘贴板上,h5 粘贴复制的代码如下:

export const copyText = (text: string, cb?: () => unknown) => {
  const textarea = document.createElement('textarea'); // 创建一个 textarea 元素
  textarea.value = text; // 将要复制的文本赋值给 textarea 的 value 属性
  document.body.appendChild(textarea); // 将 textarea 元素添加到页面中
  textarea.select(); // 选中 textarea 的内容
  document.execCommand('copy'); // 执行复制命令
  document.body.removeChild(textarea); // 移除 textarea 元素
  cb && cb();
};

目前 execCommand 这个方法已被弃用,大家可以自行搜索最新的语法,转换也很简单

6 vant weapp 样式覆盖处理

微信小程序官方文档中说明,需要将 app.json 中的 “style”: “v2” 去除,因为小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

{
  "style":"v2", // 删除此行 
  "sitemapLocation": "sitemap.json"}
  

自定义组件中需要覆盖vant 样式时需要如下设置:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
  },
  options: { styleIsolation: 'shared', }, // 重点在这!!!
  })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序开发实战PDF下载的过程需要通过微信小程序的开发工具和相关接口来实现。首先,开发人员需要在微信小程序的开发工具中创建一个新的小程序项目,然后进行相关的页面布局和编码工作。在小程序内需要添加一个用于PDF文件下载的按钮或者链接,用户点击后触发下载操作。 在小程序中实现PDF下载的关键是使用小程序的网络请求接口和文件保存接口。开发人员需要向服务器发起HTTP请求,获取PDF文件的URL地址,并使用小程序的文件保存接口将文件保存到用户的本地设备中。为了确保下载操作的顺利进行,开发人员需要处理好网络请求和文件保存的错误处理,以提高用户体验。 另外,在实际开发中还需要考虑到PDF文件的大小和下载时间,如果文件较大可能会影响用户的下载体验,因此可以考虑使用压缩文件或者分片下载等技术来优化下载过程。同时,为了保护用户隐私和数据安全,开发人员需要确保下载的PDF文件来源可信,避免下载到恶意文件导致设备受损。 总的来说,微信小程序开发实战PDF下载需要开发人员熟练掌握小程序的开发工具和接口,结合网络请求和文件保存技术,确保用户能够顺利下载并安全地保存PDF文件。同时也需要考虑到用户体验和数据安全等方面的问题,以提高小程序的整体质量和用户满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caperxi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值