微信小程序的几个实用小知识

本文会记录一些我在微信小程序开发中,感觉比较好用的一些小知识点,希望也能给大家带来方便。

路径别名 resolveAlias

app.json 配置

json 复制代码
{
    "resolveAlias": {
        "@utils/*": "utils/*",
        "@api/*": "api/*",
        "@config/*": "config/*",
        "@behaviors/*": "behaviors/*"
    }
}

other.js 使用

ts 复制代码
import { tokenStorage } from '@utils/storage'
// 这个方法配置了之后,就可以在别的地方这样方便的引用

缓存 storage

当缓存使用的地方,或者缓存很多的时候,如何让缓存的使用看起来不那么凌乱。以下是我的使用方法

storage.js

ts 复制代码
export interface StorageInstance {
  set: (value: any) => void;
  get: () => any;
  remove: () => void;
}

/**
 * 本地存储基本方法
 * @param key 
 * @param defaultVal 
 */
export const initStorage = (key: string, defaultVal: any = ''): StorageInstance => {
  return {
    set: (value: any) => {
      wx.setStorageSync(key, value)
    },
    get: () => {
      return wx.getStorageSync(key) || defaultVal
    },
    remove: () => {
      wx.removeStorageSync(key)
    }
  }
}

export const tokenStorage = initStorage('token')

login.js

ts 复制代码
import { tokenStorage } from '@utils/storage'
import { login } from '@api/user'

Page({
    data: {},
    methods: {
        onLogin() {
            const res = await login()
            tokenStorage.set(res.data.token)
        }
    }
})

request.js

ts 复制代码
import { tokenStorage } from '@utils/storage'

wx.request({
    headers: { Authorization: `Bearer ${tokenStorage.get()}` }
})

behaviors

behaviors 是微信小程序的一个概念,它可以让多个页面或者组件复用代码,减少重复。

eg:订单列表、订单详情都有取消订单的功能,那么就可以使用 behaviors

order-behavior.js

ts 复制代码
import { orderCancelApi } from '@api/order';

Behavior({
    data: {},
    methods: {
        orderCancel() {
            wx.showModal({
                title: '提示',
                content: '确定取消订单吗?',
                success: function (res) {
                    if (res.confirm) {
                        orderCancelApi().then(() => {
                            wx.showToast({ title: '取消成功', icon: 'none' })
                            this.refresh && this.refresh(); // 调用页面中的方法刷新数据
                        })
                    }
                }
            })
        }
    }
})

order-list.js

ts 复制代码
import { orderBehavior } from '@behaviors/order-behavior';

Page({
    behaviors: [orderBehavior],
    data: {},
    methods: {
        refresh() {
            // 刷新列表
        },
        // 取消订单
        onCancel() {
            // 调用 behaviors 中的方法
            this.orderCancel()
        },
    }
})

order-detail.js

ts 复制代码
import { orderBehavior } from '@behaviors/order-behavior';

Page({
    behaviors: [orderBehavior],
    data: {},
    methods: {
        refresh() {
            // 刷新详情
        },
        // 取消订单
        onCancel() {
            // 调用 behaviors 中的方法
            this.orderCancel()
        },
    }
})

注意点:behaviors 中的数据、方法,会被引用页面/组件的同名数据、方法覆盖。

计算属性 miniprogram-computed

app.js

ts 复制代码
import { behavior as computedBehavior } from 'miniprogram-computed'

// 挂在到全局上
wx.computedBehavior = computedBehavior

App({})

page.js

ts 复制代码
Page({
    behaviors: [wx.computedBehavior],
    data: {
        price: 12,
        count: 3,
    },
    computed: { 
        totalAmount(data) {
            return data.price * data.count
        }
    }
})
相关推荐
2501_9159090611 小时前
原生与 H5 共存情况下的测试思路,混合开发 App 的实际测试场景
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者812 小时前
了解 Xcode 在 iOS 开发中的作用和功能有哪些
android·ios·小程序·https·uni-app·iphone·webview
漏刻有时16 小时前
微信小程序学习实录14:微信小程序手写签名功能完整开发方案
学习·微信小程序·notepad++
说私域17 小时前
全民电商时代下的链动2+1模式与S2B2C商城小程序:社交裂变与供应链协同的营销革命
开发语言·人工智能·小程序·php·流量运营
2501_9151063217 小时前
iOS 抓包工具实战实践指南,围绕代理抓包、数据流抓包和拦截器等常见工具
android·ios·小程序·https·uni-app·iphone·webview
莫桐17 小时前
微信小程序tab模块滚动至顶部导航栏置顶效果实现
微信小程序·小程序
sheji341617 小时前
【开题答辩全过程】以 基于微信小程序健康跑平台的设计与实现为例,包含答辩的问题和答案
微信小程序·小程序
棒棒的唐18 小时前
适合小程序使用的将对象数组转换为参数字符串方法
前端·javascript·小程序
努力学前端Hang18 小时前
微信小程序安装tdsign组件库
微信小程序·小程序
2501_9151063218 小时前
如何在 iOS 设备上理解和分析 CPU 使用率(windows环境)
android·ios·小程序·https·uni-app·iphone·webview