当前位置: 首页 > news >正文

微信小程序教学系列(2)

第二章:小程序开发基础

1. 小程序页面布局与样式

在小程序开发中,我们可以使用 WXML(WeiXin Markup Language)和 WXSS(WeiXin Style Sheet)来定义页面的布局和样式。

1.1 WXML基础

WXML 是一种类似于 HTML 的标记语言,用于描述小程序的结构。以下是一些常用的 WXML 标签:

  • <view>:用于替代 HTML 中的 <div> 标签,表示一个视图容器。
  • <text>:用于显示文本内容。
  • <image>:用于显示图片。
  • <button>:用于创建按钮。
  • <input>:用于创建输入框。

下面是一个简单的 WXML 示例:

<view><text>欢迎来到小程序</text><image src="https://example.com/logo.png"></image><button bindtap="handleClick">点击按钮</button>
</view>

1.2 WXSS基础

WXSS 是一种类似于 CSS 的样式语言,用于修饰小程序的样式。以下是一些常用的 WXSS 样式属性:

  • font-size:设置字体大小。
  • color:设置字体颜色。
  • background-color:设置背景颜色。
  • widthheight:设置元素的宽度和高度。
  • marginpadding:设置元素的外边距和内边距。
  • border:设置元素的边框样式。

下面是一个简单的 WXSS 示例:

.view {width: 200rpx;height: 200rpx;background-color: #f1f1f1;margin: 20rpx;padding: 10rpx;border: 1rpx solid #ccc;
}.text {font-size: 16rpx;color: #333;
}.image {width: 100rpx;height: 100rpx;
}

1.3 小程序页面布局与样式实例

接下来,我们通过一个实例来演示小程序的页面布局与样式。

首先,创建一个名为 index 的页面,使用 <view> 来作为根容器,然后在其中添加一些文本和图片:

<view class="container"><text class="title">欢迎来到小程序</text><image class="logo" src="https://example.com/logo.png"></image>
</view>

然后,创建名为 index.wxss 的样式文件,在 index.wxss 文件中,我们为容器和文本添加样式:

.container {width: 300rpx;height: 300rpx;background-color: #f1f1f1;margin: 20rpx;padding: 10rpx;border: 1rpx solid #ccc;
}.title {font-size: 20rpx;color: #333;margin-bottom: 10rpx;
}.logo {width: 200rpx;height: 200rpx;
}

以上就是小程序页面布局与样式的基础知识。通过使用 WXML 和 WXSS,我们可以灵活地创建出自己想要的页面布局和样式。

2. 小程序组件的使用

在小程序开发中,组件是构建页面的基本单元。小程序提供了丰富的组件库,包括基础组件和扩展组件,可以满足各种页面需求。

2.1 基础组件

小程序的基础组件包括常用的视图组件、表单组件、导航组件等。以下是一些常用的基础组件示例:

  • <view>:视图容器,用于包裹其他组件。
  • <text>:用于显示文本内容。
  • <button>:按钮组件,用于触发事件。
  • <input>:输入框组件,用于用户输入。
  • <image>:图片组件,用于显示图片。
  • <swiper>:轮播组件,用于展示图片轮播。
  • <scroll-view>:可滚动视图区域组件。

2.2 扩展组件

除了基础组件,小程序还提供了一些扩展组件,用于满足更复杂的页面需求。以下是一些常用的扩展组件示例:

  • <icon>:图标组件,用于显示图标。
  • <progress>:进度条组件,用于展示进度。
  • <picker>:选择器组件,用于选择数据。
  • <picker-view>:滚动选择器组件,用于滚动选择数据。
  • <slider>:滑动条组件,用于选择范围。
  • <textarea>:多行输入框组件,用于输入多行文本。

2.3 使用组件的步骤

要使用组件,首先需要在页面的 WXML 中引入组件的标签,并设置相应的属性。例如,要使用 <button> 组件,可以在 WXML 中添加以下代码:

<button type="primary" bindtap="handleClick">点击按钮</button>

然后,在对应的页面的 JS 文件中编写事件处理函数。例如,我们可以编写一个名为 handleClick 的函数来处理点击事件:

Page({handleClick: function() {console.log('按钮被点击');}
})

最后,可以在对应的 WXSS 文件中为组件添加样式。例如,我们可以为 <button> 组件添加以下样式:

button {background-color: #ff0000;color: #ffffff;padding: 10rpx 20rpx;
}

通过以上步骤,我们就可以使用小程序提供的组件,并对其进行相应的配置和样式设置。

3. 数据绑定和列表渲染

在小程序中,我们可以使用数据绑定和列表渲染来动态地展示和更新页面的内容。

3.1 数据绑定

数据绑定是将数据和页面元素进行关联,使得页面可以根据数据的变化而动态更新。在小程序中,我们可以使用双大括号({{}})来进行数据绑定。以下是一些常见的数据绑定的用法:

  • 文本绑定:将数据绑定到文本节点中,实现动态显示数据。
<view>{{message}}</view>
  • 属性绑定:将数据绑定到元素的属性中,实现动态设置属性值。
<image src="{{imageUrl}}"></image>
  • 事件绑定:将数据绑定到事件处理函数中,实现动态处理事件。
<button bindtap="{{handleClick}}">点击按钮</button>

在对应的 JS 文件中,我们可以定义与数据绑定相关的数据和处理函数。例如,以下是一个简单的例子:

Page({data: {message: 'Hello World',imageUrl: 'https://example.com/logo.png'},handleClick: function() {console.log('按钮被点击');}
})

3.2 列表渲染

列表渲染是将数据列表动态地展示在页面中。在小程序中,列表渲染可以使用 wx:for 指令来实现。以下是使用列表渲染的一些常用示例:

  • 渲染数组:将数组中的每个元素渲染为列表项。
<view wx:for="{{list}}" wx:for-item="item" wx:for-index="index"><text>{{index}} - {{item}}</text>
</view>
  • 渲染对象:将对象的属性值渲染为列表项。
<view wx:for="{{obj}}" wx:for-item="value" wx:for-index="key"><text>{{key}} - {{value}}</text>
</view>
  • 使用 wx:key 绑定唯一标识符:为每个列表项绑定一个唯一的标识符,以便在有变动时能够正确更新。
<view wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"><text>{{index}} - {{item}}</text>
</view>

在对应的 JS 文件中,我们可以定义一个数据列表,并将其绑定到页面中。例如:

Page({data: {list: ['苹果', '香蕉', '橙子'],obj: {name: '小明',age: 18,gender: '男'}}
})

通过以上步骤,我们就可以实现数据的动态绑定和列表的渲染。

4. 事件处理和交互

在小程序中,我们可以通过事件处理函数来响应用户的操作,并实现交互效果。

4.1 事件绑定

小程序提供了一系列的事件类型,如点击事件、触摸事件、表单事件等。我们可以通过在对应的 WXML 元素上绑定相应的事件处理函数来处理这些事件。以下是一些常见的事件绑定示例:

  • 点击事件:bindtapcatchtap,在元素被点击时触发。
<button bindtap="handleClick">点击按钮</button>
  • 触摸事件:bindtouchstartbindtouchmovebindtouchend 等,分别在触摸开始、触摸移动、触摸结束时触发。
<view bindtouchstart="handleTouchStart">触摸开始</view>
  • 表单事件:bindinputbindsubmit 等,用于处理表单输入和提交。
<input bindinput="handleInput" placeholder="请输入内容"></input>

4.2 事件对象

在事件处理函数中,我们可以通过参数获取事件对象,并获取相关信息。事件对象包含了触发事件的元素信息、触摸点信息等。

以下是一些常用的事件对象属性:

  • currentTarget:当前触发事件的元素。
  • target:实际触发事件的元素,可能与 currentTarget 不同。
  • type:事件类型,如 taptouchstartinput 等。
  • timeStamp:事件触发的时间戳。
  • touches:触摸点的信息,包括触摸点的数量、位置等。

我们可以通过事件对象来获取这些属性,以便在事件处理函数中进行相应的操作。以下是一个示例:

handleClick: function(event) {console.log('点击事件被触发');console.log('当前触发事件的元素:', event.currentTarget);console.log('实际触发事件的元素:', event.target);console.log('事件类型:', event.type);console.log('事件触发的时间戳:', event.timeStamp);
}

4.3 页面跳转

在小程序中,我们可以通过内置的 navigateToredirectToreLaunch 等方法来实现页面之间的跳转。以下是一些常用的页面跳转示例:

  • navigateTo:跳转到新页面,可以返回上一级页面。
wx.navigateTo({url: '/pages/detail/detail'
})
  • redirectTo:关闭当前页面,跳转到新页面。
wx.redirectTo({url: '/pages/home/home'
})
  • reLaunch:关闭所有页面,重新打开新页面。
wx.reLaunch({url: '/pages/login/login'
})

在对应的 JS 文件中,我们可以在事件处理函数中调用相应的页面跳转方法,以实现页面之间的跳转效果。

通过以上步骤,我们可以实现简单的事件处理和页面跳转,从而实现小程序的交互效果。

本章节介绍了小程序开发基础中的页面布局与样式、组件的使用、数据绑定与列表渲染、事件处理和页面跳转。掌握了这些基础知识,我们就可以开始开发小程序,并实现丰富多样的功能。

相关文章:

微信小程序教学系列(2)

第二章&#xff1a;小程序开发基础 1. 小程序页面布局与样式 在小程序开发中&#xff0c;我们可以使用 WXML&#xff08;WeiXin Markup Language&#xff09;和 WXSS&#xff08;WeiXin Style Sheet&#xff09;来定义页面的布局和样式。 1.1 WXML基础 WXML 是一种类似于 H…...

社科院与美国杜兰大学金融管理硕士项目——畅游于金融世界

随着社会经济的不断发展&#xff0c;职场竞争愈发激烈&#xff0c;很多同学都打算通过报考研究生来实现深造&#xff0c;提升自己的综合能力和竞争优势&#xff0c;获得优质的证书。而对于金融专业的学生和在职人员来说&#xff0c;社科院与美国杜兰大学金融管理硕士项目是一个…...

功能强大、超低功耗的STM32WL55JCI7、STM32WL55CCU7、STM32WL55CCU6 32位无线远距离MCU

STM32WL55xx 32位无线远距离MCU嵌入了功能强大、超低功耗、符合LPWAN标准的无线电解决方案&#xff0c;可提供LoRa、(G)FSK、(G)MSK和BPSK等各种调制。STM32WL55xx无线MCU的功耗超低&#xff0c;基于高性能Arm Cortex-M4 32位RISC内核&#xff08;工作频率高达48MHz&#xff09…...

【自适应稀疏度量方法和RQAM】疏度测量、RQAM特征、AWSPT和基于AWSPT的稀疏度测量研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

sql递归查询

一、postgresql 递归sql with recursive p as(select t1.* from t_org_test t1 where t1.id2union allselect t2.*from t_org_test t2 join p on t2.parent_idp.id) select id,name,parent_id from p; sql中with xxxx as () 是对一个查询子句做别名&#xff0c;同时数据库会对…...

常见前端面试之VUE面试题汇总三

7. Vue 中封装的数组方法有哪些&#xff0c;其如何实现页面更新 在 Vue 中&#xff0c;对响应式处理利用的是 Object.defineProperty 对数据进 行拦截&#xff0c;而这个方法并不能监听到数组内部变化&#xff0c;数组长度变化&#xff0c;数 组的截取变化等&#xff0c;所以需…...

Three.js 实现模型材质分解,拆分,拆解效果

原理&#xff1a;通过修改模型材质的 x,y,z 轴坐标 positon.set( x,y,z) 来实现拆解&#xff0c;分解的效果。 注意&#xff1a;支持模型材质position 修改的材质类型为 type“Mesh” ,其他类型的材质修改了position 可能没有实际效果 在上一篇 Three.js加载外部glb,fbx,gltf…...

《JVM修仙之路》初入JVM世界

《JVM修仙之路》初入JVM世界 博主目前正在学习JVM的相关知识&#xff0c;想以一种不同的方式记录下&#xff0c;娱乐一下 清晨&#xff0c;你睁开双眼&#xff0c;看到刺眼的阳光&#xff0c;你第一反应就是完了完了&#xff0c;又要迟到了。刚准备起床穿衣的你突然意识到不对&…...

苍穹外卖 day1 搭建成功环境

引入 idea找不到打包生成的文件目录怎么办&#xff0c;首先点击这个小齿轮 show ecluded files然后就能找到隐藏的文件 这个jar包内含tomcat&#xff0c;可以直接丢在linux上用 开发环境&#xff1a;开发人员在开发阶段使用的环境&#xff0c;一般外部用户无法访问 测试环…...

智能主体按照功能划分

(1) 构件接口主体 构件接口主体提供构件与用户之间的接口。当一个用户通过代理主体向 元组空间提出申请&#xff0c;并找到相匹配的构件主体时&#xff0c;此构件主体会将其所在构件主体 组中的构件接口主体通过申请用户的代理主体传送到用户的界面。 (2) 构件主体 通过构…...

python中的matplotlib画折线图(数据分析与可视化)

先导包&#xff08;必须安装了numpy 、pandas 和matplotlib才能导包&#xff09;&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt核心代码&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.se…...

大数据数据仓库

一.在线教育 1.数据采集 1.数仓概念 数据仓库是为企业制定决策&#xff0c;提供数据支持的。数据采集和存储、对数据进行计算和分析 2.项目架构 2.数据分类 业务数据 用户行为数据 爬虫数据 2.离线数仓 3.实时数仓...

Java“牵手“速卖通商品详情页面数据获取方法,速卖通API实现批量商品数据抓取示例

速卖通商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取速卖通商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问速卖通商城的网页来获取商品详情信息。以下是两种常用方法的介绍&#xff1a;…...

【Git】代码误推送还原(真实项目环境,非纸上谈兵)

背景 RT&#xff0c; 我今天眼睛花了&#xff0c;不小心把工作分支【合并】到了一个不相干的功能分支上&#xff0c;并且代码已经推送到远程仓库了。于是&#xff0c;只能尝试还原到上一次提交中。 【合并】分支有一个点我们是不可避免的&#xff0c;文字很难描述&#xff0c;…...

CPU 飙升?这3大场景助你精准定位

1 常用的 Load 分析方法 CPU高、Load高 通过 top 命令查找占用CPU最高的进程PID&#xff1b; 通过top -Hp PID查找占用CPU最高的线程TID; 对于java程序&#xff0c;使用jstack打印线程堆栈信息&#xff1b; 通过printf %x tid打印出最消耗CPU线程的十六进制&#xff1b; …...

6、Spring_Junit与JdbcTemplate整合

Spring 整合 1.Spring 整合 Junit 1.1新建项目结构 1.2导入依赖 导入 junit 与 Spring 依赖 <!-- 添加 spring 依赖--> <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version…...

Redis是如何保证高可用的?

Redis这种基于内存的关系型数据库我们在选用的时候就是考虑到它的快。而且可以很方便的实现诸如分布式锁、消息队列等功能。 笔者在前一段秋招面试的时候就被提问&#xff0c;“Redis是怎么保证高可用的&#xff1f;” 后续的子问题包含&#xff0c;集群模式是怎么实现的&…...

精益求精:通付盾安卓应用加固升级,为移动安全保驾护航!

在如今竞争激烈的移动应用领域&#xff0c;保障应用资源的安全性成为刻不容缓的任务。最近&#xff0c;通付盾针对资源加密方案进行了全面升级&#xff0c;大幅增强了其兼容性&#xff0c;实现了更全面的资源文件类型保护。这次升级为移动应用的安全性和稳定性迈出了坚实的一步…...

javaweb01-html、css基础

话不多说&#xff0c;先来一张泳装板鸭镇楼 接上一开篇&#xff0c; 首战以web的三大基石开头&#xff08;html、css、js&#xff09;&#xff0c;js内容比较多&#xff0c;下一序章讲解&#xff0c;这一章节主要以html和css为主。 目录 一、初始web前端 二、HTML标签结构 三、…...

牛客复盘] 2023河南萌新联赛第(七)场:信息工程大学 B\I 20230823

牛客复盘] 2023河南萌新联赛第&#xff08;七&#xff09;场&#xff1a;信息工程大学 B\I 20230823 总结B 七夕1. 题目描述2. 思路分析3. 代码实现 I 细胞分裂1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 场外OB做了B和I题&#xff0c;只能说这场有点离谱。B 并查…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...