本文为您带来了微信小程序的相关知识,主要介绍了微信小程序开发的常用功能。本文通过实例代码向您详细介绍,对您的学习或工作具有一定的参考价值,希望对您有所帮助。
【相关学习推荐:小程序学习教程】
获取用户信息调用 wx.getUserProfile 获取用户基本信息的方法。页面产生点击事件(例如 button 上 bindtap 只有在回调中)后才能调用。授权窗口将在每个请求中弹出。用户同意后返回 userInfo
具体参数如下:
示例代码
wx.getUserProfile({ desc: '用于完善用户基本数据', // 声明获取用户个人信息后的用途,不超过30个字符 success: (res) => { console.log(res.userInfo)); } })
获得的返回值
{ "nickName": "秋梓", // 微信昵称 "gender": 0, "language": "zh_CN", "city": "", "province": "", "country": "", "avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi32/qrSYVbDBhunywgP5HTx4mhT8HVNzhmlibd8pfYo4guPJ5w/132" // 头像 }
目前,该界面是为非个人开发人员开放的,并已完成认证的小程序(不包括海外主体)。应谨慎使用。如果用户报告更多或发现在不必要的场景中使用,微信有权永久恢复小程序的界面权限。
使用方法
需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意时,可以通过 bindgetphonenumber 事件回调获得动态令牌code,然后将code传输到开发者的后台,并在开发者后台调用微信后台提供的服务 phonenumber.getPhoneNumber 用户手机号码交换接口、消费code。每个code有效期为5分钟,只能消费一次。
注:getPhoneNumber 返回的 code 与 wx.login 返回的 code 功能不同,不能混用。
代码示例
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
Page({ getPhoneNumber (e) { console.log(e.detail.code) } })
返回参数说明
然后通过 code 交换用户的手机号码。 每个code只能使用一次,code的有效期为5min
调用以下接口
POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN
请求参数
返回的 JSON 数据包
返回结果示例
{ "errcode":0, "errmsg":"ok", "phone_info": { "phoneNumber":"xxxxxx", "purePhoneNumber": "xxxxxx", "countryCode": 86, "watermark": { "timestamp": 1637744274, "appid": "xxxx" } } }
实现微信支付
调用唤起微信支付的核心方法 wx.requestPayment 该方法具体参数如下
/** * 微信支付方式 * @param {string} oderId 订单id * @param {string} total 订单金额 * @param {stromg} openId 登录人openid */ function weixinPayFun(data) { wx.showLoading({ mask: true }) const http = new Http() return new Promise((resolve, reject) => { // 请求支付界面 http.post(`${env.fayongApi}/app/shopping/order/pay`, data).then(res => { // 获取支付签名信息 let payInfo = res.data // 调动微信支付 wx.requestPayment({ "timeStamp": payInfo.timeStamp '', "nonceStr": payInfo.nonceStr, "package": payInfo.package, "signType": "RSA", "paySign": payInfo.paySign, "success": function (res) { console.log(res, 'success'); // 支付成功 resolve(res) }, "fail": function (err) { // 支付失败 reject(err) }, "complete": function (res) { wx.hideLoading() } }) }) }) }
添加到需要共享的页面中 onShareAppMessage 事件函数,事件处理函数需要 return 一个 Object,用于定制转发内容,只有定义事件处理函数,右上角的菜单才会显示“转发”按钮
onShareAppMessage 具体参数如下
静态分享
示例代码
Page({ // 分享 onShareAppMessage() { return { title: "乐福健康", // 分享标题 path: "pages/newhome/index", // 共享地址路径 } } })
添加后,单击右上角的胶囊按钮分享图标
带参分享以上共享没有参数,我们可以直接在路径中动态添加参数,用户点击共享后会触发 onLoad 函数获取路径中的参数值
// 分享 onShareAppMessage() { const that = this; return { title: that.data.goodInfo.goodName, // 动态获取商品名称 path: "pages/component/orderparticulars/orderparticulars?id=" that.data.productId, // 动态传递当前商品idid imageUrl: that.data.background[0] // 获取商品封面图 } }
在动态获取共享图片和标题后,我们每次分享时都会出现不同的内容
全局分享此外,我们还可以添加全局共享功能
首先,添加到每个页面中 onShareAppMessage 函数,函数体的内容可以是空的,如果函数体的内容是空的,我们将使用它 app.js 如果该函数返回到默认共享方法中,则定义的默认共享方法 object 使用我们自定义的共享功能
在需要共享的页面添加以下代码
Page({ /** * 用户点击右上角共享 */ onShareAppMessage: function () { // 函数体的内容是空的 } })
接着在 app.js 添加重写共享方法
///重写分享方法 overShare: function () { ///间接实现共享内容的全局设置 wx.onAppRoute(function () { //获取加载页面 let pages = getCurrentPages(), ////获取当前页面的对象 view = pages[pages.length - 1], data; if (view) { data = view.data; // 判断是否需要重写分享方法 if (!data.isOverShare) { data.isOverShare = true; view.onShareAppMessage = function () { ///重写共享配置 return { title: '分享标题', path: "/pages/index/index" //分享页面地址 }; } } } }) },
然后在 onLaunch 该方法在函数中调用
onLaunch() { this.overShare() }
在开发过程中,我们还会遇到点击共享按钮来实现共享功能,实现代码如下
首先在 html 中添加 button 按钮。其中 open-typ 要等于 share,点击此按钮注定要触发共享函数
<!-- 分享按钮 --> <van-button type="primary" icon="share" round class="search" open-type="share" size="small"> 分享 </van-button>
之后,确保我们在那里 js 中添加了 onShareAppMessage 函数
效果如下:
获取用户收货地址
获取用户接收地址。调动用户编辑接收地址的原始界面,并在编辑完成后返回用户选择的地址。
wx.chooseAddress({ success(res) { console.log(res.userName) console.log(res.postalCode) console.log(res.provinceName) console.log(res.cityName) console.log(res.countyName) console.log(res.detailInfo) console.log(res.nationalCode) console.log(res.telNumber) } })
参数说明
预览图片
调用方法:wx.previewImage(Object object)
在新页面上全屏预览图片。用户可以在预览过程中保存图片并发送给朋友。
示例代码
wx.previewImage({ current: '', // 目前显示图片的http链接 urls: [] // HTTP链接列表中需要预览的图片 })
跳转普通页面
wx.navigateTo({ url: '', })
保留当前页面,跳转到应用程序中的某个页面。但不能跳到 tabbar 页面。使用 wx.navigateBack 它可以返回到原始页面。在小程序中,页面堆栈最多10层
跳转tabbar 页面
跳转到 tabBar 关闭所有其他非所有页面 tabBar 页面
wx.switchTab({ url: '/index' })
小程序中的组件和普通页面 js 结构差异很大,结构如下
// pages/TestComponent/test.js Component({ /** * 组件的属性列表 */ properties: { userName:"" }, * 组件的初始数据 data: { * 组件的方法列表 methods: { // 获取父组件传递的参数 getPropName(){ console.log(this.data.userName); } } })
其中我们在 properties 组件组件的属性列表在对象中定义
然后在组件中添加触发 getPropName 的方法
<button bind:tap="getPropName">获取名称</button>
在我们需要引入该组件的页面上,声明该组件的名称和地址,并找到后缀 json 添加以下代码的文件
{ "usingComponents": { "test-component":"../TestComponent/test" } }
之后,我们像使用普通标签一样在页面上使用组件,并将数据传递给组件
<test-component userName="张三"></test-component>
传输数据后,我们可以点击组件中的按钮获取父组件传输的值
定义全局组件我们可以在定义组件后将其定义为全局组件
首先在项目中找到 app.json 文件,找到 usingComponents 添加组件地址
{ ...省略其他代码 "usingComponents": { "test-component":"./pages/TestComponent/test" } }
声明完成后,我们可以像使用标签一样使用组件
默认设置顶部导航栏样式在 app.json 添加以下代码
{ "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#22a381", "navigationBarTitleText": "乐福健康", "navigationBarTextStyle": "white" } }
所有参数列表
效果
找到页面 json 文件添加 "navigationStyle":"custom",可以去掉默认导航栏
{ "usingComponents": { }, "navigationStyle":"custom" }
添加自定义样式后,可以达到以下效果
【相关学习推荐:小程序学习教程】
以上是微信小程序开发常用功能总结的详细内容,请关注其他相关文章!
微信小程序开发的常用功能汇总-小程序开发
关闭服务器端口,保障网络安全无忧!
精通远程桌面连接:命令操作全攻略
微信小程序全局配置及页面配置详细说明-小程序开发
高效配置服务器IP地址,轻松上手教程
亚洲与欧洲尺码差异:选购需明智分辨!
远程桌面服务升级,提升您的协作效率!
微信小程序全局配置及页面配置详细说明-小程序开发
微信小程序开发工具介绍-小程序开发
微信小程序实战项目富文本编辑器实现-小程序开发
textarea和input在微信小程序中的问题总结-小程序开发
菜鸟包裹的一方取消了亲友-手机软件
菜鸟包裹怎么查单号多少?手机软件
菜鸟包怎么查快递单号-手机软件
如何查看菜鸟包裹快递-手机软件
菜鸟包裹怎么查快递单号-手机软件
菜鸟包裹怎么查快递到哪里?手机软件
菜鸟包裹怎么查快递是什么?手机软件
菜鸟包裹如何检查快递重量-手机软件