Skip to main content

Command Palette

Search for a command to run...

微信小程序开发体验 - 1

Published
1 min read
T

A simple developer.

记录微信小程序开发遇到的一些特殊tips

小程序开发文档

  1. 微信登陆:

一般都是调用微信接口后,拿到code再调用自己服务端的登陆接口传输刚才拿到的code过去,最后由服务端返回用户信息

// 自动调用微信接口登陆
wx.login({
    timeout: 30000,
}).then(res=>{
    return Promise.resolve(res.code)
}).then(code => {
    return myApi.login({code})
}).then(userInfo => {
    // 登陆成功处理
}).catch(err => {
    // 登陆失败处理(这里服务端可配合,自动注册之类的东西)
})
// 手动拉起用户
wx.getUserProfile({
      desc: '用于绑定平台账号', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
}).then(res=>{
    return wx.login({
         timeout: 3000,
    })
}).then({ code } => {
    return myApi.login({ code })
}).then(userInfo => {
    // 登陆成功处理
}).catch(err => {
    // 登陆失败处理(这里服务端可配合,自动注册之类的东西)
})
  1. 设置css背景

在微信小程序中CSS无法设置 图片静态资源 为路径的 background-url,只接受 <image> 标签 或者将图片转换成 database64

  1. 模块语法

在小程序中,可以同时使用 commonJsESModule

  1. 双向数据绑定实现

小程序没有帮我们实现类似vModel的语法糖,不过根据原理我们可以自己很容易实现

// 模板
<input value="{{ form.someValue }}" bindinput="handleInput" />
Page({
    ...

    handleInput (e) {
        var value = e.detail.value // 当前值
        var pos = e.detail.cursor // 当前光标位置
        this.setData({
           'form.someValue': value
        })

        return {
              value, // 可以过滤值
              cursor: pos - 1 // 还可以控制光标的位置
        }
    }
})
  1. Toast 提示问题

wx.showToast(options)options.icon 支持以下值: 'success' | 'error' | 'loading' | 'none',需要注意的是:

icon !== 'none' 时,最多都只能显示出七个汉字长度;

icon === 'none' 时,最多显示两行文本。

故此在使用时需要注意文案的选择

  1. 人脸识别调用

人脸识别涉及到用户隐私信息,因此需要申请使用API,在开通小程序后台的接口权限入口后,开发者可以登录mp.weixin.qq.com小程序账号,在设置-接口能力中,开通接口能力。

  • wx.checkIsSupportFacialRecognition(opt) 函数,检查当前设备是否支持人脸识别

  • wx.startFacialRecognitionVerify(opt) 函数,拉起微信人脸识别组件,进行人脸识别

eg:

wx.checkIsSupportFacialRecognition({
      success() {
        wx.startFacialRecognitionVerify({
            name: '待验证者姓名',
            idCardNumber: '待验证者身份证号',
            success (res) {
                ... // 此时已通过人脸识别认证,可以用res即认证后结果来做其他事了
            },
            fail(){...}
        })
      },
      fail() {
        wx.showToast({
          title: '当前设备不支持人脸识别,请更换设备后重试',
          icon: 'none'
        })
      }
})

More from this blog

Git 无法正常访问问题解决 —— DNS无法解析git地址

在国内网络经常会无法访问github,一般呈现错误为: github.com 打不开 git 操作 clone/push/pull/fetch 超时等 这普遍由于国内DNS解析github相关域名的问题,国内DNS解析污染会导致,无法解析github相关域名,使得我们无法获悉正确ip而无法访问。 偏方一剂:修改Host,固定绑定 domain - ip 查询相关域名的解析 IPAddress github.com github.global.ssl.fastly.net asse...

Sep 22, 20221 min read

Vue SSR实战小练

思想 开发环境: 在webpack dev与pro的前端打包构建基础上, 添加webpack server compiler的服务,其为单独创建的node服务,用于渲染html代码并返回给客户端。(其他JS...则仍旧交由webpack dev server来构建) 所以在获取html后要再自行将dev客户端渲染的js加入到html中 在生产环境则不需如此: 由dev与server打包好的文件,将其组合 客户端则访问node服务来获取文件 基本用法 安装:npm install v...

Sep 5, 20229 min read

Jsonp 跨域解决方案解析

由来背景 As we all know,浏览器同源策略会将非同源请求(跨域)抛弃,而许多时候我们可能并未将前端资源与服务端服务放在一个服务器,此时就需要一个跨域的手段了。 基于此,针对同源策略,衍生了一种跨域的方法Jsonp。 Jsonp简单讲,即利用了script标签不受浏览器同源策略影响的特性,从而利用script想服务端跨域请求的方式。 原理解析 图下图所示 封装一个Jsonp函数,Promise化 // jsonp.ts type JsonpOptions<T extends Reco...

Sep 2, 20222 min read
Jsonp 跨域解决方案解析

唯在一心

15 posts

A simple developer.

微信小程序