微信小程序——小程序的API介绍

news2024/11/18 19:40:07

小程序的宿主环境-API

1.小程序API概述

小程序中的API是由宿主环境提供的,通过这些丰富的小程序API,开发者可以方便的调用微信提供的能力,例如:获取用户信息,本地存储,支付功能等。

2.小程序API的3大分类

小程序官方把API分成了如下3大类:

  1. 事件监听API
    1. 特点:以on开头,用来监听某些事件的触发
    2. 举例:wx.onWindowResize(function callback)监听窗口尺寸变化的事件,类似于HTML中的定义对象Windows,不同提前声明就可使用。
  2. 同步API
    1. 特点1:以Sync结尾的API都是同步API
    2. 特点2:同步API的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
    3. 举例:wx.setStorageSync('key','value')向本地存储中写入内容
  3. 异步API
    1. 特点:类似于jQuery中的$.ajax(options)函数,需要通过success,fail,complete接收调用的结果
    2. 举例:wx.request()发起网络数据请求,通过success回调函数接收数据

协同工作和发布

1.了解权限管理需求

在中大型的公司里,人员的分工非常仔细:同一个小程序,一般会有不同岗位,不同角色的员工同时参与设计与开发。

此时处于管理需要,我们迫切需要对不同岗位,不同角色的员工权限进行边界的划分,使他们能够高效的进行协同工作。

2.了解项目成员的组织结构

模板与配置

1.数据绑定的基本原则

  1. 在data中定义数据
  2. 在WXML中使用数据

2.在Data中定义页面的数据

在页面的JS文件中,把数据定义到Data对象中即可:

这里定义了两种类型的变量,一种是字符串的变量,变量名叫做info,一种是数组类型的变量,变量名叫做msgList

Page({

  data:{

    // 字符串类型的数据

    info:'init data',

    // 数组类型的数据

    msgList:[{msg:'hello'},{msg:'word'}]

  }

})

3.Mustache语法的格式

把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)或者叫插值表达式将变量包裹起来。语法格式:

<view class="info_view">

  {{info}}

</view>

样式内容代码:

.info_view{

  margin: 0 auto;

  text-align: center;

}

最终的显示效果如下:

变量的值就会显示在页面中。

4.Mustache语法的应用场景

Mustache语法的主要应用场景如下:

  1. 绑定内容
  2. 绑定属性
  3. 运算(三元运算、算术运算等)

动态内容的绑定

JS代码:

data:{

    // 字符串类型的数据

    info:'init data',

    // 数组类型的数据

    msgList:[{msg:'hello'},{msg:'word'}]

  }

页面结构代码:

<view class="info_view">

  {{info}}

</view>

动态属性的绑定

JS代码:

data:{

    // 将图片的路径设置为变量

    src:'./image/幼儿园-LOGO.jpg'

  }

页面结构代码:

<view class="img_view">

  <image src="{{src}}" mode=""/>

</view>

在使用的时候将图片的路径变量绑定到image的src属性上,就可以通过改变变量的值的方式来改变显示的图片内容。

显示内容如下:

三元运算

JS代码:

data:{

      // 生成一个随机数

      Integer:Math.random() * 10

    }

页面结构代码:

<view class="info_view">

  {{Integer >= 5 ? '随机数大于等于5' : '随机数小于等于5'}}

  <rich-text nodes="</br>"></rich-text>

  {{Integer}}

</view>

显示内容如下:

在上面的案例中,我们在JS中生成了一个随机数,并根据随机数的大小,在结构中使用Mustache语法的三元运算符,根据随机值的大小显示两种不同的内容。

每一次我们点击编译按钮的时候,都会生成一个完全不一样的随机数,我们可以通过观察随机数的大小来查看值的不同显示:

或者是通过【调试器】功能去查看变量的大小:

算数运算

除了使用三元运算符,在插值表达式中还可以使用运算符号对数值进行运算后,展示运算后的数据。

页面结构代码:

<view class="info_view">

  {{Integer2 * 100}}

</view>

JS代码:

data:{

      Integer2: Math.random().toFixed(2)

    }

显示效果如下:

在上面的操作中,首先我们在JS中生成了一个两位小数的随机数,然后在页面结构中,使用这个随机数乘以10得到的结果经过插值表达式渲染到页面中。

事件绑定

1.什么是事件

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

比如说,当用户在渲染层(页面)中触发了某个事件,比如点击按钮的事件,点击屏幕的事件等,这个事件就会被传递到逻辑层(JS文件)中对用户的点击行为做出反馈,这个反馈包括震动,切换页面,数据交换等等。

2.小程序中常用的事件

类型

绑定方式

事件描述

tap

bindtap或者bind:tap

手指触摸后马上离开,类似于HTML中的click事件

input

bindinput或者bind:input

文本框的输入事件

change

bindchange或者bind:change

状态改变时触发

3.事件对象的属性列表

当事件回调触发的时候,会收到一个事件对象event,他的详细属性如下所示:

属性

类型

说明

type

String

事件类型

timeStamp

Integer

页面打开到出发时间所经过的毫秒数

target

Object

触发事件的组件的一些属性值集合

currentTarget

Object

当前组件的一些属性值集合

detail

Object

额外的信息

touches

Array

触摸事件,当前停留在屏幕中的触摸点信息的数组

changedTouches

Array

触摸事件,当前变化的触摸点信息的数组

4.target和currentTarget的区别

target是触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件。举例如下:

点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层view 的 tap事件处理函数。此时,对于外层的view来说:

  1. e.target指向的是触发事件的源头组件,因此,e.target是内部的按钮组件
  2. e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件

5.bindtap的语法格式

在小程序中,不存在HTML中的onclick鼠标点击书简,而是通过tap事件来响应用户的触摸行为。

  1. 通过bindtap,可以为组件绑定tap触摸事件,语法如下:

<view class="info_view">

  <button bindtap="onTap" type="primary">点我</button>

</view>

  1. 在页面的JS文件中定义对应的事件处理函数,书简参数通过形参event(一般简写成e)来接收:

onTap(e){

      console.log(e)

}

页面展示内容如下:

当前控制台内容如下:

当我们点击按钮之后,会触发一个点击事件,与这个事件绑定的逻辑层方法就会被执行,从而在控制台打印出event属性的参数:

那么在这个对象中,就包括了与此次事件有关的属性信息。

6.在事件处理函数中为data中的数据赋值

通过调用this.setData(dataObject)方法,可以给页面data中的数据重新赋值,示例如下:

页面结构代码:

<view class="info_view">

{{count}}

  <button type="primary" bindtap="onTap">按钮</button>

</view>

JS代码:

data: {

    count: 0

  },

  onTap(){

    this.setData({

      count: this.data.count+1

    })

  }

页面显示效果:

当我们点击按钮的时候,上面的数组也会随之增长1。

或者也可以将数字直接显示在按钮上:

<view class="info_view">

  <button type="primary" bindtap="onTap">{{count}}</button>

</view>

显示效果如下:

7.事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。例如:下面的代码不能正常工作:

<button type="primary" bindtap="btnHandler(123)">事件传参</button>

因为小程序会把button的属性值,统一当作事件名称来处理,相当于要调用一个名称为bthHandler(123)的事件处理函数。‘

可以为组件提供“data-*"自定义属性传参,其中*代表的是参数的名字,示例代码如下:

<buttton bindtap="bthHandler" data-info="{{2}}">事件传参</button>

最终:

  1. info会被解析为参数的名字
  2. 数值2会被解析为参数的值

在事件处理函数中,通过event,target.dataset.参数名即可获取到具体参数的值,示例代码如下:

btnHandler(event){

    // dataset是一个对象,包含了所有通过data-*传递过来的参数项

    console.log(event.target.dataset)

    // 通过dataset可以访问到具体参数的值

    console.log(event.target.dataset.info)

}

这个值并不需要在JS中先定义,可以在传参的时候根据页面的需要去定义,然后在JS中接收对应的值。也可以先在JS中定义需要用到的参数,然后根据JS中的参数去结构代码中设置要接收的参数。

页面结构代码:

<view class="info_view">

  <button type="primary" bindtap="onTap" data-info="{{2}}">在控制台打印值</button>

</view>

JS代码:

 onTap(event){

    console.log(event.target.dataset)

    console.log(event.target.dataset.info)

  },

最终的显示效果:

点击按钮之前的控制台:

在上面的案例中,当我们点击按钮之后,会在控制台打印出所有的传递过来的参数,以及info参数的值:

这就是在小程序中从结构中传递参数到JS文件中的方法。

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

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

相关文章

wav文件碎片多删除后恢复案例

wav是微软针对音频提供的一种文件&#xff0c;其本质上和qt类文件&#xff08;如mp4 mov&#xff09;是一样的&#xff0c;都是“容器”类文件。但凡是容器类的文件其关注的点就是制定规则&#xff0c;一切按规则来&#xff08;wav中就是速率、时长、编码类型等&#xff09;。这…

Linux下利用文件IO函数完成多进程复制图片,父进程复制前一半,子进程复制后一半

Linux下利用文件IO函数完成多进程复制图片&#xff0c;父进程复制前一半&#xff0c;子进程复制后一半 一 、概述 在Linux环境下&#xff0c;利用多进程完成图片的复制操作本demo用到了两个进程&#xff0c;一个是主函数所在的父进程&#xff0c;一个在主函数里面创建的子进程…

安装系统作为启动盘的U盘恢复原样

1、插U盘 2、winr——cmd&#xff0c;输入diskpart 3、此电脑——管理——磁盘管理——查看磁盘号&#xff1a;磁盘 1 4、输入&#xff1a;select disk 1——clean 5、磁盘管理——右击新建简单卷——下一步即可

u盘传输数据的时候拔出会怎么样?小心这些危害

U盘是我们日常生活和工作中常使用的一种便携式存储设备。然而&#xff0c;在使用U盘传输数据时&#xff0c;有时我们会不小心将它拔出&#xff0c;而这个看似微不足道的行为实际上可能会带来严重的后果。本文将向您介绍U盘在传输数据时突然拔出可能导致的各种危害&#xff0c;其…

如何恢复U盘里面的已经损坏的数据?

弹出使用驱动器之前&#xff0c;先将U盘格式化的信息框&#xff0c;是Windows系统针对某些特定类型的U盘或移动硬盘的一种常见处理方式。一般来说&#xff0c;如果U盘或移动硬盘出现某些故障或问题&#xff0c;Windows系统会建议用户将其格式化。 格式化是一种常规的操作&…

Kafka消费者组重平衡(二)

文章目录 概要重平衡通知机制消费组组状态消费端重平衡流程Broker端重平衡流程 概要 上一篇Kafka消费者组重平衡主要介绍了重平衡相关的概念&#xff0c;本篇主要梳理重平衡发生的流程。 为了更好地观察&#xff0c;数据准备如下&#xff1a; kafka版本&#xff1a;kafka_2.1…

9.12 C++作业

实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xff1a;半…

模拟信号电压或电流信号转变频器频率传感器信号隔离变送器0-5V/0-10V/0-20mA/4-20mA转0-5KHz/0-10KHz/1-5KHz

主要特性: 精度等级&#xff1a;0.1 级、0.2 级。产品出厂前已检验校正&#xff0c;用户可以直接使用输 入 &#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA 等输出信号&#xff1a;0-5KHz/0-10KHz/1-5KHz 等标准信号辅助电源&#xff1a;5V、9V、12V、15V 或 24V 直流单电…

OpenCV(四十三):Shi-Tomas角点检测

1.Shi-Tomas角点检测原理 Shi-Tomasi&#xff08;也称为Good Features to Track&#xff09;角点检测算法是一种改进的角点检测方法&#xff0c;它基于Harris角点检测算法&#xff0c;并针对一些不足进行了改进。 与Harris角点检测不同&#xff0c;Shi-Tomasi使用了更简化的角点…

PDF怎么合并?这几个方法收藏起来吧

PDF文件是一种非常常见的文档格式&#xff0c;它具有跨平台、易于阅读和打印等优点&#xff0c;因此在生活和工作中得到了广泛的应用。当我们需要将多个PDF文件合并成一个文件时&#xff0c;我们可以采用以下几种方法。 方法一&#xff1a;使用PDF转换工具 我们在电脑上打开迅…

Spring Boot 中的 @CacheEvict 注解使用

Spring Boot 中的 CacheEvict 注解 在 Spring Boot 中&#xff0c;缓存是提高应用性能的重要手段。为了更好地管理缓存&#xff0c;Spring Boot 提供了一系列的缓存注解&#xff0c;其中 CacheEvict 注解用于清空缓存。 本文将介绍 CacheEvict 注解的含义、原理以及如何使用。…

华为云云耀云服务器L实例评测-基于华为云服务器的测试及简单配置

引言 云计算已经成为现代企业和个人的重要组成部分。在云计算市场上&#xff0c;华为云一直以来都以其出色的性能和服务质量而闻名。周末的时候&#xff0c;利用华为云云耀云服务器搭建了一个基于hexo的个人博客&#xff0c;我用的是2核2G的3M带宽的配置&#xff0c;访问起来挺…

自动化搭建(Jenkins_Docker)1

简介 目前为了搭建Android自动化构建&#xff0c; 包含自动打包、代码审查工具以及自动化测试的串联。如下图&#xff1a; 我拿到的是一个2T的一个服务器&#xff0c;需要在上面搭建整个环境&#xff0c; 整体分解如下&#xff1a; Java安装Jenkins安装和配置Gerrit 和 rep…

GIS前端—地图标注

GIS前端—地图标注 地图标注原理图片标注文本标注矢量图形标注 地图标注原理 地图标注是将空间位置信息点与地图关联&#xff0c;通过图标、窗口等形式把点相关的信息展现在地图上。地图标注是WebGIS应用的核心功能之一&#xff0c;在大众应用中十分常见。基于地图标注可以为用…

使用代码产生标准的软件架构图之C4

在软件开发的流程中&#xff0c; 软件架构图是重要的软件文档&#xff0c;软件架构图包含有多个层级&#xff0c;最常见的&#xff0c;有软件的整体架构和组件、类等图。 整体架构可能使用PPT或者一些绘图工具Visio来绘制组件、类等图有UML的标准&#xff0c; 也可以使用Visio…

【Android知识笔记】进程通信(二)

一、Binder对象是如何跨进程传递的 binder传递有哪些方式?binder在传递过程中是怎么存储的?binder对象序列化和反序列化过程?binder对象传递过程中驱动层做了什么?总结 Binder 对象的跨进程传递主要靠 Parcel 的两个关键方法 writeStrongBinder() 和

【数据结构】—堆排序以及TOP-K问题究极详解(含C语言实现)

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f525;这就不得不推荐此专栏了&#xff1a;C语言 ♈️今日夜电波&#xff1a;ルミネセンス—今泉愛夏 1:01 ━━━━━━️&#x1f49f;──────── 5:05 …

[刷题记录]牛客面试笔刷TOP101(一)

牛客笔试算法必刷TOP101系列,每日更新中~(主要是记录自己的刷题,所以描述的可能不是很清楚 但如果刚好能帮助到你就更好了) 后续后头复习的时候,记得是看正解啊,别对着错的例子傻傻看了... 目录 1.合并有序链表2023.9.3 2.链表是否有环2023.9.4 3.判断链表中环的入口点 …

学Python的漫画漫步进阶 -- 第三步

学Python的漫画漫步进阶 -- 第三步 三、数字类型的数据3.1 Python中的数据类型3.2 整数类型3.3 浮点类型3.4 复数类型3.5 布尔类型3.6 数字类型的相互转换3.6.1 隐式类型的转换3.6.2 显式类型的转换 3.7 练一练3.8 数字类型的总结全部16步完成后 &#xff0c;后续就是介绍项目实…

走进甄云,探寻SRM独角兽成功背后的故事

随着科技的快速发展和全球商业环境的不断变化&#xff0c;中国企业对灵活性、创新性、全球化和效率的需求是迫切的&#xff0c;数字化转型已经成为企业生存和发展的关键因素&#xff0c;对企业具有重要意义&#xff0c;是组织生存和发展的必然趋势。数字化转型涉及整个组织、多…