微信小程序开发系列教程

微信小程序开发系列一:微信小程序的申请和开发环境的搭建

微信小程序开发系列二:微信小程序的视图设计

微信小程序开发系列三:微信小程序的调试方法

这个教程的前两篇文章,介绍了如何用下图所示的微信开发者工具自动生成一个Hello World的微信小程序,并讲解了这个自动生成的微信小程序的视图开发原理。

本文继续介绍这个微信小程序的控制器index.js的实现, 即MVC设计理念的C-Controller-控制器。不过严格意义上说,按照微信小程序官方文档里介绍的,微信小程序实际采取的是React和Vue的MVMM的设计思路,提倡把渲染和逻辑分离。简单来说就是不要再让 JS 直接操控 DOM,JS只需要管理状态,然后再通过一种模板语法来描述状态和界面结构的关系即可。

下面我们来逐行分析index.js的代码:

//获取应用实例

const app = getApp()

getApp是微信框架的方法,返回当前小程序的应用实例。通常情况下这是微信小程序控制器执行的第一行代码:

这个应用实例的创建是在我们小程序控制器的访问范围之外由微信框架创建的,然后直接在getApp函数里返回创建好的app实例:

为什么这个app实例如此重要,以至于放到控制器的第一行代码来创建呢?我们直接在调试器里输入app然后回车,能看到这个app对象里包含了globalData这个属性和很多有用的方法。

有了app实例后,下一步需要创建的就是Page实例了。这个实例代表当前小程序页面,通过构造函数Page进行创建。

我们同样可以在微信小程序调试器里输入Page然后回车查看这个构造函数的源代码,

或者直接单步调试进去学习。下图就是Page构造函数单步执行的情况,输入参数e为一个Json对象,

这个输入参数e包含的内容有:

我们控制器index.js里实现的一个json对象,名称为data(作为当前微信小程序页面的数据模型,即MVC中的M),如下图红色下划线所示。

我们控制器index.js里实现的三个JavaScript函数,用于响应小程序上用户点击事件。

总结一下,任何微信小程序,其控制器的逻辑只有两步:

  • 调用微信小程序框架提供的标准函数getApp, 获得一个小程序实例。
  • 调用微信小程序页面构造函数Page,初始化页面实例。我们在控制器内主要的编码逻辑,主要集中在传入这个Page构造函数的输入参数,即一个json对象。

而这个json对象包含的属性也只有两类:

  • 第一类是另一个json对象,作为MVC中的M,即数据模型。这个json数据模型的字段被绑定到微信小程序视图的某个UI元素,比如Text, Image的对应属性,这样就自动把数据模型里的字段显示到UI上了。
  • 第二类是我们自己开发的JavaScript函数,用于响应微信小程序的用户输入,比如视图上的按钮点击事件等等。

这个系列的下一篇文章会详细介绍如何用JavaScript函数响应微信小程序的用户点击事件。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

微信小程序开发系列四:微信小程序之控制器的初始化逻辑相关推荐

  1. 微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

    笔者由于工作需要,曾经参加过一个微信小程序同 SAP 系统集成的项目,因此从零开始学习了微信小程序的开发知识.这里通过系列文章把自己所学分享出来,希望对相关学习者有所帮助. 本教程前面三篇文章: 微信 ...

  2. 微信公众号开发系列-获取微信OpenID

    在微信开发时候在做消息接口交互的时候需要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID,接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...

  3. 微信小程序开发(四)小程序数据绑定以及数据的动态获取与赋值

    我们在编写js代码的时候,给一个id绑定一个数据可以先获取该id,然后在进行赋值 var text = document.getElementById("id"); text.te ...

  4. Jerry Wang的微信小程序开发系列文章

    微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列教程三:微信小程序的调试方法 微信小程序开发系列四:微信小程序之控制器的初始化逻辑 ...

  5. 微信小程序开发系列七:微信小程序的页面跳转

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  6. 微信小程序开发系列六:微信框架API的调用

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  7. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  8. 微信小程序开发系列教程三:微信小程序的调试方法

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 这个教程的前两篇文章,介绍了如何用下图所示的微信开发者工具自动生成一个Hel ...

  9. .NET微信公众号开发系列 - 项目介绍

    由于业务需要,需要开发微信公众号.不过没有查询到比较有用的信息,只能自己摸索前进. 写这个微信公众号开发系列,希望能提供一些帮助. 需要的功能有创建订单.查看订单.还有基本的用户管理. 由于团队人员有 ...

最新文章

  1. matlab中imfilter是什么意思,matlab中imfilter的用法
  2. 发布Web应用程序时发生的“xx.aspx.cs文件不存在”错误
  3. Linux下C语言的系统头文件
  4. 周五话运营 | 和用户谈一段不分手的恋爱(留存分析)
  5. 面向对象发牌Java_面向对象思路的斗地主发牌小程序
  6. 遍历boost::fibers::unbuffered_channel< unsigned int >的测试程序
  7. VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗
  8. linux常用yum 安装基本包_linux - yum常用命令
  9. 蒸妙集团用科学熏蒸法,弥补现代人在运动上的缺乏
  10. Qt中利用定时器QTimer实时显示当前日期和时间
  11. SPSS 24 安装详细教程及下载
  12. 华为ENSP安装教程
  13. 计算机二级九月试题office,9月计算机二级office题库及答案
  14. 对称矩形C语言,c语言编程求任意对称正定矩阵的逆。
  15. 浅谈 Spring 中的设计模式
  16. 华为ensp的路由器怎么和本地电脑通信
  17. 2023年湖北省建筑类初级职称助理工程师电子版证书申报查询
  18. linux 开发板传文件,Linux下用USB传输文件到开发板
  19. html5直播服务端搭建,直播推流服务器端搭建
  20. Python实战:淘宝自动抢购

热门文章

  1. Django从理论到实战(part42)--QueryDict对象
  2. mysql获取一年中的所有周六周日_数据库查询显示一年中所有的周一到周五的数据...
  3. 什么是python函数_Python之什么是函数
  4. 30 个 Pandas技巧,加速你的数据分析处理速度!
  5. 关于 SAP 电商云首页加载时触发的 OCC API 请求
  6. Jest 测试框架使用的学习笔记
  7. SAP Commerce Cloud Storefront 框架选型:Accelerator 还是 Spartacus?
  8. 2021年2月2日 - cxFocus Directive的单元测试不够稳定,有时候findFirstFocusable会多执行一次
  9. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
  10. SAP Spartacus B2B ListComponent响应回车事件的实现