1. 注册程序
小程序APP
在小程序的根目录下有一个app.js文件。有App(Object),App() 函数用来注册一个小程序。接受一个 Object 参数,其内便是小程序的生命周期。
App() 必须在app.js 中调用,必须调用且只能调用一次。
主要参数
onLaunch: 小程序的初始化函数
onShow: 小程序启动,或从后台进入前台显示时
onHide: 小程序从前台进入后台时
onError: 小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息
onPageNotFound: 小程序要打开的页面不存在时触发,会带上页面信息回调该函数

前台:当小程序呈现在用户屏幕前
后台:右上角关闭小程序,home键 之后的一段时间(目前五分钟)小程序处于后台状态
销毁:当进入后台一段时间或者系统资源占用过高会被销毁,一些场景进入在未置顶的情况下退出会被销毁。
getApp(Object)
全局的 getApp() 函数可以用来获取到小程序 App 实例。这个不是很懂

2. 场景值
场景指的是从哪些地方进入小程序,有对应的场景ID。App函数的 onlaunch onshow ,或者 wx.getLaunchOptionsSync 获取。
App({
onLaunch: function (options) {
console.log("[onLaunch] 本次场景值:", options.scene)
},
onShow: function (options) {
console.log("[onShow] 本次场景值:", options.scene)
}
})

3. 注册页面
页面 Page
Page(Object) 构造器
Page(Object) 函数用来注册一个页面。接受一个 Object 类型参数,初始化数据、生命周期回调和事件处理函数。
data: 页面的初始化数据
onLoad: 生命周期回调--监听页面加载
onShow: 生命周期回调--监听页面显示
onReady: 生命周期回调--监听页面初次渲染完成
onHide: 生命周期回调--监听页面隐藏
onUnload: 生命周期回调--监听页面卸载
onPullDownRefresh: 监听用户下拉动作
onReachBottom: 页面上拉触底事件的处理函数
onShareAppMessage: 用户点击右上角转发
onResize: 页面尺寸改变时触发,一般是屏幕旋转
onTabItemTap: 当前是tab页时,点击tab 时触发
还可以添加自定义字段,同app.js中App() 一样

初始数据
data 是页面第一次渲染使用的初始数据
因为页面加载时,data将会以JSON 字符串的形式由逻辑层传到渲染层,因此data 中的数据必须时可以转成 JSON 的类型:字符串、数字、布尔值、对象、数组
同大多数 mvvm 框架语言一样,也可以实现逻辑层到渲染层的双向绑定。

生命周期回调函数
有 onLoad(Object)、onShow()、onReady()、onHide()、onUnload()

页面事件处理函数
onPullDownRefresh()、onReachBottom()、onPageScroll(Object)

组件事件处理函数
就是渲染层的执行事件,点击之类的

route
当前页面的路径,类型为 String
Page({
onShow() {
console.log(this.route)
}
})

setData
Page.prototype.setData(Object data, Function callback)
setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)

页面生命周期
有一句在vue里面看到的话

下内容你不需要立马完全弄明白,不过以后它会有帮助

4. 路由
在小程序中所有页面的路由全部由框架进行管理。
页面栈
框架以栈的形式维护了当前的所有页面。当发生路由切换的时候,页面栈表现各不相同
初始化:新页面入栈
打开新页面:新页面入栈
页面重定向:当前页面出栈,新页面入栈
页面返回:页面不断出栈,知道目标返回页
Tab切换:页面全部出栈,只留下新的Tab页面
重加载:页面全部出栈,只留下新的页面

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

路由方式
路由的触发和小程序生命周期处处相关哦

5. 模块化
文件作用域
每个js文件申明的变量,对当前文件有效
App 函数中可以这只全局变量
将公共代码块抽离出来,用export方式引用。

6. API
各种API

微信小程序 逻辑层的更多相关文章

  1. 微信小程序遮罩层覆盖input失效

    问题:微信小程序中,我们常使用遮罩层,如点击按钮弹出下拉框.弹框等等.若在遮罩层下存在input.textarea.canvas.camera.map.video等标签时,会出现遮罩层覆盖失效的问题. ...

  2. 微信小程序视图层介绍及用法

    一. 视图层 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. 1.1. 数据绑定 1.1.1. 普通写法 <vi ...

  3. 微信小程序 - 视图层 | 基础语法

    视图层 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. 类似前端HTML 一.数据绑定 普通语法 test.wxml ...

  4. 微信小程序开发--页面结构

    一.微信小程序开发--页面文件组成 [page.name].js 页面逻辑文件,用于创建页面对象,以及处理页面生命周期控制和数据处理 [page.name].wxml wxml指的是Wei Xin M ...

  5. 【微信小程序】开发实战 之 「配置项」与「逻辑层」

    微信小程序作为微信生态重要的一环,在实际生活.工作.商业中的应用越来越广泛.想学习微信小程序开发的朋友也越来越多,本文将在小程序框架的基础上就微信小程序项目开发所必需的基础知识及语法特点进行了详细总结 ...

  6. 微信小程序原生开发简介

    简介: 总结: 1. 逻辑层使用js引擎,视图层使用webview渲染 2. 微信小程序已经支持了绝大部分的 ES6 API 3. 可以自动补全css的兼容语法 文档:https://develope ...

  7. 微信小程序开发(1) 天气预报

    本文介绍如何使用微信小程序开发天气预报功能. 一.项目文件列表 二.小程序配置 使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. ...

  8. 微信小程序 可用性一览

    1. 调试vConsole微信小程序通过vConsole的形式观察控制台打印.打印到vConsole控制台的是由 JSON 转化的字符串.这还是可以起到调试作用的. Source Map当es6 转  ...

  9. 微信小程序开发--模板(template)使用,数据加载,点击交互

    微信小程序视图层提供了 模板(template),可以在模板中定义代码片段,然后在不同的地方调用.结果在数据渲染那懵逼了.按照官网上对模板的说明和对数据的加载. 1.定义模板 使用name属性,作为模 ...

随机推荐

  1. C/S转分布式数据库的解决方法

    C/S转分布式数据库的解决方法1. 直接VPN建一个网不就行了.(大概是虚拟成一个网络)2. 直连也可以,就是速度慢3. 还是三层吧,推荐RTC4. 弄个花生壳硬件试试呢,成本低,不用改程序5. 搞一 ...

  2. lstat函数的使用【学习笔记】

    通过lstat函数获取文件的类型的代码如下. #include "apue.h" int main(int argc,char *argv[]) { int i; struct s ...

  3. bzoj4105: [Thu Summer Camp 2015]平方运算

    填坑 我不知道怎么算的,但是所有环的LCM数不会超过60 然后用线段树维护这个东西,每个节点记录子树内的循环节 没到循环节的暴力枚举 复杂度是nlogn再乘以循环节长度 #include<cst ...

  4. YTU 2427: C语言习题 整数排序

    2427: C语言习题 整数排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 391  解决: 282 题目描述 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数 ...

  5. SPOJ:Strange Waca(不错的搜索&贪心&剪枝)

    Waca loves maths,.. a lot. He always think that 1 is an unique number. After playing in hours, Waca ...

  6. Java中gcRoot和引用类型

    看到一个老问题,Java是如何判定回收哪些对象的? 答:从gcRoot根搜索不可达,且标记清理一次之后仍没有被复活的对象,会被认定为垃圾对象进行清理.注意在Java中没有对象的作用域,只有对象的引用的 ...

  7. 构建Docker平台【第一篇】环境准备

    主机信息 操作系统版本 CentOS-7-x86_64-Everything-1511   主机A 192.168.6.128 主节点 主机B 192.168.6.129 主节点 主机C 192.16 ...

  8. html语义化 -------<fieldset>和<legend>

    为什么HTML代码要语义化,除了代码可读性好以外,SEO有帮助外,最主要的还是对一些屏幕阅读设备或者其他辅助阅读设备友好, 可以让用户在条件受限的条件下依然可以正常使用我们的产品,比方说鼠标坏了,又或 ...

  9. jsp实现文件上传(二)用cos组件实现文件上传

    jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <hea ...

  10. CodeForces 712C Memory and De-Evolution (贪心+暴力)

    题意:现在有一个长度为 x 的正三角形,每次可以把一条边减小,然后用最少的时间变成长度为 y 的正三角形. 析:一开始,正着想,然后有一个问题,就是第一次减小多少才能最快呢?这个好像并不好确定,然后我 ...