【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 -1 项目功能描述

news2025/7/25 10:37:57

1 项目功能描述

# 智慧社区-小程序
	-1 欢迎页
		-加载后端:动态变化
	-2 首页
		-轮播图:动态
		-公共栏:动态
		-信息采集,社区活动,人脸检测,语音识别,心率检测,积分商城
	-3 信息采集页面
		-采集人数展示
		-采集列表
	-4 采集详情页面
		-打开摄像头拍照:提交后端保存
	-5 采集统计页面
	-6 人脸检测
	-7 语音识别
	-8 积分商城
	-9 活动
	-10 公告
		-公告列表展示
	-11 我的个人中心
		-个人信息展示
	-12 登录功能

2 创建项目

2.1 创建小程序端

# 1 微信开发者工具,创建项目
# 2 纯净化
# 3 创建4个页面,并全部配置为tabbar页面(app.json),设置全局window属性(app.json)
	-首页index
	-我的my
	-公告notice
	-活动activity
# 4 微信开发者工具-详情-本地设置-不校验合法域名等等

2.2 创建后端项目

# 0 安装python和pycahrm
# 1 使用python的django框架+drf编写+splite
# 2 创建项目 smart_demo_backend,创建app:smart
# 3 清理无用setting.py,配置国际化
# 4 运行在0.0.0.0的8000端口

1 创建python项目
在这里插入图片描述
创建成功
在这里插入图片描述

2 配置

# smart_demo_backend/settings.py
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

SECRET_KEY = 'django-insecure-jvm^y#hdr&^*eorr#twsf!p8n^r(_x9%*7(5+6m!2v7(19aucu'

DEBUG = True

ALLOWED_HOSTS = []


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'smart.apps.SmartConfig',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'smart_demo_backend.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates']
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'smart_demo_backend.wsgi.application'

# 如果使用splite数据库,不需要改动
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_TZ = False

STATIC_URL = 'static/'

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'


## 开启media访问

3 修改配置
微信小程序访问后端,则后端项目设置为运行在0.0.0.0:8000端口
在这里插入图片描述

3 小程序集成vant-app

3.1 node介绍

# 1 正常前端的js代码只能运行在浏览器中
	-浏览器中有js的解释器环境

# 2 作为前端来讲,只能写前端,写不了后端,
	-需要学后端语言,python/go/java等

# 3 于是乎有大神,把chrome浏览器的v8引擎,使用c重写了,让它可以安装在操作系统之上
	-我们就可以使用js语法写后端了

# 4 作为前端开发,不需要学新语法,使用js语法,实现前端后端开发

# 5 好多第三方模块,是使用node构建的
	-vue

js的解释器环境,没有装在操作系统而是浏览器上,因为js必须在浏览器里运行
在这里插入图片描述

3.2 vant-weapp介绍&集成

https://vant-ui.github.io/vant-weapp/?spm=a2c6h.13046898.publish-article.19.64f36ffa6o7LOM#/home

# 1 小程序上如果纯自己写样式,对前端css要求比较高
# 2 使用第三方ui库,快速构建页面
# 3 vant-weapp
	-vant: 有赞团队出品的ui框架,做手机端ui比较多,是移动端ui框架
		-vue端
		-react端
		-微信小程序端,vant-weapp
https://vant-ui.github.io/vant-weapp/?spm=a2c6h.13046898.publish-article.19.64f36ffa6o7LOM#/home
	-目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。


# 4 集成步骤
	1 需要小程序支持安装npm包(vant-weapp)
		-注意:使用专门为微信小程序提供npm的包,不是所有第三方包都支持微信小程序
		-https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html#%E5%8F%91%E5%B8%83-npm-%E5%8C%85
		-小程序环境比较特殊,一些全局变量(如 window 对象)和构造器(如 Function 构造器)是无法使用的。
		-npm包内部编写时使用了window,但到了小程序中就不能使用,因此这个npm包在小程序中无法使用
		-vant-weapp包支持在小程序使用

	2 电脑环境安装node.js
		-node.js类型python解释器
		-安装完后会释放2个命令:node和npm命令
			-node:对应python,执行代码
			-npm:对应pip,安装第三方模块
		-一路next,自动加入环境变量
		-node和npm命令

	3 使用npm安装vant-weapp模块
		-由于npm是国外下载,速度较慢
			-方式一:等
			-方式二:使用镜像,cnpm代替npm
				-安装cnpm
					-npm install -g cnpm --registry=https://registry.npm.taobao.org
					-本地就会有cnpm,下载相较npm会快一些
	
	4 小程序根路径:打开命令行[微信开发者工具,右键-在内建终端打开,注意路径是项目根路径]
		-npm init -y # 生成package.json文件
		-让项目集成vant,集成vant需支持npm,因此先生成npm的配置文件,使其可支持npm安装包

	5 安装vant
		-npm i @vant/weapp -S
		- -S,保存到package.json的dependencies
	
	6 删除小程序app.json
		-将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

	7 在project.config.json的setting加入
	    "packNpmManually": true,
        "packNpmRelationList": [
            {
                "packageJsonPath": "./package.json",
                "miniprogramNpmDistDir": "./"
            }
        ],
	
	8 构建工具 - 构建npm
		-构建ok,集成vant-weapp成功

4.2 检查是否有node
在这里插入图片描述

4.4 生成package.json文件
在这里插入图片描述

4.5 安装vant
package.json的dependencies会多一个vant/weapp
在这里插入图片描述

4.6
在这里插入图片描述

4.7
在这里插入图片描述

4.8
在这里插入图片描述
在这里插入图片描述

3.3 vant使用

https://vant-ui.github.io/vant-weapp/?spm=a2c6h.13046898.publish-article.19.64f36ffa6o7LOM#/cell
# 1 引入vant的组件,在app.json或index.json引入组件
	-app.json 全局所有页面都生效
	-index.json 只在当前页面生效

# 2 使用vant组件
	-复制官网代码


1 在app.json引入组件
在这里插入图片描述
在这里插入图片描述
2 使用vant组件
在这里插入图片描述

4 欢迎页

# 1 一打开小程序,先用一个大图片盖住【打广告】,3s后自动跳转到首页
# 2 新建页面welcome
# 3 广告图添加到项目中

4.1 静态页面

4.1.1 wxml

<!--pages/welcome/welcome.wxml-->
<view class="container">
    <text class="jump" bind:tap="doJump">跳过{{second}}秒</text>
    <image class="img" src="/images/两狗对视.jpg" mode=""/>
</view>

4.1.2 js

// pages/welcome/welcome.js
Page({
    /**
     * 页面的初始数据
     */
    data: {
        second: 3
    },
    onLoad(options) {
        // 启动定时器,倒计时
        // 清除定时器
        var instance = setInterval(()=>{
            if(this.data.second <= 0) {
                // 清除定时器
                clearInterval(instance);
                this.doJump();
            } else {
                this.setData({
                    second: this.data.second-1
                })
            }        
        },1000);
    },
    doJump() {
        //点击跳转首页
        wx.switchTab({
          url: '/pages/index/index',
        })
    }
})

4.1.3 wxss

/* pages/welcome/welcome.wxss */
page {
    height: 100%;
}
.container {
    width: 100%;
    height: 100%;
}

.container .img {
    width: 100%;
    height: 100%;
}
.jump {
    font-size: 30rpx;
    position: absolute;
    left: 600rpx;
    top: 80rpx;
    background-color: #dddddd;
    padding: 10rpx 20rpx;
    border-radius: 20rpx;
}

效果
在这里插入图片描述

4.2 后端加载欢迎页

# 1 广告页写死,后期不能变化
# 2 结合后端,可以动态变化
	-后台运营人员,可以上传广告图片
	-广告图片可实时在小程序端变化

# 3 配合后端接口动态获取图片

4.2.1 创建表模型

# 欢迎图片表
	-图片地址
	-排序 --> 只有一个,取出数据库中数字最大
	-创建时间 --> 上传时间
	-is_delete--> 软删除,前端查不到

pip装pillow包报错,不看了。

4.2.2 开启media访问

跳过。

4.2.3 使用admin上传图片

跳过。

4.2.4 写视图控制函数

跳过。

4.2.5 小程序端

# 1 image的src改为变量img
# 2 请求接口返回img
# 注意:先展示默认图,等后台接口返回配置的图片再替换,合计是3s

在这里插入图片描述

1 image的src改为变量img

<!-- pages\welcome\welcome.wxml -->
<view class="container">
    <text class="jump" bind:tap="doJump">跳过{{second}}秒</text>
    <image class="img" **src="{{img}}"**  mode=""/>
</view>
// pages/welcome/welcome.js
Page({
    /**
     * 页面的初始数据
     */
    data: {
        second: 3,
        img: '/images/两狗对视.jpg'
    },
    onLoad(options) {
        // 向后端发送请求 -- 获取广告页 -- 赋值给img
        wx.request({
            url:'http://127.0.0.1:8000/smart/welcome',
            method: 'get',
            success:(res)=>{
                if(res.data.code === 100) {
                    this.setData({
                        img: res.data.result
                    })
                } else {
                    wx.showToast({
                        title:'网络请求异常'
                    })
                }
            },
            fail: (error)=>{
                wx.showToast({
                    title:'网络请求异常'
                })
            }
        })
        // 启动定时器,倒计时
        // 清除定时器
        var instance = setInterval(()=>{
            if(this.data.second <= 0) {
                // 清除定时器
                clearInterval(instance);
                this.doJump();
            } else {
                this.setData({
                    second: this.data.second-1
                })
            }        
        },1000);
    },
    doJump() {
        //点击跳转首页
        wx.switchTab({
          url: '/pages/index/index',
        })
    }
})

5 首页

5.1 静态页面

# 要素
	-轮播图,swiper小程序组件
	-vant-weapp的通知栏组件
		1 app.json引入组件(属性usingComponents)
		2 index.wxml使用组件
	-快捷入口:vant-weapp的grid宫格
		-引入和使用
	-底部:图片,image标签和flex布局

代码实现

<!--pages\index\index.wxml-->
<!--index.wxml-->
<view class="container">
    <!-- 轮播图 -->
    <view class="banner">
        <swiper autoplay indicator-dots circular indicator-color="#fff" interval="3000">
            <swiper-item>
                <image src="/images/两狗对视.jpg" mode=""/>
            </swiper-item>
            <swiper-item>
                <image src="/images/可爱柯基.jpg" mode=""/>
            </swiper-item>
            <swiper-item>
                <image src="/images/猫猫吃鱼.jpg" mode=""/>
            </swiper-item>
            <swiper-item>
                <image src="/images/蓝金渐层.jpg" mode=""/>
            </swiper-item>
        </swiper>    
    </view>
    <!-- 通知 -->   
    <van-notice-bar
        left-icon="volume-o"
        text="在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。"
    />
    <!-- 快捷入口 -->
    <van-grid column-num="3">
        <van-grid-item icon="photo-o" text="文字" wx:for="{{ 6 }}" />
    </van-grid>
    <!-- 底部 -->
    <view class="bottom">
        <view>
            <image src="/images/蓝金渐层.jpg" mode=""/>
        </view>
        <view>
            <image src="/images/两狗对视.jpg" mode=""/>
        </view>
        <view>
            <image src="/images/可爱柯基.jpg" mode=""/>
        </view>
        <view>
            <image src="/images/猫猫吃鱼.jpg" mode=""/>
        </view>
    </view>
</view>

效果
在这里插入图片描述

6 个人页

6.1 静态页面

up直接复制的,不想写,估计后面还得写,再说吧
p10 51:00

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

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

相关文章

FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解

这些 FFmpeg 安装包有很多版本和变种&#xff0c;主要区别在于以下几个方面&#xff1a; ✅ 一、从名称中看出的关键参数&#xff1a; 1. 版本号 master&#xff1a;开发版&#xff0c;最新功能&#xff0c;但可能不稳定。n6.1 / n7.1&#xff1a;正式版本&#xff0c;更稳定…

AI浪潮下,媒体内容运营的五重变奏

算法驱动的个性化推荐 在信息爆炸的时代,用户面临着海量的内容选择,如何让用户快速找到感兴趣的人工智能内容,成为媒体运营的关键。算法驱动的个性化推荐模式应运而生,它通过分析用户的行为数据,如浏览历史、点赞、评论、搜索关键词等,构建用户兴趣画像 ,再依据画像为用…

WindTerm 以 SSH 协议的方式通过安恒明御堡垒机间接访问服务器

1. 配置堡垒机秘钥 创建公私钥ssh-keygen -t rsa -b 4096执行完该命令后按照提示一路回车就能够创建出公私钥注意&#xff1a;在创建过程中会让你指定秘钥的存储位置以及对应的密码&#xff0c;最好自行指定一下 id_rsa 是私钥id_rsa.pub 是公钥 在堡垒机中指定创建好的私钥 …

通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架

以下是对《道德经》的数学转述尝试&#xff0c;通过现代数学语言重构其核心概念&#xff0c;形成一个兼具形式化与启发性的理论框架&#xff1a; 0. 基础公理体系 定义&#xff1a; 《道德经》是一个动态宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 为“道”的无限维…

邂逅Node.js

首先先要来学习一下nodejs的基础&#xff08;和后端开发有联系的&#xff09; 再然后的学习路线是学习npm&#xff0c;yarn&#xff0c;cnpm&#xff0c;npx&#xff0c;pnpm等包管理工具 然后进行模块化的使用&#xff0c;再去学习webpack和git&#xff08;版本控制工具&…

【慧游鲁博】【8】前后端用户信息管理:用户基本信息在小程序端的持久化与随时获取

文章目录 本次更新整体流程概述1. 用户登录流程前端登录处理 (login.vue)后端登录处理 (AuthServiceImpl.java) 2. 用户信息存储机制前端状态管理 (member.js) 3. 后续请求的身份验证登录拦截器 (LoginInterceptor.java)前端请求携带token 4. 获取用户信息获取用户信息接口 (Us…

SpringBoot返回xml

默认情况下引入web依赖后自带了JackJson 返回JSON数据 你也可以引入fastJSON 那么方便使用可以用JSON.xxx 如果希望Boot默认返回xml数据 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml<…

【案例篇】 实现简单SSM工程-后端

简介 本篇文章将带你从0到1的实现一个SSM项目&#xff0c;通过此案例可以让你在项目中对SpringBoot的使用有一个更加详细的认识&#xff0c;希望这个简单的案例能够帮到你。文章内容若存在错误或需改进的地方&#xff0c;欢迎大家指正&#xff01;若对操作有任何疑问欢迎留言&a…

零基础学习计算机网络编程----网络基本知识

目录 1. 计算机网络发展 1.1 网络发展 1.2 媒介 2 认识协议 2.1 为什么要有协议 2.2 协议的本质 3 网络协议的初识 3.1 什么是协议分层 3.2 为什么会有 4. OSI七层模型 4.1 定义 5. TCP/IP五层(或四层)模型 5.1 有什么 6. 网络传输基本流程 6.1 网络传输流程图…

Zynq和Microblaze的区别和优势

Zynq芯片包含了一颗双核ARM Cortex-A9处理器&#xff0c;这是一颗“硬”处理器---它是芯片上专用 而且优化过的硅片原件。 MicroBlaze为“软”处理器&#xff0c;它是由可编程逻辑部分的单元组合而成的&#xff0c; 也就是说&#xff0c;一个 软处理器的实现和部署在FPGA的逻…

FastAPI 支持文件下载

FastAPI 支持文件下载 FastAPI 支持文件上传 Python 获取文件类型 mimetype 文章目录 1. 服务端处理1.1. 下载小文件1.2. 下载大文件&#xff08;yield 支持预览的&#xff09;1.3. 下载大文件&#xff08;bytes&#xff09;1.4. 提供静态文件服务 2. 客户端处理2.1. 普通下载2…

CNN卷积神经网络到底卷了啥?

参考视频&#xff1a;卷积神经网络&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分钟带你快速了解&#xff01; 我们知道&#xff1a; 图片是由像素点构成&#xff0c;即最终的成像效果是由背后像素的颜色数值所决定 在Excel中&#xff1a;有这样一个由数值0和1组成的66…

MIT 6.S081 2020Lab5 lazy page allocation 个人全流程

文章目录 零、写在前面一、Eliminate allocation from sbrk()1.1 说明1.2 实现 二、Lazy allocation2.1 说明2.2 实现 三、Lazytests and Usertests3.1 说明3.2 实现3.2.1 lazytests3.2.2 usertests 零、写在前面 可以阅读下4.6页面错误异常 像应用程序申请内存&#xff0c;内…

C++初阶-list的使用2

目录 1.std::list::splice的使用 2.std::list::remove和std::list::remove_if的使用 2.1remove_if函数的简单介绍 基本用法 函数原型 使用函数对象作为谓词 使用普通函数作为谓词 注意事项 复杂对象示例 2.2remove与remove_if的简单使用 3.std::list::unique的使用 …

如何优化 MySQL 存储过程的性能?

文章目录 1. 优化 SQL 语句避免全表扫描减少子查询&#xff0c;改用 JOIN避免 SELECT 2. 合理使用索引3. 优化存储过程结构减少循环和临时变量避免重复计算 4. 使用临时表和缓存5. 优化事务处理6. 分析和监控性能7. 优化数据库配置8. 避免用户自定义函数&#xff08;UDF&#…

创新点!贝叶斯优化、CNN与LSTM结合,实现更准预测、更快效率、更高性能!

能源与环境领域的时空数据预测面临特征解析与参数调优双重挑战。CNN-LSTM成为突破口&#xff1a;CNN提取空间特征&#xff0c;LSTM捕捉时序依赖&#xff0c;实现时空数据的深度建模。但混合模型超参数&#xff08;如卷积核数、LSTM层数&#xff09;调优复杂&#xff0c;传统方法…

【Flutter】创建BMI计算器应用并添加依赖和打包

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍创建BMI计算器应用并添加依赖和打包。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

【Linux 学习计划】-- 倒计时、进度条小程序

目录 \r 、\n、fflush 倒计时 进度条 进度条进阶版 结语 \r 、\n、fflush 首先我们先来认识这三个东西&#xff0c;这将会是我们接下来两个小程序的重点之一 首先是我们的老演员\n&#xff0c;也就是回车加换行 这里面其实包含了两个操作&#xff0c;一个叫做回车&…

微服务的应用案例

从“菜市场”到“智慧超市”&#xff1a;一场微服务的变革之旅 曾经&#xff0c;我们的系统像一个熙熙攘攘的传统菜市场。所有功能模块&#xff08;摊贩&#xff09;都挤在一个巨大的单体应用中。用户请求&#xff08;买菜的顾客&#xff09;一多&#xff0c;整个市场就拥堵不堪…

2025网络安全趋势报告 内容摘要

2025 年网络安全在技术、法规、行业等多个维度呈现新趋势。技术上&#xff0c;人工智能、隐私保护技术、区块链、量子安全技术等取得进展&#xff1b;法规方面&#xff0c;数据安全法规进一步细化&#xff1b;行业应用中&#xff0c;物联网、工业控制系统安全升级&#xff0c;供…