逻辑层

逻辑层(App Service):小程序框架的逻辑层是由JavaScript编写的,逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。

App进行程序注册,Page进行页面注册

getApp获取App实例,getCurrentPages获取当前页面栈

一、程序注册

1、App

App()函数用来注册小程序。接受一个Object参数,其指定小程序的生命周期函数。

注意:App()必须在app.js中注册,而且不能注册多个

Object参数说明

属性

类型

描述

触发时机

onLaunch

Function

生命周期函数--初始化

初始化完成是,只会触发一次

onShow

Function

生命明明周期函数--小程序显示

启动时,或从后台进入前台显示

onHide

Function

生命周期函数--小程序隐藏

从前台进入后台

其他

Any

开发者可以添加任意的函数或数据到Object参数中,用this可以访问

2、getApp()

getApp()是全局函数,可以获取小程序实例。

注意:不要在定义App()内的函数中调用getApp(),使用this就可以拿到app实例。通过getApp()获取实例后,不要私自调用生命周期函数。

3、getCurrentPages()

不要在onLaunch的时候调用getCurrentPages(),app还没有生成。

二、页面注册

Page

Page()函数用来注册一个页面,接受一个Object参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

属性

类型

描述

data

Object

页面的初始数据

onLoad

Function

生命周期函数--监听页面加载

onReady

Function

生命周期函数--监听页面初次渲染完成

onShow

Function

生命周期函数--监听页面显示

onHide

Function

生命周期函数--监听页面隐藏

onUnload

Function

生命周期函数--监听页面卸载

onPullDownRefresh

Function

页面相关事件处理函数--监听用户下拉动作

onReachBottom

Function

页面上拉触底事件的处理函数

其他

Any

开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问

1、初始化数据

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

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

2、生命周期函数

(1)、onLoad:页面加载

一个页面只会调用一次

接收页面参数可以获取wx.navigateTo和wx.redirectTo及<navigator/>中的 query。

(2)、onShow:页面显示

每次打开页面都会调用 一次

(3)、onReady:页面初次渲染完成。

一个页面只会调用一次,代表页面已经准备妥当,可以和试图层进行交互

(4)、onHide:页面隐藏

当navigateTo或底部tab切换时调用。

(5)、onUnload:页面卸载

当redirectTo或navigateBack的时候调用。

3、页面相关事件处理函数

OnPullDownRefresh:下拉刷新需要在config的windows选项中开启enablePullDownRefresh。当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

4、事件处理函数

除了初始化数据和生命周期函数,Page 中还可以定义一些特殊的函数:事件处理函数。在渲染层可以在组件中加入事件绑定,当达到触发事件时,就会执行 Page 中定义的事件处理函数。

Page.prototype.setData()

setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。

注意:

1. 直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。

2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

setData() 参数格式

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

其中 key 可以非常灵活,以数据路径的形式给出。

getCurrentPages()

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

注意:不要尝试修改页面栈,会导致路由以及页面状态错误。

三、模块化

文件作用域

在 JavaScript 文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。

通过全局函数 getApp()可以获取全局的应用实例,如果需要全局的数据可以在 App() 中设置。

模块化

我们可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。

需要注意的是:

exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误。所以我们更推荐开发者采用module.exports 来暴露模块接口。

四、API

转载于:https://www.cnblogs.com/joe-tang/p/8058351.html

微信小程序学习笔记(4)--------框架之逻辑层相关推荐

  1. 微信小程序学习笔记(三)视图与逻辑

    文章目录 1. 页面导航 1.1 什么是页面导航 1.2 声明式导航 1.2.1 导航到 tabBar 页面 1.2.2 导航到非 tabBar 页面 1.2.3 后退导航 1.3 编程式导航 1.3 ...

  2. 微信小程序开发《6 .框架之逻辑层》

    逻辑层(App Service) 小程序开发框架的逻辑层由 JavaScript 编写.逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈. 注册程序App App() App() 函数用来 ...

  3. 小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发

    一.常用组件 在上一个章节中讲解了封装请求数据的模块,在此处请求轮播图的数据 1.首页轮播图数据的请求以及渲染 1.1 轮播图数据的请求 pages/home/home.js import 2 使用组 ...

  4. 微信小程序学习笔记(1)

    微信小程序学习笔记 1.小程序代码结构 2.逻辑层和视图层 3. 小程序的宿主环境(通信模型.运行机制.组件.API) 4. 数据绑定和事件绑定 1.小程序代码结构 当开发者新建一个工程时,项目文件包 ...

  5. 微信小程序学习笔记一 + 小程序介绍 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  6. 自己的微信小程序学习笔记【3】——第三方UI库Lin-Ui的加载及使用

    其他微信小程序的学习笔记 自己的微信小程序学习笔记[1]--小程序开发工具的使用及项目文件说明 自己的微信小程序学习笔记[2]--从零开始新建项目 文章目录 其他微信小程序的学习笔记 前言 一.Lin ...

  7. 微信小程序学习笔记(一)

    干货来袭 基础前言   微信⼩程序,简称⼩程序,英⽂名 Mini Program ,是⼀种不需要下载安装即可使⽤的应⽤,它实现 了应⽤"触⼿可及"的梦想,⽤⼾扫⼀扫或搜⼀下即可打开 ...

  8. 微信小程序学习笔记(七)----简单文章推荐列表和分类图标的实现

    想要实现一个顶部是几篇纯文字的推荐文章,推荐文章下面是四个分类图标,具体实现出来是这个样子的,比较简单: 首先先来找一下素材,这几个图标是我在阿里巴巴图标库下载的,这里是下载地址: http://ww ...

  9. 微信小程序学习笔记( 小程序框架 )

    必看 这个只是我的学习过程算是日记形式吧,过程是按微信的官方文档的循序来,从 指南中的小程序框架 开始,指南中这一节之前还有页面配置,目录结构,还有很多介绍,没有写但是是非常重要的,一定要看,像指南后 ...

  10. 微信小程序学习笔记(二)-- 开发之框架

    一.小程序框架介绍(了解) 小程序框架包含小程序的配置.框架接口.场景值.WXML 和 WXS 等 二.小程序的配置(精通) 小程序的配置分为全局配置.页面配置以及sitemap 配置 1.全局配置 ...

最新文章

  1. 团队暑期集训 - 基础DP练习
  2. 笔记:Online robust principal component analysis via truncated nuclear norm regularization
  3. Spring AOP详解一文搞懂@Aspect、@Pointcut、@Before、@Around、@After、@AfterReturning、@AfterThrowing
  4. Anroid推送服务
  5. 有关Rating组件的研究——Silverlight学习笔记[41]
  6. idea java 非法字符_解决IDEA显示非法字符 \ufeff 的问题
  7. 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中启用了事件验证...(转)...
  8. C语言之基本算法09—各位全是a的数列之和
  9. 深度剖析Java数据结构之表(四)——LinkedList泛型类的实现
  10. SQL:统计一个数据库中所有表记录的数量
  11. Javascript特效:瀑布流
  12. 三维浮雕软件 linux,立体浮雕工具下载 Type3(立体浮雕软件) v4.6.0.0 免费安装版 下载-脚本之家...
  13. unicode转中文
  14. *【华为机试真题详解】判断字符串子序列**
  15. altium 去掉部分铺铜_DCS系统接地(四部分)
  16. 程序员来聊一聊信用卡(一)——年轻人该不该办理一张信用卡
  17. 八、QOS队列调度与报文丢弃
  18. 科学期刊中关于计算机视觉,【转】整理的计算机视觉领域稍微容易中的期刊 - 信息科学 - 小木虫 - 学术 科研 互动社区...
  19. 网站内容更新的操作方法有哪些
  20. 新人如何快速上手项目管理?

热门文章

  1. Letters比赛第六场1004 Unit Fraction Partition解题报告
  2. 111.什么是基带信号?什么是宽带信号?
  3. MKL25Z128 Cortex-M0微处理器架构定义的存储器映射
  4. MinGW问题解决:gcc: installation problem, cannot exec `cc1'
  5. narwal无法连接机器人_懒无止境 能自己洗抹布的云鲸J1扫拖机器人
  6. 计算机技术在工程的应用浅论,《计算机技术在计算机应用技术中的应用浅论》...
  7. mysql 字符串大小写_Mysql 字符串类型及大小写
  8. 023_JavaScript数字方法
  9. Visual Studio 2015软件安装教程
  10. 关于HTML两侧留白的解决以及解决过程