微信小程序(第一集)

news2025/2/13 2:07:36

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; // 获取点击图标的 url
    wx.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 后端 URL
      method: '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, jsonify

app = 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.connector

app = 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.coloradmin.cn/o/2297108.html

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

相关文章

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件&#xff0c;可以采取以下几种方法&#xff1a; 一、使用浏览器内置功能 打开HTML文件&#xff1a;在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框&#xff1a;按下CtrlP&#xff08;Windows&#xff09;或CommandP&#xff08;M…

科技查新过不了怎么办

“科技查新过不了怎么办&#xff1f;” “科技查新不通过的原因是什么&#xff1f;” 想必这些问题一直困扰着各位科研和学术的朋友们&#xff0c;尤其是对于查新经验不够多的小伙伴&#xff0c;在历经千难万险&#xff0c;从选择查新机构、填写线上委托单到付费&#xff0c;…

超详细的数据结构3(初阶C语言版)栈和队列。

文章目录 栈和队列1.栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 总结 栈和队列 1.栈 1.1 概念与结构 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的⼀端进行插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶&#xff0c;另…

centos 7 关于引用stdatomic.h的问题

问题&#xff1a;/tmp/tmp4usxmdso/main.c:6:23: fatal error: stdatomic.h: No such file or directory #include <stdatomic.h> 解决步骤&#xff1a; 1.这个错误是因为缺少C编译器的标准原子操作头文件 stdatomic.h。在Linux系统中&#xff0c;我们需要安装开发工具…

Unity WebGL包体压缩

最近在开发webgl&#xff0c;踩了很多坑&#xff0c;先来说下包体的问题。 开发完之后发现unity将文件都合并到一个文件了&#xff0c;一共有接近100m。 这对网页端的体验来说是可怕的&#xff0c;因为玩家必须要加载完所有的文件才能进入&#xff0c;这样体验特别差。 于是想…

【对比测评】 .NET 应用的 Web 视图控件:DotNetBrowser 或 EO.WebBrowser

您是否需要 .NET 应用的 Web 视图控件&#xff1f;.NET 生态系统提供了很多东西&#xff0c;有免费的 Web 视图控件&#xff0c;既有开源的&#xff0c;也有专有的。还有一些商业 Web 视图 控件&#xff0c;也是企业经常选择的一种选项。 在这篇博文中&#xff0c;我们比较了商…

Redis 数据类型 String 字符串

Redis 中的 String 数据类型 是最基础且使用最广泛的数据类型之一。它本质上是一个字节序列&#xff0c;可以存储各种类型的数据&#xff0c;如字符串、整数、浮点数等&#xff0c;其字符串类型的值包含⼀般格式的字符串或者类似 JSON、XML 格式的字符串&#xff1b;还可以存储…

查询语句来提取 detail 字段中包含 xxx 的 URL 里的 commodity/ 后面的数字串

您可以使用以下 SQL 查询语句来提取 detail 字段中包含 oss.kxlist.com 的 URL 里的 commodity/ 后面的数字串&#xff1a; <p><img style"max-width:100%;" src"https://oss.kxlist.com//8a989a0c55e4a7900155e7fd7971000b/commodity/20170925/20170…

业务开发 | 基础知识 | Maven 快速入门

Maven 快速入门 1.Maven 全面概述 Apache Maven 是一种软件项目管理和理解工具。基于项目对象模型的概念&#xff08;POM&#xff09;&#xff0c;Maven 可以从中央信息中管理项目的构建&#xff0c;报告和文档。 2.Maven 基本功能 因此实际上 Maven 的基本功能就是作为 Ja…

机器学习 - 词袋模型(Bag of Words)实现文本情感分类的详细示例

为了简单直观的理解模型训练&#xff0c;我这里搜集了两个简单的实现文本情感分类的例子&#xff0c;第一个例子基于朴素贝叶斯分类器&#xff0c;第二个例子基于逻辑回归&#xff0c;通过这两个例子&#xff0c;掌握词袋模型&#xff08;Bag of Words&#xff09;实现文本情感…

【Android开发】Android Studio汉化

前言 该插件是官方支持插件&#xff0c;未对任何软件进行修改和破解 Android Studio 是基于 IntelliJ IDEA 社区版开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于Android应用程序的开发。以下是为什么 Android Studio 能使用 IntelliJ IDEA 插件的原因&am…

后端java工程师经验之谈,工作7年,mysql使用心得

mysql 工作7年&#xff0c;mysql使用心得 mysql1.创建变量2.创建存储过程2.1&#xff1a;WHILE循环2.2&#xff1a;repeat循环2.3&#xff1a;loop循环2.4&#xff1a;存储过程&#xff0c;游标2.5&#xff1a;存储过程&#xff0c;有输入参数和输出参数 3.三种注释写法4.case …

ArcGIS Pro批量创建离线服务sd包

背景&#xff1a; 主要针对一个工程内有多个地图框项&#xff1a; 处理方法&#xff1a;通过Python脚本处理打包。 运行环境 在Pro的Python环境中去运行编写的Python脚本。 Python 脚本参考 import arcpy import os# Set output file names outdir r"d:\data\out&…

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek &#xff0c;点击API开放平台。 在开放平台界面左侧点击API keys&#xff0c;进入API keys管理界面&#xff0c;点击创建API key按钮创建API key&#xff0c;名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…

信创领域的PostgreSQL管理员认证

信创产业&#xff0c;全称为信息技术应用创新产业&#xff0c;是中国为应对国际技术竞争、保障信息安全、实现科技自立而重点发展的战略性新兴产业。其核心目标是通过自主研发和生态构建&#xff0c;逐步替代国外信息技术产品&#xff0c;形成自主可控的国产化信息技术体系。 发…

使用 Visual Studio Code (VS Code) 开发 Python 图形界面程序

安装Python、VS Code Documentation for Visual Studio Code Python Releases for Windows | Python.org 更新pip >python.exe -m pip install --upgrade pip Requirement already satisfied: pip in c:\users\xxx\appdata\local\programs\python\python312\lib\site-pa…

IEEE期刊Word导出PDF注意事项

在系统上提交论文时候一般要求PDF文档&#xff0c;但是word直接转PDF可能存在一些问题&#xff1a; 部分图片不清晰。字体未嵌入PDF。间距发生了变化。字体发生了变化。一张图片显示不完全。 下面介绍word转PDF最稳妥的技巧以及如何实现全部字体的嵌入。 1. 操作流程 ① 另…

如何在 Elasticsearch 中设置向量搜索 - 第二部分

作者&#xff1a;来自 Elastic Valentin Crettaz 了解如何在 Elasticsearch 中设置向量搜索并执行 k-NN 搜索。 本文是三篇系列文章中的第二篇&#xff0c;深入探讨了向量搜索&#xff08;也称为语义搜索&#xff09;的复杂性以及它在 Elasticsearch 中的实现方式。 第一部分重…

DeepSeek的出现会对百度有多大影响?

当DeepSeek与ChatGPT等大模型接管搜索入口&#xff0c;我们正见证百年一遇的信息革命。 01 传统搜索已死&#xff1f;AI助手正在重写游戏规则&#xff01; 当DeepSeek与ChatGPT等大模型接管搜索入口&#xff0c;我们正见证百年一遇的信息革命。 就像汽车淘汰马车、触屏终结按键…

PyQt学习记录01——加法计算器

目录 PyQt学习记录01——加法计算器 PyQt学习记录02——串口助手 0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序&#xff0c;然后新建一个目录用于学习&#xff0c;其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力&#xff0c;请改为国内源 pip …