微信小程序开发指南

目录结构

├─ config/ # 配置目录
│ ├─ index.js # 存储配置信息
├─ libs/ # 工具方法库
│ ├─ utils.js # 解析字符串的工具方法
├── wechat/ # 核心功能库
│ ├─ auth.js # 验证服务器和回复用户消息功能
│ ├─ reply.js # 处理返回消息功能
│ ├─ template.js # 回复消息模板文件
│ ├─ wechat.js # 类 wechat
├── index.js # 入口启动文件
├── package.json # 配置文件

一、赋值

this.setData({ show: true });

二、顶部标题栏(隐藏)

{
  "window":{"navigationStyle":"custom"}
}

三、跳转

wx.navigateTo({
 url: '/pages/index/index'
})

四、缓存

1.缓存获取:

wx.getStorageSync('UserData')

2.存入缓存:

wx.setStorageSync('token', data)

2.清空缓存:

 wx.clearStorageSync()

五、接口

utils文件下api.js

let host = "后端接口地址"

let api = {
  byWeappCode: `${host}功能接口路径`,
}
module.exports = api

页面导入

import api from './utils/api'

① GET请求

let param = {
  API_URL: api.(接口)+this.id,
  method: "GET",
};

② POST请求

let data = {this.id}
let param = {
 data,
 API_URL: api.(接口),
 method: "POST",
};

示例请求

// 示例请求
let param = {
  API_URL: api.byWeappCode,  // 根据接口路径构建完整 URL
  method: "POST",  // 或 "GET"
  data: {}  // POST 请求时需要传递的数据对象
};

getData.result(param).then((res) => {
  wx.hideLoading();  // 隐藏加载提示
  if (res.statusCode == 200) {
    // 处理成功响应
  } else {
    // 处理其他响应
  }
}).catch((error) => {
  wx.hideLoading();  // 隐藏加载提示
  // 处理请求错误
});

六、遍历列表,事件处理函数中获取当前项的信息

<!-- 外层列表循环 -->
<view wx:for="{{列表}}" wx:key="item">
  <!-- 绑定点击事件 -->
  <view bindtap="事件名">
    <!-- 显示外层列表项的 id 和 name -->
    {{item.id}}{{item.name}}
    <!-- 内层列表循环 -->
    <view wx:for="{{item.arr2}}" wx:for-item="items" wx:key="items">
      <!-- 显示内层列表项的 title -->
      <view>{{items.title}}</view>
    </view>
  </view>
</view>
事件名: function(event){
  console.log(event.currentTarget.dataset.item.id);
}

七、定位

//app.json中
{
 // 配置用户权限申请说明
 "permission": { 
 // 申请获取用户位置信息的权限
  "scope.userLocation": {
   "desc": "你的位置信息将用于小程序位置接口的效果展示" // 描述申请此权限的用途
  }
 },
 // 配置需要获取的私有信息权限
 "requiredPrivateInfos": [
  "getLocation", // 获取用户位置信息的权限
  "onLocationChange", // 监听用户位置变化的权限
  "startLocationUpdateBackground" // 在后台启动位置更新的权限
 ]
}

方法案例①

//位置坐标
shouLocation() {
 let that = this; // 保存当前上下文的引用
 wx.getLocation({// 调用 wx.getLocation 获取当前地理位置
  type: 'wgs84', // 返回 gps 坐标,默认为 'wgs84'
  success(res) {// 成功获取位置信息
   const latitude = res.latitude; // 获取纬度
   const longitude = res.longitude; // 获取经度
   
   that.setData({
    'form.location': '{"lat":' + latitude + ',"lng":' + longitude + '}', // 设置位置 JSON 字符串
    location: '已获取' // 设置位置状态
   });// 更新页面数据

   // 显示通知提示用户位置获取成功
   Notify({
    type: 'primary', // 通知类型
    message: '已获取成功', // 通知消息
    duration: 700, // 通知显示时长,单位毫秒
   });
  },
  fail(error) {// 获取位置失败时的处理
   console.log('获取位置信息失败', error);
   Notify({
    type: 'danger', // 通知类型
    message: '获取位置信息失败', // 通知消息
    duration: 700, // 通知显示时长,单位毫秒
   });
  }
 });
}

方法案例②

builtInSearch({ code, name }) {
 return new Promise((resolve, reject) => {
  // 获取用户的当前设置
  wx.getSetting({
   success: (res) => {
    // 检查用户是否拒绝了指定的权限
    if (res.authSetting[code] === false) {
     // 显示一个提示框,告知用户权限被拒绝,并引导用户前往设置页面开启权限
     wx.showModal({
      title: `获取${name}失败`, // 提示框标题
      content: `获取${name}失败,请在【右上角】-小程序【设置】项中,将【${name}】开启。`, // 提示框内容
      confirmText: '去设置', // 确认按钮文字
      confirmColor: '#FA550F', // 确认按钮颜色
      cancelText: '取消', // 取消按钮文字
      cancelColor: '#000000', // 取消按钮颜色
       success(res) {
        if (res.confirm) {
         // 用户点击了确认按钮,打开设置页面
         wx.openSetting({
          success(settingRes) {
           // 检查用户是否在设置页面开启了权限
          if (settingRes.authSetting[code] === true) {
           resolve(); // 权限开启,resolve promise
          } else {
           console.warn('用户未打开权限', name, code); // 权限未开启,记录警告信息
           reject(); // 权限未开启,reject promise
          }
         },
        });
       } else {
        reject(); // 用户取消操作,reject promise
       }
      },
      fail() {
       reject(); // 提示框调用失败,reject promise
      },
     });
    } else {
     resolve(); // 用户已授权,resolve promise
    }
   },
   fail() {
    reject(); // 获取设置失败,reject promise
   },
  });
 });
},

onSearchAddress() {
 // 调用 builtInSearch 方法检查和获取用户的地址位置权限
 this.builtInSearch({ code: 'scope.userLocation', name: '地址位置' }).then(() => {
  // 用户已授权,调用 wx.chooseLocation 选择地址
  wx.chooseLocation({
   success: (res) => {
    console.log(res); // 打印选择的地址信息
    if (res.name) {
     // 如果选择的地址有名称,触发 addressParse 事件
     this.triggerEvent('addressParse', {
      address: res.address, // 选择的地址
      name: res.name, // 选择的地点名称
      latitude: res.latitude, // 选择的地点纬度
      longitude: res.longitude, // 选择的地点经度
     });
    } else {
     // 地址为空,显示提示
     console.log('地点为空,请重新选择');
    }
   },
   fail: function (res) {
    console.warn(`wx.chooseLocation fail: ${JSON.stringify(res)}`); // 打印错误信息
    if (res.errMsg !== 'chooseLocation:fail cancel') {
     // 选择地点失败且不是用户取消操作,显示提示
     console.log('地点错误,请重新选择');
    }
   },
  });
 });
},

八、静默登录

// app.js
import api from './utils/api' // 导入接口配置文件

App({
 onLaunch() {
  wx.login({// 调用 wx.login 接口进行登录
   success: res => {
    console.log(res.code); // 登录成功,打印返回的 code
    // 发送 code 到后台换取 openId, sessionKey, unionId
    wx.request({
     url: api.byWeappCode, // 后端接口地址
     data: {
      code: res.code // 登录返回的 code
     },
     method: 'POST', // 请求方法为 POST
     success: (response) => {// 请求成功,打印返回的响应数据
      console.log(response);
      wx.setStorageSync('token', response.data.access_token);// 将返回的 access_token 存入缓存
     },
     fail: (err) => {
      console.log('请退出重新登录');// 请求失败,打印错误信息
     }
    });
   }
  });
 },
 globalData: {
  userInfo: null // 全局数据对象,存储用户信息
 }
});

九、tabBar

{
 "tabBar": {
  "custom": true, // 是否自定义 tabBar
  "color": "#666666", // 未选中时的字体颜色
  "selectedColor": "#FF5F15", // 选中时的字体颜色
  "backgroundColor": "#ffffff", // tabBar 背景色
  "borderStyle": "black", // tabBar 上边框的颜色,仅支持 black/white
  "list": [
   {
    "pagePath": "pages/home/home", // 对应页面的路径
    "text": "首页" // 显示在 tabBar 上的文字
   },
   {
    "pagePath": "pages/goods/category/index", // 对应页面的路径
    "text": "分类" // 显示在 tabBar 上的文字
   },
   {
    "pagePath": "pages/cart/index", // 对应页面的路径
    "text": "购物车" // 显示在 tabBar 上的文字
   },
   {
    "pagePath": "pages/usercenter/index", // 对应页面的路径
    "text": "我的" // 显示在 tabBar 上的文字
   }
  ]
 },
}

注意事项:

1.配置文件位置:
 tabBar 配置必须写在 app.json 文件中,不支持动态配置。
2.tabBar 项数量:
 最少配置 2 项,最多配置 5 项。如果超过 5 项,会被微信小程序框架限制。
3.路径配置:
 pagePath 必须是小程序内的页面路径,并且这些页面必须在 app.json 中的 pages 数组中声明。
4.图标配置:
 可以配置每个 tabBar 项的图标(icon),通过 iconPath 和 selectedIconPath 来设置未选中和选中状态的图标。
 图标文件大小不超过 40KB,建议使用尺寸为 81px * 81px,图片格式仅支持 PNG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

俎树振

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

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

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

打赏作者

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

抵扣说明:

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

余额充值