首页 > 编程语言 >微信小程序加载、更新和生命周期、分享、转发、获取头像、获取昵称、手机号、客服功能、vant-app

微信小程序加载、更新和生命周期、分享、转发、获取头像、获取昵称、手机号、客服功能、vant-app

时间:2024-06-09 18:11:20浏览次数:22  
标签:console log -- 微信 更新 获取 data page vant

【上拉下拉加载】

 1 后端和路飞项目的课程表相对应
 2 
 3 
 4 -----wxml-------
 5 
 6 
 7 <view wx:for="{{goods}}" wx:key="index">{{item.name}}</view>
 8 
 9 
10 ------js-----------
11 
12 
13 Page({
14   data: {
15     page: 1,
16     goods: []
17   },
18 
19   refresh(page) {
20     wx.showLoading({
21       title: '加载中',
22       mask: true
23     })
24     wx.request({
25       url: 'http://127.0.0.1:8000/api/v1/course/actual/?page=' + page,
26       method: 'GET',
27       success: (response) => {
28         if (page == 1) {
29           this.setData({
30             goods: response.data.results
31           })
32         } else {
33           const resData = this.data.goods.concat(response.data.results)
34           this.setData({
35             goods: resData
36           })
37 
38         }
39 
40       },
41       complete: () => {
42         wx.hideLoading()
43       }
44     })
45   },
46   onl oad(options) {
47 
48     this.refresh(this.data.page)
49 
50   },
51 
52   onReachBottom() {
53     this.data.page++
54     console.log('上拉了')
55     // 发送请求,加载数据
56     this.refresh(this.data.page)
57   },
58   onPullDownRefresh() {
59     this.data.page = 1
60     this.refresh(this.data.page)
61     if(this.data.goods.length==3){
62       wx.stopPullDownRefresh()
63     }
64   },
65 })
66 
67 
68 ------wxss---------
69 
70 view{
71   height: 400rpx;
72   display: flex;
73   justify-content: center;
74   align-items: center;
75 }
76 /* 奇数 */
77 view:nth-child(odd){
78   background-color: pink;
79 }
80 /* 偶数 */
81 view:nth-child(even){
82   background-color: green;
83 }
84 
85 
86 ------json----------
87 
88 {
89   "usingComponents": {},
90   "onReachBottomDistance": 50, 距离底部还有50rpx的时候开始加载
91    ---------------------------
92     上拉刷新
93   "enablePullDownRefresh": true, # 开启
94   "backgroundColor": "#efefef",
95   "backgroundTextStyle":"dark"
96 }

 

 。

【方式二下拉上拉加载:scroll-view】

 1 ----wxml-------
 2 
 3 <scroll-view 
 4 class="scroll"
 5 scroll-y  # 运行y轴滑动
 6 lower-threshold="100"  # 距离底部还有100rpx时,触发事件
 7 bindscrolltolower="handleGetData" #事件触发函数
 8 
 9 
10 refresher-enabled="true"  # 开启 下拉刷新
11 refresher-default-style="black"
12 refresher-background="#f0f0f0"
13 bindrefresherrefresh="handleReload" # 下拉触发事件
14 refresher-triggered="{{isRefresh}}" # 设置下拉回弹,false允许回弹
15 
16 enable-back-to-top="true" # 快速回到顶部,安卓点tab,ios点顶部
17 >
18   <view wx:for="{{goods}}" wx:key="index">{{item.name}}</view>
19 </scroll-view>
20 
21 ----js------
22 
23 Page({
24   data: {
25     page: 0,
26     goods: [],
27     isRefresh: false
28   },
29   handleGetData() {
30     this.data.page++
31     console.log('上拉了')
32     // 发送请求,加载数据
33     wx.showLoading({
34       title: '加载中',
35       mask: true
36     })
37     wx.request({
38       url: 'http://127.0.0.1:8000/api/v1/course/actual/?page=' + this.data.page,
39       method: 'GET',
40       success: (response) => {
41         const resData = this.data.goods.concat(response.data.results)
42         this.setData({
43           goods: resData
44         })
45       },
46       complete: () => {
47         wx.hideLoading()
48       }
49     })
50   },
51   handleReload() {
52     console.log('下拉刷新了')
53     wx.showToast({
54       title: '下拉刷新',
55     })
56     wx.request({
57       url: 'http://127.0.0.1:8000/api/v1/course/actual/?page=' + 1,
58       method: 'GET',
59       success: (response) => {
60         this.setData({
61           goods: response.data.results
62         })
63       },
64       complete: () => {
65         wx.hideLoading()
66       }
67     })
68     this.setData({
69       isRefresh: false
70     })
71   }
72 })
73 
74 -----wxss------
75 
76 .scroll{
77   /* 100vh就是指元素的高度等于当前浏览器的视窗高度,即浏览器内部的可视区域的高度大小 */
78   height: 100vh; 
79   background-color: grey;
80 }
81 
82 view{
83   height: 400rpx;
84   display: flex;
85   justify-content: center;
86   align-items: center;
87 }
88 /* 奇数 */
89 view:nth-child(odd){
90   background-color: pink;
91 }
92 /* 偶数 */
93 view:nth-child(even){
94   background-color: green;
95 }

 

 。

【更新和生命周期】

(更新)

 1 # 1 访问小程序,微信会将小程序代码包,下载到微信本地,打开使用
 2 
 3 # 2 当小程序更新版本后,微信会检查小程序版本有没有更新,并下载最新小程序
 4 
 5 # 3 更新方式:启动时同步更新,启动时异步更新
 6     ### 同步更新:
 7     -启动时同步更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有更新,下次小程序启动时会同步进行更新,更新到最新版本后再打开小程序。如果 用户长时间未使用小程序时,会强制同步检查版本更新
 8     -如果更新失败,还是会使用本地版本
 9     -新版本发布24小时后,基本会覆盖全部用户
10     ### 异步更新####
11     启动时异步更新:在启动前没有发现更新,小程序每次 冷启动 时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包,将新版本的小程序在下一次冷启动进行使用,当前访问使用的依然是本地的旧版本代码
12     ## 强制更新###
13     在启动时异步更新的情况下,如果开发者希望立刻进行版本更新,可以使用 wx.getUpdateManager API 进行处理。在有新版本时提示用户重启小程序更新新版本

 

 1 版本更新,要在总的app.js中加入这段代码
 2 
 3 App({
 4 // 生命周期函数,启动小程序就会执行
 5 onLaunch(){
 6   const update=wx.getUpdateManager()
 7   update.onUpdateReady(function(){
 8     wx.showModal({
 9       title: '发现新版本',
10       content: '重启应用,更新版本新版本?',
11       success:(res)=>{
12         if(res.confirm){
13           update.applyUpdate()
14         }
15       }
16     })
17   })
18 }
19 })

 

 

 

(生命周期)

  (应用生命周期)

 1 App({
 2 
 3   /**
 4    * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
 5    */
 6   onLaunch: function () {
 7     console.log('小程序启动了')
 8     
 9   },
10 
11   /**
12    * 当小程序启动,或从后台进入前台显示,会触发 onShow
13    */
14   onShow: function (options) {
15     console.log('后台切前台了')
16   },
17 
18   /**
19    * 当小程序从前台进入后台,会触发 onHide
20    */
21   onHide: function () {
22     console.log('进后台了')
23   },
24 
25 })

 

(页面生命周期)

 1 Page({
 2 
 3   /**
 4    * 生命周期函数--监听页面加载
 5    */
 6   onl oad(options) {
 7     console.log('1 页面加载了')
 8 
 9   },
10 
11   /**
12    * 生命周期函数--监听页面初次渲染完成
13    */
14   onReady() {
15     console.log('3 初次渲染完成')
16   },
17 
18   /**
19    * 生命周期函数--监听页面显示
20    */
21   onShow() {
22     console.log('2 页面显示')
23   },
24 
25   /**
26    * 生命周期函数--监听页面隐藏
27    */
28   onHide() {
29     console.log('4 页面隐藏')
30   },
31 
32   /**
33    * 生命周期函数--监听页面卸载
34    */
35   onUnload() {
36     console.log('5 页面卸载')
37   },
38 
39 
40 })

【其他】

-----------------------------所有具体使用看微信小程序官方文档-------------------------------------------

(分享到朋友圈)

 1 在js中写,无需绑定事件
 2 
 3 index.wxml
 4 
 5 <navigator url="/pages/login/login">点我跳转</navigator>
 6 
 7 ------login.js-----------
 8 
 9 // 允许发送到朋友圈,右上角 ... 分享到朋友圈
10 onShareTimeline(){
11     return {
12         title:"这是一个神奇的页面",
13         query:'name=justin&age=19',
14         imageUrl:'/images/b.jpg'
15     }
16 },

 

 

(转发)

 1 # 1 方式一:通过右上方 ...
 2 # 2 方式二:通过按钮, 需要给button设置 open-type="share"
 3 
 4 --login.wxml-----
 5 <button open-type="share">转发</button>
 6 
 7 ----login.js------
 8 
 9   onShareAppMessage() {
10     return {
11       title:"是朋友就点一下",
12       path:"/pages/my/my", //当前转发的页面
13       imageUrl:'/images/b.jpg'
14     }
15 
16   },

 

 

 

(获取头像)

 1 ------wxml-----
 2 
 3 <button class="btn" open-type="chooseAvatar" bindchooseavatar="choosePhoto">
 4 <image src="{{photo}}" class="photo"/>
 5 </button>
 6 
 7 
 8 -------js--------
 9 
10 Page({
11   data:{
12     phono:'/images/b.jpg'
13   },
14   choosePhoto(event){
15     console.log(event.detail.avatarUrl)
16     this.setData({
17       phono:event.detail.avatarUrl
18     })
19 
20   }
21 })
22 
23 
24 -----wxss-----
25 
26 .btn{
27   /* 透明的 */
28   background-color: transparent;
29 }
30 /* 去掉边框 */
31 .btn::after{
32   border: none;
33 }
34 .photo{
35   height: 250rpx;
36   width: 250rpx;
37   border-radius: 50%;
38 }
39 
40 
41 先获取默认头像,然后点击头像可以选择更改头像,朝后端自己的文件中发送请求,然后更换或是获取新头像

 

 

(获取昵称)

 1 -----wxml------
 2 
 3 <input  type="nickname" placeholder="输入或获取昵称" model:value="{{username}}"/>
 4 <button type="primary" plain bind:tap="showName">提交</button>
 5 
 6 
 7 ------js---------
 8 
 9 Page({
10   data:{
11     username:"",
12   },
13   showName(){
14     console.log(this.data.username)
15   }
16 })
17 
18 
19 -----wxss---------
20 
21 input {
22   border: 1rpx solid pink;
23   border-radius: 10rpx;
24   padding: 10rpx;
25   margin: 10rpx;
26 }

双向绑定

 

(手机号)

# 1 手机号接口,必须是非个人开发者,并且完成了认证的小程序
# 2 两种验证方式需要付费使用,每个小程序账号有1000次体验额度
# 3 小程序端
# https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html


# 用在快速注册、登陆

 

(手机号快速验证)

 1 # 步骤1:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,通过 bindgetphonenumber 事件获取回调信息;
 2 
 3 # 步骤2:将 bindgetphonenumber 事件回调中的动态令牌code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。每个code有效期为5分钟,且只能消费一次。
 4 
 5 
 6 # 步骤3:后端拿到code --》调用getuserphonenumber 换取手机号
 7 https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
 8 
 9 # 步骤4:去咱们自己用户表中查
10     -能查到---之前用过,注册了--》签发token
11     -查不到--》第一次用--执行注册--》签发token

 

 

 1 -----wxml--------
 2 
 3 <button  type="warn" open-type="getPhoneNumber" 
 4 bindgetphonenumber="getPhoneNumber">快速手机号</button>
 5 
 6 -----js---------
 7 
 8 getPhoneNumber(event){
 9   console.log(event.detail.code)  // 动态令牌
10     console.log(event.detail.errMsg) // 回调信息(成功失败都会返回)
11     console.log(event.detail.errno)  // 错误码(失败时返回)
12     console.log(event)
13 },

 

 

(手机号实时验证)

 1 ------wxml-----
 2 
 3 <button  type="default" plain open-type="getRealtimePhoneNumber"
 4 bindgetrealtimephonenumber="getRealPhoneNumber"
 5 >快速手机号</button>
 6 
 7 
 8 ------js----------
 9 
10 getPhoneNumber(event) {
11     console.log(event)
12     // 通过获取手机号返回的code--传递给后端--后端调用:POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN -->获取手机号--》后端签发token给前端
13 
14     云调用
15     wx.request({
16         url: '我们后端地址',
17         method:'POST',
18         data:{
19             code:event.detail.code
20         },
21         success:(res)=>{
22             //在此返回登录信息,用户登录
23         }
24 
25     })
26 },
27 getRealPhoneNumber(event) {
28     console.log(event)
29 }

 

 

(客服功能)

# 微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通
https://developers.weixin.qq.com/miniprogram/introduction/custom.html

-----wxml------
<button type="default" plain open-type="contact">联系客服</button>

 

 

 

需要真机测试,然后点击登录网页端客服,接入,然后进行测试

 用户收到了回复

 。

【vant-app】

官网:https://vant-contrib.gitee.io/vant-weapp/#/home

(使用npm包)

 1 # 0 必须使用专门为小程序提供的npm包,通常好多包用不了,比如第三方包用了dom,小程序没有
 2 https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html#%E5%8F%91%E5%B8%83-npm-%E5%8C%85
 3     
 4 # 1 项目根目录,打开终端【在内建终端打开】
 5     -npm init -y  # 会生成package.json文件
 6 # 2 安装vant(可以使用cnpm:npm install -g cnpm --registry=https://registry.npm.taobao.org)
 7     npm i @vant/weapp -S  # package.json 能看到下载完成,项目目录下有node_modules
 8     
 9 # 3 将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱
10 
11 
12 # 4 project.config.json 的settings中加入
13     "packNpmManually": true, # 开启npm
14     "packNpmRelationList": [
15       {
16         "packageJsonPath": "./package.json",  # 制定了位置
17         "miniprogramNpmDistDir": "./"  # 小程序包的位置
18       }
19     ]
20         
21  # 5 构建 工具---》构建npm
22 
23 # 6 使用,app.json中
24 "usingComponents": {
25   "van-button": "@vant/weapp/button/index"
26 }
27     
28 # 7 复制代码放入wxml中即可,具体使用看官方文档
29 <van-image
30   round
31   width="10rem"
32   height="10rem"
33   src="https://img.yzcdn.cn/vant/cat.jpeg"
34 />

 

 

 

 

 

标签:console,log,--,微信,更新,获取,data,page,vant
From: https://www.cnblogs.com/liuliu1/p/18239028

相关文章