小程序(api)

目录

网络请求

wx.request

网络请求域名配置

每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。小程序登录后台 – 开发管理 – 开发设置 – 服务器域名。

配置域名时需要注意

  • 域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议。
  • 域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost。
  • 可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080 发起请求。如果向 https://myserver.com、https://myserver.com:9091 等 URL 请求则会失败。
  • 如果不配置端口。如 https://myserver.com,那么请求的 URL 中也不能包含端口,甚至是默认的 443 端口也不可以。如果 向 https://myserver.com:443 请求则会失败。
  • 域名必须经过 ICP 备案。
  • 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关 API 也不能在小程序内调用。 开发者应将 AppSecret 保存到后台服务器中,通过服务器使用 getAccessToken 接口获取 access_token,并调用相关 API。
  • 不支持配置父域名,使用子域名。

对请求函数的封装

主要就是调用wx.request然后返回一个promise。

    // 封装成函数
    export function zhRequest(options) {
      return new Promise((resolve, reject) => {
        wx.request({ 
          ...options, 
          success: (res) => {
            resolve(res.data)
          },
          fail: reject
        })
      })
    }
    // 封装成类
    class ZhRequest {
      // 初始化对象的时候传入请求根路径
      constructor(baseURL) {
        this.baseURL = baseURL
      }
      request(options) {
        const { url } = options
        return new Promise((resolve, reject) => {
          wx.request({
            ...options,
            url: this.baseURL + url,
            success: (res) => {
              resolve(res.data)
            },
            fail: (err) => {
              console.log("err:", err);
            }
          })
        })
      }
      get(options) {
        return this.request({ ...options, method: "get" })
      }
      post(options) {
        return this.request({ ...options, method: "post" })
      }
    }

封装成类的好处

  • 可以指定多个服务器接口请求数据
  • 可以更具体的调用哪个请求方式。

弹窗

showToast、showModal、showLoading、showActionSheet

传入配置对象就可以设置对应的效果了。

  • showToast: 显示时长是通过duration属性控制的。
  • showLoading:如果不调用wx.hideLoading()他会一直显示。
  • showModal: 确认弹框,默认底部会出现取消和确认按钮。可以传入success回调函数来监听用户点击的状态。
  • showActionSheet:抽屉弹窗。success回调是监听选择项的点击,fail回调是监听取消按钮的点击。

分享

  • 监听用户点击页面内转发按钮(button 组件 open-type=”share”)或右上角菜单“转发”按钮的行为,并自定义转发内容。
  • onShareAppMessage, 需要return一个对象来定制分享界面的展示。该函数是Page函数的一个选项。

获取设备信息,位置信息

  • 获取设备信息,wx.getSystemInfo(), 传入success回调,可以获取设备对应的信息。
  • 获取位置信息,wx.getLocation(), 传入success回调,可以获取当前位置信息。

在获取位置信息的时候需要在app.json中定义一下内容。

  "permission": {
    "scope.userLocation": {
      // 获取信息的文本提示。
      "desc": "需要获取您的位置信息"
    }
  },

Storage存储

可以存储任何数据类型的内容,不会像浏览器storage只能存储字符串类型的数据。

同步存取数据的方法

  • wx.setStorageSync(string key, any data)
  • wx.getStorageSync(string key)
  • wx.removeStorageSync(string key)
  • wx.clearStorageSync()

异步存储数据的方法:

  • wx.setStorage(Object object)
  • wx.getStorage(Object object)
  • wx.removeStorage(Object object)
  • wx.clearStorage(Object object)
    wx.setStorage({
      key: "name",
      data: "zh",
      encrypt: true, // 加密之后获取的时候也需要把该属性设置为true。
      success: (res) => {
        wx.getStorage({
          key: "name",
          encrypt: true,
          success: (res) => {
            console.log(res);
          }
        })
      }
    })

界面跳转的方式

通过navigator组件

navigator组件主要就是用于界面的跳转的,也可以跳转到其他小程序中。
小程序(api)

通过wx的API跳转

小程序(api)

跳转功能主要是通过wx.navigateTo()来实现。但是不能跳到 tabbar 页面。

一般跳转页面的时候都会携带一些数据。携带的参数可以在onLoad生命周期中拿到。

    // 页面导航操作
    wx.navigateTo({
      // 跳转的过程, 传递一些参数过去
      url: `/pages2/detail/detail?name=${name}&age=${age}`,
      events: {
        backEvent(data) {
          console.log("back:", data);
        },
        coderwhy(data) {
          console.log("why:", data);
        }
      }
    })
  }
  onLoad(options) {
    console.log(options);
    const name = options.name
    const age = options.age
  }

wx.navigateBack(Object object) 关闭当前页面,返回上一页面或多级页面。通过传入的配置设置。
小程序(api)
和上一个页面通信,我们可以这样做。

  • 方式一,获取页面对象实例
    小程序(api)
    // 点击按钮监听事件
    onTap() {
        // 返回上一级页面
        wx.navigateBack()
        // 获取到上一个页面的实例
        const pages = getCurrentPages() // 可以获取当前页面栈中的所有页面,并且当前页面也会拿到,返回一个数组。
        const prePage = pages[pages.length-2] // 拿到上一个页面实例对象
        prePage.setData() // 修改上一个页面数据。
    }
    
    // 如果想要让只要返回页面就修改数据,我们可以将上面的操作放在onUnload中
     onUnload() {
        // 获取到上一个页面的实例
        const pages = getCurrentPages() // 可以获取当前页面栈中的所有页面,并且当前页面也会拿到,返回一个数组。
        const prePage = pages[pages.length-2] // 拿到上一个页面实例对象
        prePage.setData() // 修改上一个页面数据。
    }
  • 方式二, 在小程序基础库 2.7.3 开始支持events参数,也可以用于数据的传递。跳转到的页面传递参数的方式就好像子组件像父组件传递事件一样。
    // 页面导航操作
    wx.navigateTo({
      // 跳转的过程, 传递一些参数过去
      url: `/pages2/detail/detail?name=${name}&age=${age}`,
      events: {
        // 跳转到的页面调用该函数,并传递参数。
        backEvent(data) {
          console.log("back:", data);
        }
      }
    })
    
    
    // 拿到eventChannel
    const eventChannel = this.getOpenerEventChannel()

    // 通过eventChannel回调函数
    eventChannel.emit("backEvent", { name: "zh", age: 23 })

原文链接:https://juejin.cn/post/7314519123178029068 作者:Spirited_Away

(0)
我心飞翔我心飞翔
0 0
从数据到视频:FFmpeg和rrweb-player的深入探索
上一篇 2023年12月21日 上午10:05
Memory management: V8 GC
下一篇 2023年12月21日 上午10:16

相关推荐

  • Corona技术专题-网易云音乐大前端性能监控服务的设计与实现 2024年4月11日
  • 探秘前端状态管理 — 深入浅出Vuex 2024年1月1日
  • 手摸手带你写3d地图(three.js) 2023年7月17日
  • 如何给你的项目添加测试覆盖率徽章 2024年3月17日
  • 第20天:如何使用SVG和CSS制作下雪效果 2024年3月30日
  • 又快又小的 Vite 2021年3月28日
  • Vue | 路由守卫面试常考 2021年3月28日
  • Vue-cli(Vue脚手架)中引入jQuery 2021年3月27日
  • 【plop&vscode】还在复制粘贴写代码呢,休息一下试试敲命令吧 2023年8月4日
  • Express 路由 2020年10月24日

发表回复

登录后才能评论

近期文章

  • 在 Vue 中实现类似 ahooks useRequest 的异步请求 Hook
  • 使用 nuqs 在 Next.js 中管理 URL 查询字符串状态
  • JavaScript的Iterator和for…of循环
  • 手把手使用Blender+ThreeJS制作跨栏小游戏
  • CSS的三大魔法特性:层叠、继承与优先级,让你的网页设计如虎添翼!
  • docusaurus中引入shiki实现代码高亮
  • 浏览器中如何获取用户网络状态
  • 完全掌握vue全家桶单元测试 : 6. 深入理解组件测试
  • InqureJS:手搓脚手架必备!让你的命令行交互花里胡哨!
  • 【vite.config.ts】(多环境配置)设置环境文件 .env.local
  • 腾讯、阿里、B站最新面经汇总,有的妥妥的凉经
  • 带你深入Vue.js开发实战,从复杂列表的样式到性能优化
  • 『Django』路由urls
  • go语言如何实现协程的抢占式调度的?
  • 字节面试:如何解决MQ消息积压问题?
  • web server apache tomcat11-16-mbean
  • web server apache tomcat11-17-default-servlet
  • ✅MySQL的脏读、幻读、不可重复度是什么
  • tailwindcss Vue项目CSS开发体验
  • 简单的题,内涵不简单
  • AOP使用案例-记录操作日志
  • 计算机基础系列 —— 虚拟机代码翻译器(2)
  • flea-common使用之本地国际化实现
  • 锁、mvcc、隔离级别、(脏读、不可重复读、幻读)理解
  • 【java】使用表达式处理数据 – Aviator
  • python数据类型-字符串
  • 原生桥接方式:深入了解JavaScript Bridge(JsBridge)
  • 邀请函 | Pulsar Meetup 深圳 2024
  • TTFB时间太长怎么办
  • 超实用!2024年必看的10个导航栏设计

知识题库

  • 手把手教你vue项目接入漂亮的验证码
  • 校招前端二面经典react面试题及答案_2023-03-13
  • 字节前端二面react面试题(边面边更)_2023-03-13
  • 滴滴前端一面常考vue面试题(持续更新中)_2023-03-13
  • new Vue的时候到底做了什么_2023-03-13
  • 滴滴前端高频vue面试题(边面边更)_2023-03-13
  • 为啥我要选用Element作为wljslmz.cn子系统的UI框架?
  • vue-cli 是怎么配置babel的?
  • 面试官问我按钮级别权限怎么控制,我说v-if,面试官说再见
  • Vue项目迁移小程序,实操干货分享
  • Element ui: form表单使用
  • vue中加入百度统计
  • 前端开发:如何写一手漂亮的 Vue
  • Vue-travel学习笔记
  • 前端开发者不得不知道的18个常用的网站
  • vue-awesome-swiper的用法&同一页面有多个swiper如何使用
  • 结合 Bootstrap + Vue 组件实现 Laravel 异步分页功能
  • 在 Vue.js 中通过计算属性动态设置属性值
  • Vue 组件注册:基本使用和组件嵌套
  • Vue 组件插槽:父子组件间的内容分发和插槽作用域

深圳SEO优化公司潍坊网站优化联系潍坊网赢品牌信得过双流区做优化网站响应式网站对于优化容桂网站优化策略网站制作优化仍亿灬云速捷网站建设优化首推金手指霸屏长沙网站整站优化潜江工厂网站优化宁波正规的优化网站排名网站怎么优化快济南建材行业网站优化推广有用吗五棵松网站关键词如何优化优化网站的方法甄选火29星做网站优化的技巧网站页面seo优化多少钱厦门seo网站推广优化宿迁综合网站优化是真的吗阜康外贸网站优化网站优化按天收费怀化企业网站优化公司网站结构页面布局代码标签优化干货网站的优化技巧行业供求信息网站怎么优化咸宁本地网站优化公司烟台个人网站优化怎么做无锡硕放网站优化淘宝客网站如何优化青浦区谷歌网站优化机构网站优化厂青浦区网站优化方案定制歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化