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

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

路径别名 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
        }
    }
})
相关推荐
m0_462803882 小时前
【无标题】
微信小程序
小码哥0684 小时前
从三甲综合医院到连锁诊所:医院管理小程序的场景化突围逻辑(陪诊系统-陪诊APP-陪诊小程序)
小程序·医院管理系统·陪诊小程序·陪诊系统·陪诊app
2501_916007475 小时前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
正在走向自律6 小时前
用豆包Seed Evolving打造全功能【AI智能记账】小程序,开源可落地
人工智能·小程序·开源·智能记账
小羊Yveesss1 天前
模板建站哪个平台好?模板数量之外还要比较编辑与SEO能力
大数据·人工智能·小程序
2501_916007471 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
郑州光合科技余经理1 天前
家政O2O平台解析:从0搭建上门预约小程序解决方案
android·java·开发语言·前端·小程序·架构·php
维双云1 天前
小程序商城制作一个需要多少钱?2026报价明细与成本拆解
小程序
郑州光合科技余经理1 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php
电商API_180079052471 天前
导购比价小程序场景|京东联盟商品详情对接方案|多规格图文拉取技术实操
网络·小程序·网络爬虫