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

微信小程序(第一集)

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)

相关文章:

微信小程序(第一集)

app.json {// 定义小程序的所有页面路径&#xff0c;数组中的第一个页面是首页"pages": ["pages/index/index", // 首页"pages/logs/logs" // 日志页面],// 设置小程序的全局窗口外观&#xff08;比如导航栏和背景颜色&#xff09;"wind…...

为什么细胞是圆的?

从受力方面分析 以细胞重心 O O O为原点&#xff0c;建立平面直角坐标系 x O y xOy xOy&#xff0c; x 、 y x、y x、y正半轴交细胞于A&#xff0c;B 设 f θ ∑ ∀ P ∈ C , ∠ P O A θ P O ∑ ∀ P ∈ C , ∠ P O A θ 1 f_\theta\dfrac{\sum_{\forall P\in C\ \ , \an…...

游戏引擎学习第96天

讨论了优化和速度问题&#xff0c;以便简化调试过程 节目以一个有趣的类比开始&#xff0c;提到就像某些高端餐厅那样&#xff0c;菜单上充满了听起来陌生或不太清楚的描述&#xff0c;需要依靠服务员进一步解释。虽然这听起来有些奇怪&#xff0c;但实际上&#xff0c;它反映…...

本地优先的分布式锁实现

本地优先分发锁旨在通过使用本地锁优先来减少分发锁服务器的并发压力。如图1所示&#xff0c;当请求想要获取分发锁时&#xff0c;该请求必须首先获取JVM锁&#xff08;本地锁&#xff09;。通过这样做&#xff0c;对于特定的锁密钥&#xff0c;分布式锁服务器将只承载固定数量…...

基于知乎平台的“开源AI智能名片2 + 1链动模式S2B2C商城小程序”引流策略研究

摘要&#xff1a;本文聚焦于如何借助知乎平台的高权重及优质用户特性&#xff0c;对“开源AI智能名片2 1链动模式S2B2C商城小程序”进行有效引流。通过深入分析知乎平台的用户特点、引流规则&#xff0c;并结合具体的引流方法&#xff0c;旨在为相关项目在知乎平台实现高效用户…...

DeepSeek-Coder系列模型:智能编程助手的未来

文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…...

FPGA开发技能(10)热电偶测温ADS1118方案

文章目录 1.热电偶原理2.ADS1118方案2.1ADS介绍2.2原理设计2.3实物连接图2.4测温原理 3.误差校准3.1查表法3.2冷端补偿法 4.SPI操作时序5.传送门 1.热电偶原理 两个不同材料的金属线一端在同一结点连接&#xff0c;另一端放在被测温点&#xff0c;则二者会产生一定的压差&…...

如何优化网站结构以促进快速收录?

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/104.html 优化网站结构以促进快速收录&#xff0c;可以从以下几个方面入手&#xff1a; 一、合理规划页面结构 扁平化结构&#xff1a;采用扁平化的网站结构&#xff0c;减少层级&#xf…...

算法-动态规划-0-1背包问题(二维0-1背包,背包求方案数,求背包具体方案)

概念 背包问题&#xff08;Knapsack Problem&#xff09;是算法领域的经典组合优化问题&#xff0c;在资源分配等场景有广泛应用&#xff0c;以下从定义、常见类型、解决方法等方面介绍&#xff1a; 定义 给定一组物品&#xff0c;每个物品都有自己的重量和价值&#xff0c;…...

位运算算法篇:位运算实现加减乘除

位运算算法篇&#xff1a;位运算实现加减乘除 那么我们想必对加减乘除这些数学计算并不陌生&#xff0c;但是对于我们的计算机来说&#xff0c;由于机器只能识别二进制的语言&#xff0c;那么我们底层的数据都是以二进制的形式存在&#xff0c;那么我们CPU的计算器的加减乘除运…...

【故障处理】ORA-19849 ORA-19612 0RA-17627 ORA-03114

【故障处理】ADG duplicate 异常中断ORA-19849 ORA-19612 0RA-17627 ORA-03114 Corrupt block 84629 found during reading backup piece 一、概述二、报错信息三、报错原因四、解决方法五、其他类似报错5.1 报错信息 一、概述 部署adg执行duplicate异常中断&#xff0c;RMAN过…...

【MQ】Spring3 中 RabbitMQ 的使用与常见场景

一、初识 MQ 传统的单体架构&#xff0c;分布式架构的同步调用里&#xff0c;无论是方法调用&#xff0c;还是 OpenFeign 难免会有以下问题&#xff1a; 扩展性差&#xff08;高耦合&#xff0c;需要依赖对应的服务&#xff0c;同样的事件&#xff0c;不断有新需求&#xff0…...

jupyterLab插件开发

jupyter lab安装、配置&#xff1a; jupyter lab安装、配置教程_容器里装jupyterlab-CSDN博客 『Linux笔记』服务器搭建神器JupyterLab_linux_布衣小张-腾讯云开发者社区 Jupyter Lab | 安装、配置、插件推荐、多用户使用教程-腾讯云开发者社区-腾讯云 jupyterLab插件开发教…...

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情&#xff1a; 1TB的硬盘&#xff0c;分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程&#xff1a;对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...

QT-常见问题

1. C&#xff08;特别是 Qt&#xff09;开发中&#xff0c;内存优化的方法 1. 合理管理对象生命周期&#xff0c;使用智能指针 Qt 提供了 QScopedPointer 和 QSharedPointer 来管理对象生命周期&#xff0c;避免手动 delete 导致的内存泄漏。 2. 减少内存占用 QString、QBy…...

如何通过腾讯 ima.copilot 训练自己的知识库

如何通过腾讯 ima.copilot 训练自己的知识库 在信息爆炸的时代&#xff0c;拥有一个专属的知识库&#xff0c;能让我们在学习、工作中快速获取所需信息&#xff0c;极大地提升效率。腾讯推出的 AI 智能工作台 ima.copilot&#xff0c;为我们打造个人知识库提供了便利。今天&am…...

关于近期我的交流之深度思考DeepSeek归纳总结

以下内容我摘自昨天 2025-2-9 群里的讨论,只涉及我的观点内容,会让DeepSeek进行深度思考 抢财猫: 能提出一个好问题不容易的,问题边界包含了所有认知,提问题需要能力的 抢财猫: 每个人都相当于一个大模型,自己给自己投入了多少算力,训练了多少数据参数,自己心里有数…...

智能生鲜配送管理系统:生鲜及快消品行业的数字化转型利器

在生鲜及快消品行业&#xff0c;高效的供应链管理是企业成功的关键。随着科技的不断进步&#xff0c;越来越多的企业开始采用智能化管理软件来提升运营效率、降低成本并优化客户体验。今天&#xff0c;我们就来了解一下这类智能生鲜配送管理系统的核心功能和技术优势&#xff0…...

DeepSeek和ChatGPT的优劣或者区别(答案来DeepSeek和ChatGPT)

DeepSeek的答案 DeepSeek与ChatGPT作为当前两大主流AI模型&#xff0c;在架构设计、性能表现、应用场景等方面存在显著差异&#xff0c;以下从多个维度进行对比分析&#xff1a; 一、架构与训练效率 架构设计 DeepSeek&#xff1a;采用混合专家&#xff08;MoE&#xff09;框架…...

【C语言标准库函数】标准输入输出函数详解[5]:格式化文件输入输出

目录 一、fprintf() 函数 1.1. 函数简介 1.2. fprintf使用场景 1.3. 注意事项 1.4. 示例 二、fscanf() 函数 2.1. 函数简介 2.2. fscanf使用场景 2.3. 注意事项 2.3. 示例 三、总结 在 C 语言中&#xff0c;格式化文件输入输出函数能够让我们以特定的格式对文件进行…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...