微信小程序(第一集)

news/2025/2/12 23:41:39/

app.json


{// 定义小程序的所有页面路径,数组中的第一个页面是首页"pages": ["pages/index/index", // 首页"pages/logs/logs"    // 日志页面],// 设置小程序的全局窗口外观(比如导航栏和背景颜色)"window": {"navigationBarBackgroundColor": "#ffffff", // 顶部导航栏的背景颜色(白色)"navigationBarTextStyle": "black",         // 顶部导航栏的文字颜色(黑色)"navigationBarTitleText": "小程序>微信小程序",    // 顶部导航栏的标题"backgroundColor": "#eeeeee",              // 小程序的整体背景颜色(浅灰色)"backgroundTextStyle": "light"             // 下拉刷新时,背景文字的颜色(浅色)},// 配置底部导航栏(tabBar)"tabBar": {"color": "#666666",              // 未选中时的图标和文字颜色(灰色)"selectedColor": "#ff0000",      // 选中时的图标和文字颜色(红色)"borderStyle": "black",          // 底部导航栏的边框颜色(黑色)"backgroundColor": "#ffffff",    // 底部导航栏的背景颜色(白色)// 定义底部导航栏的按钮(最多5个)"list": [{"pagePath": "pages/index/index",         // 这个按钮点击后跳转到首页"text": "首页",                          // 按钮的文字"iconPath": "assets/home.png",           // 默认图标(未选中状态)"selectedIconPath": "assets/home_selected.png" // 选中后的图标},{"pagePath": "pages/logs/logs",           // 这个按钮点击后跳转到日志页面"text": "日志",                          // 按钮的文字"iconPath": "assets/logs.png",           // 默认图标(未选中状态)"selectedIconPath": "assets/logs_selected.png" // 选中后的图标}]},// 配置网络请求的超时时间(单位:毫秒)"networkTimeout": {"request": 10000,        // HTTP 请求的超时时间(10秒)"connectSocket": 10000,  // WebSocket 连接的超时时间(10秒)"uploadFile": 10000,     // 文件上传的超时时间(10秒)"downloadFile": 10000    // 文件下载的超时时间(10秒)},// 是否开启调试模式(true 开启,false 关闭)// 开启后,在开发者工具的 Console 可以看到更多日志信息,方便调试"debug": true
}

点击图标跳转界面


使用 tap 事件 + wx.navigateTo()

如果点击图片后,还需要执行一些逻辑再跳转,可以使用 bindtap 事件:

(1)在 wxml 里绑定 bindtap 事件

<image src="/assets/icon.png" style="width: 100px; height: 100px;" bindtap="goToLogsPage" />

(2)在 js 里实现 goToLogsPage() 方法

Page({goToLogsPage: function () {wx.navigateTo({url: '/pages/logs/logs' // 目标页面路径});}
});


1. 在 js 中定义 navItems 数组

Page({data: {navItems: [{ icon: '/assets/icon1.png', url: '/pages/page1/page1' },{ icon: '/assets/icon2.png', url: '/pages/page2/page2' },{ icon: '/assets/icon3.png', url: '/pages/page3/page3' }]},// 点击图标跳转到相应页面goToPage: function (event) {const url = event.currentTarget.dataset.url; // 获取点击图标的 urlwx.navigateTo({url: url});}
});

2. 在 wxml 中使用 wx:for 循环渲染图标和链接

<view class="nav-container"><!-- wx:for 用来循环渲染 navItems 数组 --><view class="nav-item" wx:for="{{navItems}}" wx:key="index" bindtap="goToPage" data-url="{{item.url}}"><image class="nav-icon" src="{{item.icon}}" mode="aspectFit" /></view>
</view>

小程序发送数据给flask后端


1. 小程序页面设计(WXML)

首先,在小程序的 WXML 文件中创建两个输入框和一个按钮。输入框用来接收用户输入的数据。

WXML 代码:
<view><!-- 输入框1 --><input type="text" placeholder="请输入名字" bindinput="onNameInput" /><!-- 输入框2 --><input type="number" placeholder="请输入年龄" bindinput="onAgeInput" /><!-- 发送按钮 --><button bindtap="sendData">发送数据</button>
</view>

2. 小程序的 JavaScript 逻辑(JS)

然后,在小程序的 JS 文件中,定义两个输入框的 data 和输入事件处理函数。发送按钮的点击事件会将这两个数据发送到 Flask 后端。

JS 代码:
Page({data: {name: '',age: ''},// 处理输入框1的输入onNameInput: function (e) {this.setData({name: e.detail.value});},// 处理输入框2的输入onAgeInput: function (e) {this.setData({age: e.detail.value});},// 发送数据到 Flask 后端sendData: function () {const data = {name: this.data.name,age: this.data.age};wx.request({url: 'http://127.0.0.1:5000/data',  // Flask 后端 URLmethod: 'POST',data: data,  // 发送的数据header: {'content-type': 'application/json'  // 设置发送类型为 JSON},success: function (res) {console.log('数据发送成功', res);},fail: function (err) {console.log('数据发送失败', err);}});}
});

3. Flask 后端接收数据

在 Flask 后端,我们需要定义一个接收 POST 请求的路由,用来接收小程序发送的数据。我们可以通过 request.get_json() 获取前端发送的 JSON 数据。

Flask 后端代码:
from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/data', methods=['POST'])
def receive_data():# 获取前端发送的 JSON 数据data = request.get_json()# 获取数据中的字段name = data.get('name')age = data.get('age')# 处理数据(例如存储、计算等)print(f"Received data: Name - {name}, Age - {age}")# 返回响应给小程序return jsonify({'status': 'success','message': 'Data received successfully'})if __name__ == '__main__':app.run(debug=True)

总结:

wxml先弄出输入框(和js的一个方法绑定的,动态)还有按钮(和js的一个方法绑定的)。

两个输入框输入后,会总结在data里面。

按钮的方法写了提交data数据和post的请求。

小程序>微信小程序从mysql得到数据然后显示在前端


WXML 文件:

<view><!-- 获取数据的按钮 --><button bindtap="fetchData">获取用户数据</button><!-- 显示用户数据 --><view><!-- wx:for 是一个循环指令,循环遍历 users 数组 --><block wx:for="{{users}}" wx:key="index"><view><!-- 显示每个用户的 name 和 age --><text>{{item.name}} - {{item.age}}岁</text></view></block></view>
</view>

index.js

Page({data: {users: []},// 发送GET请求获取MySQL数据fetchData: function () {wx.request({url: 'http://127.0.0.1:5000/get_users',  // Flask 后端接口method: 'GET',success: (res) => {if (res.statusCode === 200) {this.setData({users: res.data  // 将获取的用户数据存入 data});} else {wx.showToast({title: '获取数据失败',icon: 'none'});}},fail: (err) => {console.log(err);wx.showToast({title: '网络请求失败',icon: 'none'});}});}
});

Flask 后端代码(获取 MySQL 数据):

from flask import Flask, jsonify
import mysql.connectorapp = Flask(__name__)# 连接数据库的配置
def get_db_connection():conn = mysql.connector.connect(host='localhost',  # 数据库地址user='your_username',  # 数据库用户名password='your_password',  # 数据库密码database='your_database'  # 数据库名称)return conn# 定义一个GET请求接口来获取数据
@app.route('/get_users', methods=['GET'])
def get_users():conn = get_db_connection()cursor = conn.cursor(dictionary=True)# 执行SQL查询cursor.execute('SELECT id, name, age FROM users')# 获取查询结果users = cursor.fetchall()# 关闭数据库连接cursor.close()conn.close()# 返回JSON格式的查询结果return jsonify(users)if __name__ == '__main__':app.run(debug=True)

当前切换按钮

(先设置默认的种类id=1,然后设置有四个种类{id=1,id=2,id=3,id=4},每个种类都包含两东西{{id=1,id=2},id=哪个种类})------->for循环把这四个种类显示在前端(每个种类都绑定按钮方法(设置在js里面))---->这个js方法是让当前默认的种类id=1变为现在点击的种类id------>for循环显示在前端,再用id过滤一下{{id=1,id=2},id=哪个种类})。


http://www.ppmy.cn/news/1571554.html

相关文章

C++基础 | 线程`std::thread`

什么是std::thread&#xff1f; std::thread是C11中引入的一个类&#xff0c;用于表示和管理线程。通过std::thread&#xff0c;我们可以创建一个新的线程来执行指定的任务。线程是操作系统调度的基本单位&#xff0c;多个线程可以并发执行&#xff0c;从而提高程序的效率。 创…

C# OpenCV机器视觉:SoftNMS非极大值抑制

嘿&#xff0c;你知道吗&#xff1f;阿强最近可忙啦&#xff01;他正在处理一个超级棘手的问题呢&#xff0c;就好像在一个混乱的战场里&#xff0c;到处都是乱糟糟的候选框&#xff0c;这些候选框就像一群调皮的小精灵&#xff0c;有的重叠在一起&#xff0c;让阿强头疼不已。…

单片机之基本元器件的工作原理

一、二极管 二极管的工作原理 二极管是一种由P型半导体和N型半导体结合形成的PN结器件&#xff0c;具有单向导电性。 1. PN结形成 P型半导体&#xff1a;掺入三价元素&#xff0c;形成空穴作为多数载流子。N型半导体&#xff1a;掺入五价元素&#xff0c;形成自由电子作为多…

支持向量机相关文献

根据最新的研究动态和文献综述&#xff0c;当前支持向量机&#xff08;SVM&#xff09;的研究方向和内容主要集中在以下几个方面&#xff1a; 1. 提高训练效率 并行计算与分布式计算&#xff1a;随着数据规模的增加&#xff0c;SVM的训练时间往往较长&#xff0c;难以满足实时…

[转]Java面试近一个月的面试总结

本文是在学习中的总结&#xff0c;欢迎转载但请注明出处&#xff1a;http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作&#xff0c;近一个月面试了不少的公司&#xff0c;下面将一些面试经验和思考分享给大家。另外校招也快要开始了&#xff0c;为…

《从入门到精通:蓝桥杯编程大赛知识点全攻略》(十一)-回文日期、移动距离、日期问题

前言 在这篇博客中&#xff0c;我们将通过模拟的方法来解决三道经典的算法题&#xff1a;回文日期、移动距离和日期问题。这些题目不仅考察了我们的基础编程能力&#xff0c;还挑战了我们对日期处理和数学推理的理解。通过模拟算法&#xff0c;我们能够深入探索每个问题的核心…

SpringBoot集成Milvus,实现数据增删改查

Milvus是一款开源向量数据库&#xff0c;主要用于在大模型领域做向量查询的相关操作。milvus支持的语言比较多&#xff0c;支持python, Java, Go,node等开发语言。本文主要介绍如何使用Java语言&#xff0c;采用springboot框架集成和调用Milvus数据库。 本文示例使用的milvus版…

ASP.NET Core DDD

目录 什么是微服务 单体结构项目 微服务架构项目 微服务架构误区 什么是DDD DDD领域与领域模型 领域&#xff08;Domain&#xff09; 领域模型&#xff08;Domain Model&#xff09; 事务脚本 事务脚本的问题 通用语言与界限上下文 通用语言 界限上下文 实体与值…