微信小程序
2023-06-27 21:03:22 0 举报
AI智能生成
学习
作者其他创作
大纲/内容
1、介绍
1、微信小程序发请求,因为小程序中<font color="#f20000">没有 DOM,BOM</font>,所以发请求要使用它<font color="#f20000">自己的 API</font>
2、<font color="#f20000">小程序就是运行在微信中的一个 App</font>
3、参考官方文档 https://developers.weixin.qq.com/miniprogram/introduction/
3、下载开发者工具地址: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
2、app的生命周期
1、 onLaunch function 否 生命周期回调——监听小程序初始化。 <br>2、 onShow function 否 生命周期回调——监听小程序启动或切前台。 <br>3、 onHide function 否 生命周期回调——监听小程序切后台。
2、参考官方文档 <font color="#f20000">https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html</font>
3、getApp<br>
1、App 实例全局只有一个,其它地方需要公共的数据,直接在app中定义数据,当作全局数据
// 数据<br> AppData:{<br> name:"我是app里面的数据"<br> },
2、在其它页面.js文件中通过getApp获取实例,改变或者查询数据
// 获取app.js实例<br>const app=getApp()<br> // 加载事件<br> onLoad(){<br> <font color="#f20000"> //修改app中的数据数据<br> app.AppData.name="app"<br> console.log(app.AppData.name);</font><br> },
4、data
1、定义data,被page函数包裹,其它页面也一起由入口函数包裹
Page({<br> data: {<br> name: 1<br> } <br> })<br>
2、可以通过this.data.属性名字操作data中的数据
<font color="#262626">1、操作的数据</font><font color="#f20000">不会在视图中进行修改</font>
2、代码实现
<font color="#f20000">console.log(this.data.name)<br>this.data.name=1+1</font><br>
3、可以通过this.setData(传递对象)操作data中的数据<font color="#f20000">(<b>特别重要</b>)</font>
1、<font color="#262626">操作的数据</font><font color="#f20000">会在视图中进行修改</font>
2、数据通讯原理原理
1、逻辑层获取数据进行序列化,异步传输的、非实时的
2、视图层需要进行反序列化获取数据,进行渲染
3、注意点:<font color="#f20000">局部更新数据,不同线程或进程进行操作,微信小程序是单线程,数据需要更新所有使用最频繁、最容易引发性能问题的</font>
4、官网原理:iOS/iPadOS/MacOS 上,数据传输是通过 <font color="#f20000">evaluateJavascript </font>实现的,还会有额外 JS 脚本解析和执行的耗时
3、使用建议
<font color="#f20000">1、只传递需要渲染的数据</font>
<font color="#f20000">2、控制使用的频率,不能以每毫秒使用一次,至少每秒</font>
<font color="#f20000">3、选择合适的更新范围,比如秒杀每一秒更新一次,更新功能封装成子模块</font>
<font color="#f20000">4、需要更新数组中的某一个数据,传递某个数据,不要传递全部数组</font>
<font color="#f20000">5、页面关闭,把使用setData的定时器关闭,不然很卡,玩微信都卡</font>
4、代码实现
<br> data: {<br> name: 1<br> }<br> // 改变视图<br> <font color="#f20000"> this.setData({<br> name: ++this.data.name<br> })</font>
5、指令
1、插值表达式 {{ }}
<br> data:{<br> badMans: [<br> {<br> id:1,name: '金轮法王',address:'蒙古'<br> },<br> {<br> id: 2,name: '欧阳锋',address: '西域'<br> },<br> {<br> id: 3,name: '杨过',address: '中都'<br> },<br> {<br> id: 4,name: '尹志平',address: '武当山'<br> }<br> ]<br> },<br><view>{{<font color="#f20000">badMans[0].id}</font>}</view>
2、条件渲染 wx:if wx:elif wx:else
data:{<br> badMans: [<br> {<br> id:1,name: '金轮法王',address:'蒙古'<br> },<br> {<br> id: 2,name: '欧阳锋',address: '西域'<br> },<br> {<br> id: 3,name: '杨过',address: '中都'<br> },<br> {<br> id: 4,name: '尹志平',address: '武当山'<br> }<br> ]<br> },<br> <view <font color="#f20000">wx:if="{{badMans[0].id>0}}">{{badMans[0].id}}</font></view><br> <view <font color="#f20000">wx:elif="{{badMans[0].id>1}}">{{badMans[0].name}}</font></view><br> <view<font color="#f20000"> wx:else>{{badMans[1].address}}</font></view>
3、wx:for 进行列表渲染
data:{<br> badMans: [<br> {<br> id:1,name: '金轮法王',address:'蒙古'<br> },<br> {<br> id: 2,name: '欧阳锋',address: '西域'<br> },<br> {<br> id: 3,name: '杨过',address: '中都'<br> },<br> {<br> id: 4,name: '尹志平',address: '武当山'<br> }<br> ]<br> },<br> <block<font color="#f20000"> wx:for="{{badMans}}" wx:key="id" wx:for-item="person" wx:for-index="m"</font>><br> <view><font color="#f20000">{{m+1}}:{{person.name}}:{{person.address}}</font></view><br></block>
6、事件绑定和事件冒泡
1、如果要阻止冒泡,那么就把 bind 换成 catch
子主题
<view>处理事件冒泡:点击儿子父亲的点击事件不受影响</view><br><view <font color="#f20000">catchtap="myTap" </font>style="background-color: skyblue;"><br>父亲<br> <button data-name="我是button" data-age="{{18}}"style="background-color: black; color: white;" <font color="#f20000">catchtap="myTap"</font>><br> 儿子<br> </button><br></view>
7、事件传参
1、通过自定义属性传参数<br>
<button <font color="#f20000">data-name="我是button" data-age="{{18}}"</font>style="background-color: black; color: white;" catchtap="<font color="#f20000">myTap</font>"><br> 儿子<br> </button>
2、接受参数
<br> myTap(e) {<br> console.log("传入的数据时", <font color="#f20000">e.target.dataset</font>);<br> }<br>
8、样式导入
1、有两个 .wxss 文件,一个 .wxss 文件可以 @import '路径'; 去引用另一个 .wxss 文件
//demo1.wxss中<br>.index{<br> font-size: 100px;<br> color: blue;<br>}<br><br>//index.wxss中<br>@import './demo1.wxss';<br>
9、尺寸单位(rpx)
1、iPhone6 的设计稿是标准,因为这款机型是过度机型,有比它大的机型,有比它小的机型,进行像素大小转换方便,如果直接从100px转换为1px就会模糊
2、在 <font color="#f20000"> iPhone6 的设计稿 1px = 2rpx</font>
10、页面生命周期函数
1、主要的生命周期函数
onLoad function 生命周期回调—监听页面加载<br>onShow function 生命周期回调—监听页面显示<br>onReady function 生命周期回调—监听页面初次渲染完成<br>onHide function 生命周期回调—监听页面隐藏<br>onUnload function 生命周期回调—监听页面卸载<br>onRouteDone function 生命周期回调—监听路由动画完成
2、 执行一次的钩子:onLoad、onReady、onUnload<br> 可能执行多次的:onShow、onHide
3、参考官网地址 https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html
11、页面跳转
1、小程序中
1、使用 wx.navigateTo({<br> url: 'url'<br>})
pageTo(){<br> wx.navigateTo({<br> <font color="#f20000"> // 地址要写全,不需要加后缀名<br> url: '/pages/demo/demo'</font><br> })<br> },
2、参考官网地址 https://developers.weixin.qq.com/miniprogram/dev/api/
2、vue2
<font color="#f20000">this.$router.push('地址')</font>
3、vue3
<font color="#f20000">const router = useRouter() router.push('地址')</font>
12、页面栈
<br>
0 条评论
下一页
为你推荐
查看更多