原生微信小程序常见 API 使用案例

简介: 原生微信小程序常见 API 使用案例

image.png


关键词:demo collections 微信小程序

demo 源码:gitee.com/huakangkane…


Canvas


canvas 文档

重要:canvas 基础使用

结合 onShareAppMessage 使用demo:

<style>
/* wxss */
.cantSee {
  width: 320px;
  height: 256px;
}
</style>
<!-- wxml -->
<canvas class="cantSee" type="2d" ></canvas>
<button open-type="share">分享</button>
<!-- js -->
<script>
Page({
  data: {
    imgPath: ''
  },
  onShow() {
    this.draw()
  },
  draw() {
    // 获取元素
    wx.createSelectorQuery()
      .select('.cantSee')
      .fields({ node: true, size: true })
      .exec(this.initImagePath.bind(this));
  },
  initImagePath(list) {
    const dpr = wx.getSystemInfoSync().pixelRatio;
    const item = list[0];
    const canvas = item.node;
    const context = canvas.getContext('2d');
    const { width } = item;
    const { height } = item;
    canvas.width = width * dpr;
    canvas.height = height * dpr;
    context.scale(dpr, dpr);
    // 设置背景/方块
    context.fillStyle = 'green';
    context.fillRect(0, 0, width, height);
    // 画圆
    context.fillStyle = 'blue';
    context.beginPath();
    context.arc(550, 300, 400, 0, Math.PI * 10);
    context.strokeStyle = 'rgba(1,1,1,0)';
    context.fill();
    context.stroke();
    // 设置边框
    context.strokeStyle = '#666';
    context.strokeRect(0, 0, width, height);
    // 写字
    context.fillStyle = '#fff';
    context.font = '70px "Fira Sans"';
    context.textAlign = 'center';
    context.fillText('测试', 160, 120);
    // 再写一个
    context.font = '20px "Fira Sans"';
    context.textAlign = 'center';
    context.fillText('测试', 160, 190);
    context.restore();
    const _this = this;
    // 保存为图片
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      width,
      height,
      canvas,
      success: (res) => {
        _this.setData({
          imgPath: res.tempFilePath
        })
      },
    });
  },
  // 点击分享
  onShareAppMessage() {
    const { imgPath } = this.data
    return {
      title: `自定义标题`,
      path: `/pages/index/index`,
      imageUrl: imgPath,
      success(res) {
        // 转发成功之后的回调
        if (res.errMsg === 'shareAppMessage:ok') {
          // ...
        }
      },
      fail(res) {
        // 转发失败之后的回调
        if (res.errMsg === 'shareAppMessage:fail cancel') {
          // 用户取消转发
        } else if (res.errMsg === 'shareAppMessage:fail') {
          // 转发失败,其中 detail message 为详细失败信息
        }
      }
    }
  },
})
</script>

效果:


image.png

上传文件/图片


实现上传功能通常可以直接使用 UI 框架自带的上传组件

如果需求比较简单,或者定制化程度比较高。也可以自己简单实现一个:

wx.chooseMedia 选择文件

wx.uploadFile 上传

Page({
  data: {
    imgUrl: null
  },
  // 上传图片
  async toModifyImage() {
    const _this = this;
    try {
      const tempFilePath = await new Promise((resolve, reject) => {
        wx.chooseMedia({
          count: 1,
          mediaType: 'image',
          sizeType: ['compressed'],
          sourceType: ['album', 'camera'],
          success: (res) => {
            const { tempFilePath, size } = res.tempFiles[0];
            if (size <= 10485760) {
              resolve(tempFilePath);
            } else {
              reject({ errMsg: '图片大小超出限制,请重新上传' });
            }
          },
          fail: (err) => reject(err),
        });
      });
      // 上传
      wx.uploadFile({
        url: `/api/uploadFile`, // 上传接口
        filePath: tempFilePath,
        header: { Authorization: wx.getStorageSync('token') },
        name: 'file',
        success({ statusCode, data }) {
          if (statusCode === 200) {
            const result = JSON.parse(data);
            const { imgUrl } = result.data;
            _this.setData({ imgUrl });
          }
        },
      });
    } catch (error) {
      if (error.errMsg === 'chooseImage:fail cancel') return;
      console.log('上传图片报错', error);
    }
  },
})


地图组件/导航


map 地图组件

腾讯位置服务

腾讯位置服务 微信小程序中使用API

wx.chooseLocation

最简单的就是直接把Map组件塞进去,增加功能就添加对应的插件服务,其实没什么难度。按照文档一步步执行就能出效果。下面是基于官方文档写的简单的业务需求:展示位置,点击按钮进行导航。

// app.json
{
  // ...
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序定位"
    }
  },
  "requiredPrivateInfos": [
    "chooseLocation",
    "getLocation"
  ],
  "requiredBackgroundModes": [
    "location"
  ],
  "sitemapLocation": "sitemap.json",
  // 微信路线规划插件
  "plugins": {
    "routePlan": {
      "version": "1.0.18",
      "provider": "wx50b5593e81dd937a"
    }
  }
}
<view class="map-wrap">
  <map
    id="mapId"
    class="map"
    subkey="{{subkey}}"
    latitude="{{latitude}}"
    longitude="{{longitude}}"
    bindmarkertap="onMarkerTap"
  ></map>
</view>
<view class="btn-wrap">
  <button bindtap="onAppNav">微信导航(推荐)</button>
  <button bindtap="onPluginNav">小程序导航</button>
</view>
<script>
Page({
  data: {
    latitude: 23.099994,
    longitude: 113.324520,
    // 申请的腾讯位置服务key
    subkey: ''
  },
  // 聚合图层示例代码 https://developers.weixin.qq.com/miniprogram/dev/component/map.html
  // app导航
  onAppNav() {
    const { detail, latitude, longitude } = this.data;
    wx.openLocation({
      name: detail,
      latitude: +latitude,
      longitude: +longitude,
    });
  },
  // 小程序导航
  onPluginNav() {
    const { subkey, detail, latitude, longitude } = this.data;
    const referer = '小程序'; // 调用插件的app的名称
    const endPoint = JSON.stringify({
      //终点
      name: detail,
      latitude: +latitude,
      longitude: +longitude,
    });
    wx.navigateTo({
      url: `plugin://routePlan/index?key=${subkey}&referer=${referer}&endPoint=${endPoint}`,
    });
  },
})
</script>


添加公众号关注


微信提供了在扫二维码的场景下展示的公众号组件<official-account></official-account>, 所以在业务上主要兼容非扫码进入的场景(scene!==1011)。我们可以利用 web-view 组件跳转到关联的公众号上,公众号发布一篇关注的文章,就能解决。注意:需要在开发管理->开发设置->服务器域名 中添加 https://mp.weixin.qq.com

目录
相关文章
|
4月前
|
小程序 安全 JavaScript
微信小程序API+京东支付,无缝结账体验满分!
在数字化时代,支付体验成为电商竞争关键。本文详解如何通过微信小程序API无缝集成京东支付,实现“一键结账”流畅体验。结合微信庞大用户基础与京东支付安全高效优势,助力电商业务提升转化与用户满意度。
218 0
|
5月前
|
人工智能 自然语言处理 小程序
微信小程序+淘宝API,无缝购物体验提升复购率!
在电商竞争激烈的当下,微信小程序与淘宝API的整合为商家提供了一条提升用户体验与复购率的创新路径。本文详解其整合原理、实现步骤及优势,助力商家打造无缝购物体验,提升转化效率。
250 0
|
3月前
|
安全 NoSQL API
拼多多:通过微信支付API实现社交裂变付款的技术解析
基于微信JSAPI构建社交裂变支付系统,用户发起拼单后生成预订单与分享链接,好友代付后通过回调更新订单并触发奖励。集成微信支付、异步处理、签名验签与Redis关系绑定,提升支付成功率与裂变系数,实现高效安全的闭环支付。
456 0
|
4月前
|
移动开发 小程序 安全
微信API社交裂变工具,老带新流量成本归零!
在数字化营销时代,利用微信API构建社交裂变工具,可实现“老带新”的病毒式传播,大幅降低获客成本。本文详解如何通过微信API实现零成本流量增长,解析裂变机制与技术实现。
226 0
|
4月前
|
数据采集 小程序 搜索推荐
微信小程序API+淘宝数据分析,决策精准如神助!
本文探讨如何结合微信小程序API与淘宝数据分析,实现数据驱动的智能决策。通过实时数据采集、用户行为分析与机器学习模型,助力企业提升运营效率与市场竞争力,实现精准营销与高效决策。
130 0
|
5月前
|
供应链 小程序 API
微信小程序API集成京东库存,移动端销量暴涨!
在数字化时代,微信小程序与京东库存系统集成成为提升移动端销量的关键策略。本文详解如何通过API实现库存实时同步、优化用户体验,推动销量增长50%以上,并结合实际案例与代码示例,为企业提供可落地的解决方案。
174 0
|
8月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
8月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
11月前
|
JSON 小程序 JavaScript
原生微信小程序笔记完整总结
原生微信小程序笔记完整总结
506 1
|
10月前
|
缓存 小程序 API
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。

热门文章

最新文章