微信小程序--逻辑层与界面层(1)

57 console.log(getCurrentPages());
58 console.log("当前调用栈中的页面数量: " + getCurrentPages());
59 }
60
61 })

1 // pages/demo/demo.js
2
3 //获取当前小程序对象实例
4 var app = getApp();
5 Page({
6
7 /**
8 * 页面的初始数据
9 /
10 data: {
11
12 },
13
14 /
*
15 * 生命周期函数–监听页面加载
16 /
17 onLoad: function (options) {
18 app.foo();
19
20 },
21
22 /
*
23 * 生命周期函数–监听页面初次渲染完成
24 /
25 onReady: function () {
26
27 },
28
29 /
*
30 * 生命周期函数–监听页面显示
31 /
32 onShow: function () {
33 //在每次该界面唤醒时,获取当前页面的调用栈:
34 console.log(getCurrentPages());
35 console.log("当前调用栈中的页面数量: " + getCurrentPages());
36 console.log(getCurrentPages()[getCurrentPages().length - 1] == this);
37 },
38
39 /
*
40 * 生命周期函数–监听页面隐藏
41 /
42 onHide: function () {
43
44 },
45
46 /
*
47 * 生命周期函数–监听页面卸载
48 /
49 onUnload: function () {
50
51 },
52
53 /
*
54 * 页面相关事件处理函数–监听用户下拉动作
55 /
56 onPullDownRefresh: function () {
57
58 },
59
60 /
*
61 * 页面上拉触底事件的处理函数
62 /
63 onReachBottom: function () {
64
65 },
66
67 /
*
68 * 用户点击右上角分享
69 */
70 onShareAppMessage: function () {
71
72 }
73 })

三.界面层–数据绑定

在程序的开发过程中,界面层提供一种模板机制,可以借助一种特殊的语法来完成数据的绑定,将动态的数据绑定到模板当中,最近将嵌入过后的数据显示到界面中,小程序中使用的是Mustache 语法(双大括号)语法:

1
2
3
7
8 {{ message }}
9 {{ person.name }} : {{ person.age }}
10

1 // pages/demo/demo.js
2
3 Page({
4 //为页面提供数据,界面和逻辑之间的桥梁
5 data:{
6 message:“hello world”,
7 person:{
8 name: “张三”,
9 age:25
10 }
11 }
12 })

–数据绑定语法补充,除了在页面标签的内部我们会使用Mustache语法进行输出,在标签的内部,我们也可以使用Mustache语法:

1
2
3
7
8 {{ message }}
9 {{ person.name }} : {{ person.age }}
10
14
15
16 {{ ‘hello’ }}
17 {{ 111 }}
18 {{ 111 + 222 }}
19 {{ 111 < 222 ? ‘yes’ : ‘no’ }}
20 {{ true }}
21
24 复选框1
25 复选框2
26

四.列表渲染

在逻辑层中,很多的情况下都会是一个数组类型的数据(列表数据),那么此时在我们的界面层中就需要使用到列表渲染:

1
4 复选框1
5 复选框2
6
7
8
20
30
31 {{ bbb + 1 }}:
32
33 {{ item.name }} {{ aaa.name }}
34
35
36
37
38
39
40 {{ i }} * {{ j }} = {{ i * j }}
41
42
43
44
45

五.事件处理

1
3 点击

1 buttonTapHandle: function(e){
2 console.log(“点击按钮打印此条.”);
3 // console.dir()将一个对象以树状的形式打印到控制台,便于我们调试复杂对象
4 console.dir(e);
5 }

六.事件冒泡

1
4
5
6

1 innerHandler: function(){
2 console.log(“触发内部事件”);
3 },
4 outerHandler: function(){
5 console.log(“触发外部事件”);
6 }

七.事件传参

1
8 参数事件

1 handleWithParm(e){
2 console.log(e); //获取当前的点击元素
3 console.log(e.target.dataset); //获取元素上所有data-[xxx]属性的集合
4 }

八.单向数据流

1
4
5
6 {{ inputMessage }}
7

1 inputHandler: function(e) {
2 //e.detail.value 获取到当前输入的值
3 console.log(e.detail.value);
4 //小程序中的数据绑定,本质上是一次绑定,在绑定完成之后,并不会去监视数据的变化.如果想要得到此次的变化,那么就需要使用setData的方法进行改变
5 //setData是用来改变data数据的,与直接赋值区别在于setData可以通知界面作出变化,而直接赋值的话没有办法实现这一点(早期的JS无法实现)
6 this.setData({
7 inputMessage: "您输入的内容: " + e.detail.value
8 })
9 console.log(this.data.message);
10 }

九.登录页面案例

1
2
3
4 <input class=“username” placeholder=“请输入用户名” style=“border:1px solid #000”
5 value=“{{ username }}” bindinput=“usernameChangeHandler”/>
6 <input class=“password” type=“password” placeholder=“请输入密码” style=“border:1px solid #000”
7 value=“{{ password }}” bindinput=“passwordChangeHandler”/>
8
9
10 登录
11 注册
12
13

1 // pages/login/login.js
2 /* 实现登录界面
3 1. 设计数据的结构(data属性)
4 2. 将数据绑定到指定的元素上
5 */
6 Page({
7 data: {
8 username: “”,
9 password: “”
10 },
11 //用于处理登录按钮点击的事件
12 buttonLogin: function() {
13 console.log(“执行登录事件”);
14 },
15 //用于处理注册按钮点击的事件
16 buttonRegister: function() {
17 //1. 首先需要知道用户输入了什么
18 console.log(this.data.username + " " + this.data.password);
19 //2. 根据用户输入的值去判断
20 //3. 根据判断的结果做出响应
21 console.log(“执行注册事件”);
22 },
23 //用户输入用户名
24 usernameChangeHandler: function(e) {
25 this.setData({
26 username: e.detail.value
27 })
28 },
29 //用户输入密码
30 passwordChangeHandler: function(e) {
31 this.setData({
32 password: e.detail.value
33 })
34 }
35 })

十.抽象共同的事件处理函数

如我在我们的代码之中为每一个input标签都增加一个事件绑定函数,那么在我们的代码之中,将会存在很多的重复代码,为了避免这样的的情况,我们可以抽象共同的事件处理函数:

1
2
3
4 <input class=“username” placeholder=“请输入用户名” style=“border:1px solid #000”
5 value=“{{ username }}” bindinput=“inputChangeHandler” data-name=“username”/>
6 <input class=“password” type=“password” placeholder=“请输入密码” style=“border:1px solid #000”
7 value=“{{ password }}” bindinput=“inputChangeHandler” data-name=“password”/>
8
9
10 登录
11 注册
12
13

1 // pages/login/login.js
2 /* 实现登录界面
3 1. 设计数据的结构(data属性)
4 2. 将数据绑定到指定的元素上
5 */
6 Page({
7 data: {
8 username: “”,
9 password: “”
10 },
11 //用于处理登录按钮点击的事件
12 buttonLogin: function() {
13 console.log(this.data.username + " " + this.data.password);
14 console.log(“执行登录事件”);
15 },
16 //用于处理注册按钮点击的事件
17 buttonRegister: function() {
18 //1. 首先需要知道用户输入了什么
19 console.log(this.data.username + " " + this.data.password);
20 //2. 根据用户输入的值去判断
21 //3. 根据判断的结果做出响应
22 console.log(“执行注册事件”);
23 },
24 //用户输入用户名
25 // usernameChangeHandler: function(e) {
26 // this.setData({
27 // username: e.detail.value
28 // })
29 // },
30 //用户输入密码
31 // passwordChangeHandler: function(e) {
32 // this.setData({
33 // password: e.detail.value
34 // }),
35 // console.log(e);
36 // }
37 //抽象上述两个方法,完成事件
38 inputChangeHandler: function(e) {
39 var key = e.target.dataset.name;
40 var value = e.detail.value;
41 var changed = {};
42 changed[key] = value;
43 this.setData(changed);
44 }
45 })

–除此之外,我们还可以使用表单的方式来进行数据的接收,这样可以免除这一些列复杂的操作:

1
2 <input class=“username” placeholder=“请输入用户名” style=“border:1px solid #000”
3 value=“{{ username }}” name=“username” />
4 <input class=“password” type=“password” placeholder=“请输入密码” style=“border:1px solid #000”
5 value=“{{ password }}” name=“password” />
6
7
8 登录
9 注册
10

1 //使用表单提交的方式来完成数据接收
2 loginSubmit: function(e){
3 console.log(e.detail.value);
4 }

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

总结

**其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。

像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

这么重要的事情说三遍啦!点赞+点赞+点赞!

【Android高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

d架构师教程,保证你学了以后保证薪资上升一个台阶。

这么重要的事情说三遍啦!点赞+点赞+点赞!
[外链图片转存中…(img-1YOLh0Ek-1713606884961)]

【Android高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

[外链图片转存中…(img-7aEDwJ5V-1713606884962)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值