轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 微信小程序 查看主题

Android开发者学习小程序之旅《一》逻辑层

发布者: smg | 发布时间: 2017-11-12 19:30| 查看数: 7137| 评论数: 1|帖子模式

作者:Garment1991,来自原文地址

由于本人是一个Android开发者,所以是带着和Android Native 应用开发做比较的想法来学习微信小程序的开发,这样子学习可以更好的理解微信小程序

小程序开发框架的逻辑层是由JavaScript编写的。逻辑层的代码都是写在.js文件中,顾名思义,就是业务逻辑的处理,就是对需要展示的数据进行处理,然后处理完成后就发送到视图层,进行视图渲染;同时,逻辑层也需要接受视图层的事件反馈,进行相应的逻辑处理。

举个例子:我想在应用登录后的界面显示用户的头像和名称。

那么,逻辑层需要的处理就是在登录成功后启动页面时候,需要去获取并保存用户的头像信息,名称;在成功获取数据之后,就发送到视图层进行渲染。

在JavaScript的基础上,小程序开发框架做了一些修改,用以方便地开发小程序。

* 增加了App和Page方法,进行程序和页面的注册。这就类似于Android开发中的Application和Activity,Android中Application就代表一个应用,这个对象在启动应用时会创建,只是在应用第一次启动时被创建,而且这个对象是全局的,单例的;Activity就是向用户展示的一个界面。小程序中的App就类比Android的Application,代表的是一个微信小程序;Page就类比Android中的Activity,就是一个页面,用于向用户展示数据。

* 提供丰富的API,如微信用户数据的获取,扫一扫,支付等微信特有能力。因为这个小程序是依赖着微信而存在的,所以,一些微信的基本功能都会有,其实这就是一种微信系的轻应用。

等等.....

1)App()

App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。其生命周期函数有onLaunch、onShow、onHide。

小程序开发框架提供了了全局的getApp()函数,可以获取到小程序实例。

所以我们在开发小程序的时候,一些需要全局调用的函数可以定义在App中,还有一些全局使用的变量也可以在App中定义。还有一些初始化操作可以放在onLaunch函数中调用。

2)Page

Page就类似与Android中的Activity,就是向用户展示数据的一个页面。Page()函数用来注册一个页面。接受一个object参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

示例代码:

[javascript] view plain copy
  1. //index.js  
  2. Page({  
  3.   data: {  
  4.     text: "This is page data."  
  5.   },  
  6.   onLoad: function(options) {  
  7.     // Do some initialize when page load.  
  8.   },  
  9.   onReady: function() {  
  10.     // Do something when page ready.  
  11.   },  
  12.   onShow: function() {  
  13.     // Do something when page show.  
  14.   },  
  15.   onHide: function() {  
  16.     // Do something when page hide.  
  17.   },  
  18.   onUnload: function() {  
  19.     // Do something when page close.  
  20.   },  
  21.   onPullDownRefresh: function() {  
  22.     // Do something when pull down.  
  23.   },  
  24.   onReachBottom: function() {  
  25.     // Do something when page reach bottom.  
  26.   },  
  27.   // Event handler.  
  28.   viewTap: function() {  
  29.     this.setData({  
  30.       text: 'Set some data for updating view.'  
  31.     })  
  32.   },  
  33.   customData: {  
  34.     hi: 'MINA'  
  35.   }  
  36. })  

初始化数据

data数据是作为页面的第一次渲染,data将会以JSON的形式由逻辑层传至渲染层,所以其数据必须是可以转成JSON的格式:字符串,数字,布尔值,对象,数组。

渲染层可以通过WXML对数据进行绑定。

实例代码:

[javascript] view plain copy
  1. <view>{{text}}</view>  
  2. <view>{{array[0].msg}}</view>  
  3. Page({  
  4.   data: {  
  5.     text: 'init data',  
  6.     array: [{msg: '1'}, {msg: '2'}]  
  7.   }  
  8. })  

数据刷新

setData函数用于将数据从逻辑层发送到视图层,同时改变对应的this.data的值。注意:直接手动修改this.data是无效的,无法改变页面的状态,还会造成页面展示的数据和this.data保存的数据不一致的问题。

setData()函数的参数格式

接受一个对象,以key,value的形式表示将this.data中的key对应的值改变成value。

单次设置的数据不能超过1024kb,请尽量避免一次设置过多的数据。
(注意,当this.data中不存在对应的key值,则该key属性会添加到this.data中,一般不要这样使用)

[javascript] view plain copy
  1. <!--index.wxml-->  
  2. <view>{{text}}</view>  
  3. <button bindtap="changeText"> Change normal data </button>  
  4.   
  5. //index.js  
  6. Page({  
  7.   data: {  
  8.     text: 'init data',  
  9.     array: [{text: 'init data'}],  
  10.     object: {  
  11.       text: 'init data'  
  12.     }  
  13.   },  
  14.   changeText: function() {  
  15.     // this.data.text = 'changed data'  // bad, it can not work  
  16.     this.setData({  
  17.       text: 'changed data'  
  18.     })  
  19.   },  
  20. })  



PS:微信小程序开发中,逻辑层的处理是最重要的;深刻地理解开发框架的逻辑层的原理,有利于我们写出优雅的代码。在这里,我只是列出了逻辑层一些需要重要了解的知识点,需要更详细的了解,还是需要去到小程序官方开发网站。

最新评论

rikashin 发表于 2022-5-3 08:09
源代码2免费在线

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表