小程序学习笔记之三:小程序框架

 前言

 参考文档:微信开放文档

1. 注册小程序 

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。

// app.js
App({onLaunch(options) {// Do something initial when launch.},onShow(options) {// Do something when show.},onHide() {// Do something when hide.},onError(msg) {console.log(msg);},globalData: "I am global data",
});

通过 getApp 方法获取到全局唯一的 App 实例,获取 App 上的数据或函数。

// xxx.js
const appInstance = getApp();
console.log(appInstance.globalData); // I am global data

2. 注册页面

初始数据、生命周期回调、事件处理函数等。

//index.js
Page({data: {text: "This is page data.",},onLoad: function (options) {// 页面创建时执行},onShow: function () {// 页面出现在前台时执行},onReady: function () {// 页面首次渲染完毕时执行},onHide: function () {// 页面从前台变为后台时执行},onUnload: function () {// 页面销毁时执行},onPullDownRefresh: function () {// 触发下拉刷新时执行},onReachBottom: function () {// 页面触底时执行},onShareAppMessage: function () {// 页面被用户分享时执行},onPageScroll: function () {// 页面滚动时执行},onResize: function () {// 页面尺寸变化时执行},onTabItemTap(item) {// tab 点击时执行console.log(item.index);console.log(item.pagePath);console.log(item.text);},// 事件响应函数viewTap: function () {this.setData({text: "Set some data for updating view.",},function () {// this is setData callback});},// 自由数据customData: {hi: "MINA",},
});

2.1 在页面中使用 behaviors

// my-behavior.js
module.exports = Behavior({data: {sharedText: "This is a piece of data shared between pages.",},methods: {sharedMethod: function () {this.data.sharedText === "This is a piece of data shared between pages.";},},
});
// page-a.js
var myBehavior = require("./my-behavior.js");
Page({behaviors: [myBehavior],onLoad: function () {this.data.sharedText === "This is a piece of data shared between pages.";},
});

3. 注册组件

Component 构造器的主要区别是:方法需要放在 methods: { } 里面。

Component({data: {text: "This is page data.",},methods: {onLoad: function (options) {// 页面创建时执行},onPullDownRefresh: function () {// 下拉刷新时执行},// 事件响应函数viewTap: function () {// ...},},
});

4. 生命周期

onReady,onHide,onShow,onUnload

5. 页面路由

框架以栈的形式维护了当前的所有页面。

打开新页面:新页面入栈,调用 API wx.navigateTo

页面重定向:当前页面出栈,新页面入栈,调用 API wx.redirectTo

页面返回:页面不断出栈,直到目标返回页,调用 API wx.navigateBack

Tab 切换:页面全部出栈,只留下新的 Tab 页面,调用 API wx.switchTab

重加载:页面全部出栈,只留下新的页面,调用 API wx.reLaunch

6. 模块化

// common.js
function sayHello(name) {console.log(`Hello ${name} !`);
}
function sayGoodbye(name) {console.log(`Goodbye ${name} !`);
}module.exports.sayHello = sayHello;
exports.sayGoodbye = sayGoodbye;
var common = require("common.js");
Page({helloMINA: function () {common.sayHello("MINA");},goodbyeMINA: function () {common.sayGoodbye("MINA");},
});

7. 数据绑定

<!--wxml-->
<view> {{message}} </view>
// page.js
Page({data: {message: "Hello MINA!",},
});

8. 列表渲染

<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
// page.js
Page({data: {array: [1, 2, 3, 4, 5]}
})

9. 条件渲染

<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js
Page({data: {view: 'MINA'}
})

10. 模板

<!--wxml-->
<template name="staffName"><view>FirstName: {{firstName}}, LastName: {{lastName}}</view>
</template><template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>
// page.js
Page({data: {staffA: {firstName: 'Hulk', lastName: 'Hu'},staffB: {firstName: 'Shang', lastName: 'You'},staffC: {firstName: 'Gideon', lastName: 'Lin'}}
})

11. 双向绑定

<input model:value="{{value}}" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言刷题------(2)

C语言刷题——————&#xff08;2&#xff09; 刷题网站&#xff1a;题库 - 蓝桥云课 (lanqiao.cn) First Question&#xff1a;时间显示 题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上&#xff0c;朋友已经获取了当前的时间&#xff0c;用一个整数表…

【Spring】基于xml文件和注解方式的自动装配

自动装配&#xff1a;根据指定的策略&#xff0c;在IOC容器中匹配某个bean&#xff0c;自动为bean中的类类型属性或接口类型的属性赋值&#xff0c;可以通过bean标签中的autowire属性设置自动装配的策略。 一、基于xml文件 一个类型的bean在IOC容器中只出现一次&#xff0c;默…

虚拟机安装国产操作系统的方法

1.这里以银河麒麟为例&#xff0c;其他以liunx为基础的国产操作系统都是一样的方法。 2.下载操作系统如下&#xff08;选第一个就行&#xff09;&#xff1a; 任选其一下载&#xff1a; 3.安装虚拟机软件(这里以virtualbox为例&#xff0c;vmare也是一样都可以) 4.打开虚拟机…

(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用

目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…

SpringBoot 事务回滚注意事项

参考资料 导致 Spring 事务失效常见的几种情况SpringBoot2异常处理回滚事务详解(自动回滚/手动回滚/部分回滚&#xff09;Spring&#xff0c;为内部方法新起一个事务&#xff0c;此处应有坑。PlatformTransactionManagerSpring 事务管理及失效总结我认真总结并分析了 Spring 事…

《入门级-Cocos2dx4.0 塔防游戏开发》---第五课:欢迎界面开发(三、事件响应)

目录 一、开发环境介绍 二、开发内容 2.1 开始按钮的事件处理 2.2 背景音乐和背景音效事件处理

YoloV8优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

💡💡💡本文改进:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 RFAConv| 亲测在多个数据集能够实现大幅涨点,有的数据集达到3个点以上 💡💡💡Yolov8魔术师,独家首…

LLM - Transformer LLaMA2 结构分析与 LoRA 详解

目录 一.引言 二.图说 LLM 1.Transformer 结构 ◆ Input、Output Embedding ◆ PositionEmbedding ◆ Multi-Head-Attention ◆ ADD & Norm ◆ Feed Forward ◆ Linear & Softmax 2.不同 LLM 结构 ◆ Encoder-Only ◆ Encoder-Decoder ◆ Decoder-Only …

CSS文本裁剪

对于单行文本裁剪&#xff1a; span {text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block; } 对于多行文本裁剪&#xff1a; 在文本容器上定义 CSS Flexbox 属性 display: -webkit-box; 定义要显示的文本行数 -webkit-line-clamp: 4; 添加 -webkit-…

实现缓存el-table分页大小,用户新建标签打开该页面需保持分页大小(考虑是否为嵌入式页面)

需求&#xff1a;每个表格的分页大小 以本地缓存的方式存到浏览器本地&#xff0c;然后用户下次打开的时候 获取这个本地存储的值 如果没有就用页面默认的值&#xff0c;如果有 则先判断是不是有效的(是) 无效用默认 有效就用这个缓存值,需要区分是否为嵌入式页面 分析&#xf…

写给 Android 应用工程师的 Binder 原理剖析

一. 前言 这篇文章我酝酿了很久&#xff0c;参考了很多学习文档&#xff0c;读了很多源码&#xff0c;却依旧不敢下笔。生怕自己理解上还有偏差&#xff0c;对大家造成误解&#xff0c;贻笑大方。又怕自己理解不够透彻&#xff0c;无法用清晰直白的文字准确的表达出 Binder 的…

机器学习——卷积神经网络基础

卷积神经网络&#xff08;Convolutional Neural Network&#xff1a;CNN&#xff09; 卷积神经网络是人工神经网络的一种&#xff0c;是一种前馈神经网络。最早提出时的灵感来源于人类的神经元。 通俗来讲&#xff0c;其主要的操作就是&#xff1a;接受输入层的输入信息&…

【论文阅读】Deep Instance Segmentation With Automotive Radar Detection Points

基于汽车雷达检测点的深度实例分割 一个区别&#xff1a; automotive radar 汽车雷达 &#xff1a; 分辨率低&#xff0c;点云稀疏&#xff0c;语义上模糊&#xff0c;不适合直接使用用于密集LiDAR点开发的方法 &#xff1b; 返回的物体图像不如LIDAR精确&#xff0c;可以…

leetcode做题笔记65

有效数字&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数 小数&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; &#xff08;可选&#xff0…

Golang 中的交叉编译详解

Golang 中的交叉编译 在 Golang 中&#xff0c;交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。 交叉编译 Golang 程序的基本步骤如下&#xff1a; 指定目标操作系统和工具链并设置对应的…

Kuebernetes资源控制管理

第四阶段 时 间&#xff1a;2023年8月11日 参加人&#xff1a;全班人员 内 容&#xff1a; Kuebernetes资源控制管理 目录 Kubectl命令工具 一、kubectl 命令行的语法 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 &#xff08;一&#xff09;创建Pod &…

第十六次CCF计算机软件能力认证

第一题&#xff1a;小中大 在数据分析中&#xff0c;最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据&#xff0c;保证有序&#xff08;可能为升序或降序)&#xff0c;可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…

Mysql SUBSTRING_INDEX - 按分隔符截取字符串

作用&#xff1a; 按分隔符截取字符串 语法&#xff1a; SUBSTRING_INDEX(str, delimiter, count) 属性&#xff1a; 参数说明str必需的。一个字符串。delimiter必需的。分隔符定义&#xff0c;是大小写敏感&#xff0c;且是多字节安全的count必须的。大于0或者小于0的数值…

最强的表格组件—AG Grid使用以及License Key Crack

PS: 想要官方 License Key翻到最后面 Ag Grid简介 Ag-Grid 是一个高级数据网格&#xff0c;适用于JavaScript/TypeScript应用程序&#xff0c;可以使用React、Angular和Vue等流行框架进行集成。它是一种功能强大、灵活且具有高度可定制性的表格解决方案&#xff0c;提供了丰富…

Mybatis参数传递

Map传参, #{}里的key要一一对应不能乱写&#xff0c;如果不存在则会填充NULL&#xff0c;不会报错 Map<String, Object> map new HashMap<>(); // 让key的可读性增强 map.put("carNum", "103"); map.put("brand", "奔驰E300L&…