手把手教小白微信小程序开发(超详细保姆式教程)

news2024/11/24 21:00:41

注册:微信公众平台 -> 立即注册 ->小程序

AppID(小程序ID) wx05c13b331acc9d01

AppSecret(小程序密钥) 4f8232c7bbd4801e58a166d72e92e529

安装 微信开发者工具 ,扫描就可以登录

设置:右上角设置 ->外观浅色,代理,不使用任何代理

创建微信小程序,填就完事了

小程序主界面5个部分,菜单栏,工具栏,模拟器,代码编辑器,调试器

帮助->开发者文档

pages用来存放所有小程序页面

utils用来存放工具性质模块

app.js入口文件,app.json全局配置文件,app.wxss全局样式

project.config.json项目配置文件,setting编译相关配置,appid,小程序的账号ID

sitemap.json是否允许被微信索引

每个页面由4个,.js脚本,.json配置,.wxml模板结构,.wxss样式表文件

app.js中:pages:页面路径,window:页面背景色,文字样式表,style:全局样式,sitemapLocation指明路径

新建小程序页面:在app.json中添加存放路径,自动会创建页面文件

wxss增加rpx尺寸单位,app.wxss是全局样式

常用的视图类组件:view类似于div用来布局,scroll-view 可滚动的视图区域,swiper和swiper-item.轮播图和轮播项

数字经济,区块链,chatgpt.先选赛道

text,长按复制。

text-rich,显示后端传来的html

button,按钮组件

image,图片组件

navigator,导航

事件监听API,on开头,wx.onWindowResize(function callback)

同步API,Sync开头

异步API,类似于$.ajax(options),通过success,fail,complete接收调用结果,wx.request()发起网络数据请求。

协同开发,员工权限进行边界的划分。

事件对象属性列表

type事件类型,timeStamp页面打开到触发事件所经过的毫秒数,target触发事件的组件的一些属性值集合,

currentTarget当前组件属性值集合,detail额外的信息,touches触摸事件,changedTouches触摸事件,当前变化的触摸信息的数组

重设值:

btnChangeCount(){ this.setData({ count: this.data.count+1 }) }

事件传参

<button type="primary" bindtap="btnTap2" data-info="{{3}}">+2</button> btnTap2(e){ console.log(e); console.log(e.target.dataset.info); }

if和block

<view wx:if="{{type===1}}">男</view> <view wx:elif="{{type===2}}">女</view> <view wx:else>保密</view> <block wx:if="{{false}}"> <view>view1</view> <view>view2</view> </block> <view hidden="{{false}}">隐藏</view> <view wx:for="{{arr1}}"> 索引是:{{index}},item项是:{{item}} </view>

wxss中,rpx尺寸单位,@import样式导入

rpx:解决屏幕适配的尺寸单位,宽度等分为750份,较小设备上宽度小,较大则宽度大。

@import "common.wxss";导入外联样式表

全局样式:app.wxss,局部样式优先于全局样式

全局配置:app.json

pages页面存放路径,

window全局设置小窗口外观,导航栏区域,背景区域,页面主体区域。

navigationBarTitleText导航栏文本,navigationBarBackgroundColor导航栏背景颜色,navigationBarTextStyle标题颜色可选黑白,

开启下拉刷新,"enablePullDownRefresh": true,backgroundColor下拉时背景色,backgroundTextStyle下拉刷新小圆点颜色,

onReachBottomDistance下拉触底默认50px可自由设置

tabBar设置小程序底部tabBar效果

底部和顶部,最少2个,最多5个,顶部不显示icon只显示文本。

style是否启用组件样式

本地生活案例

D:\主流技术\黑马程序员\微信小程序\day02\local_life

问题:页面顶部覆盖

九宫格布局:

<!-- 九宫格区域 --> <view class="grid-list"> <view class="grid-item" wx:for="{{gridList}}" wx:key="id"> <image src="{{item.icon}}" mode=""/> <text>{{item.name}}</text> </view> </view>

gridList:[ { id: 1,icon: '/images/swiper/1.jpg',name:'美食'}, { id: 2,icon: '/images/swiper/2.jpg',name:'美食'}, { id: 3,icon: '/images/swiper/3.jpg',name:'美食'}, { id: 4,icon: '/images/swiper/1.jpg',name:'美食'}, { id: 5,icon: '/images/swiper/2.jpg',name:'美食'}, { id: 6,icon: '/images/swiper/3.jpg',name:'美食'}, { id: 7,icon: '/images/swiper/1.jpg',name:'美食'}, { id: 8,icon: '/images/swiper/2.jpg',name:'美食'}, { id: 9,icon: '/images/swiper/3.jpg',name:'美食'} ]

.grid-list { display: flex; flex-wrap: wrap; border-left: 1rpx solid #efefef; border-top: 1rpx solid #efefef; } .grid-item { width: 33.33%; height: 200rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; border-right: 1rpx solid #efefef; border-bottom: 1rpx solid #efefef; box-sizing: border-box; } .grid-item image { width: 60rpx; height: 60rpx; } .grid-item text { font-size: 24rpx; margin-top: 10rpx; }

声明式导航

导航tabBar页面

<navigator url="/pages/message/message" open-type="switchTab">

导航到非tabBar页面

<navigator url="/pages/info/info" open-type="navigate"> 可省略open-type

后退导航,默认delta=1

<navigator open-type="navigateBack" delta="1">后退</navigator>

编程式导航

导航到tabBar页面

gotoMessage(){ wx.switchTab({ url: '/pages/message/message', }) }

非页面

wx.navigateTo({ url: '/pages/info/info', })

后退导航

wx.navigateBack({ delta: 1 })

带参数

<navigator url="/pages/info/info?name=zs&age=20">带参数跳转到info页面</navigator>

页面事件,下拉刷新

info.json单独为自己页面开下拉刷新 enablePullDownRefresh

backgroundColor配合窗口背景颜色,仅支持16进制的颜色值

backgroundTextStyle下拉刷新loading的样式,仅支持dark和ligth

onPullDownRefresh() { this.setData({ count: 0 }) wx.stopPullDownRefresh() },

上拉触底

"onReachBottomDistance": 100,上拉触底距离默认50

onReachBottom() { var color10 = new Array(10).fill(this.randomRGBColor()); console.log(color10); },

加载

wx.showLoading({ title: '数据加载中...', }) setTimeout(function(){ wx.hideLoading() },2000)

节流,1.定义节流阀idloading,2.在方法中修改isloading节流阀的值,3.上拉触底方法中判断节流阀的值

数据中增加isloading: false,方法前先判断if(this.data.isloading) return,方法最后设置this.setData({

isloading: false

})

重新编译以后定位到原来的位置,普通编译->添加编译模式->修改为当前页面路径,刷新还在当前页面

生命周期函数

小程序声明周期,在app.js中,onLaunch小程序初始化全局一次,onShow启动或从后台进入前台,onHide前台进入后太

页面声明周期:onLoad初始化页面只一次,onShow页面显示,onReady页面初次渲染完成只调用一次,可修改标题,

onHide页面隐藏,onUnload页面卸载只一次

wxs类似于js,过滤器

数据类型,number,string,boolean,object,function,array,date,regexp.

支持类似ES5,var,普通function等

wxs遵循CommonJS规范,module,require(),module.export

内嵌wxml中

<view>{{m1.toUpper(username)}}</view> <wxs module="m1"> module.exports.toUpper = function (str) { return str.toUpperCase(); } </wxs>

外联tools.wxs

function toLower(str) { return str.toLowerCase() } module.exports = { toLower: toLower }

<view>{{m2.toLower(country)}}</view>

<wxs src="../../utils/tools.wxs" module="m2"/>

组件中,纯数据字段下划线开头,_b,指定所有的_开头数据字段为纯数据字段,pureDataPattern: /^_/

自定义组件的生命周期

created组件实例被创建时执行,attached组件实例进入页面节点执行,ready组件视图层布局完成执行,

moved组件实例被移动到节点树另一个位置执行,detached从页节点移除时执行,error抛出错误执行

在lifetimes:{}中组件生命周期。pageLifetimes:{}页面生命周期

,单个插槽,

多个插槽

通过插槽填充的内容

推荐一些有用的小程序

有赞,vant-weapp,https://vant-contrib.gitee.io/vant-weapp/#/home

共享充电宝:共享充电宝小程序: 一款线上的共享充电宝小程序

多门店派单:多门店派单小程序: 多门店派单商城小程序

在线课程:在线课程小程序: 在线课程小程序

健身馆:健身房小程序: 健身房小程序

派单:派单小程序: 派单小程序

场馆预定:场馆预定小程序: 场馆预定小程序

社区团购小程序:社区团购小程序: 一款线上的社区团购小程序

早餐线上预订:早餐订阅小程序: 一款线上早餐预订小程序

相册资源存储相册小程序: 一款线上的相册小程序

美容美发:美容美发小程序: 美容美发小程序

商城小程序:微信电商小程序: 微信小程序电商源码:外卖小程序,电商小程序,门店类小程序,展示类小程序,批发商城小程序、分销小程序。

按摩小程序:按摩小程序: 按摩小程序

需求,erp,电商,加群,目标群体,淘宝,某书,某鱼,

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

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

相关文章

C++通过进程句柄、进程id或进程名去杀掉进程(附完整源码)

目录 1、通过进程句柄去杀进程 2、通过进程id去杀进程 3、通过进程名去杀进程 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931Windows C++ 软件开发从入门到精通(专栏文章,持续更…

普中51单片机:蜂鸣器的简单使用(十一)

文章目录 引言蜂鸣器的分类工作原理无源蜂鸣器压电式蜂鸣器&#xff1a;电磁式蜂鸣器&#xff1a; 电路符号及应用代码演示——无源蜂鸣器 引言 蜂鸣器是一种常见的电子音响器件&#xff0c;广泛应用于各种电子产品中。它们能够发出不同频率的声音&#xff0c;用于警报、提醒、…

AI软件测试|人工智能测试中对抗样本生成攻略

从医疗诊断、自动驾驶到智能家居&#xff0c;人工智能技术为各个行业领域带来无限可能的同时&#xff0c;挑战也日益显现。特别是在人工智能安全领域&#xff0c;随着恶意攻击和数据欺骗的不断演变&#xff0c;确保AI系统的安全性和可靠性成为亟需解决的重要问题&#xff0c;对…

【游戏制作】使用Python创建一个完整的2048游戏项目

目录 项目运行展示 项目概述 项目目标 项目结构 安装依赖 代码实现 1. 导入库 2. 创建 Game2048 类 3. 设置UI界面 4. 加载二维码图片 5. 创建菜单 6. 游戏逻辑和功能 7. 运行应用 总结 创建一个完整的2048游戏项目 项目运行展示 项目概述 在这个项目中&#xff…

常用sql:删除表中重复的数据

在平常的开发工作中&#xff0c;我们可能经常需要对表进行操作。比如某些数据重复了&#xff0c;那么可能需要删除掉重复的数据&#xff0c;保证数据根据业务字段属性相同的数据只有一条&#xff0c;那么应该如何做呢&#xff1f; 1&#xff1a;新建表&#xff1a;用户详情表 …

for循环计算1~100之间3的倍数的数字之和

你要计算1~100之间的数字先得打印出来1~100之间的数字然后在判断是不是3的倍数然后在打印出数字&#xff0c;代码如下 #include<stdio.h> int main() {int i 0;for (i 1; i < 100; i){if (i % 3 0){printf("%d ", i);}}return 0; }

Intellij IDEA多模块分组 实现move to group

新版本idea&#xff0c;没有了move to group的功能&#xff0c;导致模块很多的时候不能分组。2018版本有。 这个分组是虚拟的&#xff0c;不会在磁盘中实际存在。 要实现这个功能&#xff0c;只需要改modules.xml即可。 步骤 1. 找到配置文件 .idea目录下的moudules.xml 2.…

GeoServer GIS 服务器(geoServer离线地图服务器搭建)

文章目录 引言I GeoServer 安装部署版本选择基于war包进行部署II geoServer配置2.1 geoServer新建工作区2.2 geoServer 新建数据源2.3 geoServer图层发布和图层编辑2.4 指定存储层的坐标系2.5 geoServer图层样式2.6 图层组的创建GIS基础知识GeoServerWMTSEPSGEPSG3857相关的数据…

Cadence学习笔记(十三)--设置边框与异形铺铜

直接导入板框用小眼睛可以看到所有的都是线的属性&#xff1a; 那么如何让它变成板框呢&#xff1f;这里先跳转到下图中的层&#xff1a; 将Z--CPOY这一层变成shape区&#xff1a; 之后用Z--copy: Z--COPY设置如下参数&#xff0c;铺铜内缩20mil: 之后选择长方形铺铜就可以了&…

快醒醒,别睡了!...讲《数据分析pandas库》了—/—<5>

一、 1、修改替换变量值 本质上是如何直接指定单元格的问题&#xff0c;只要能准确定位单元地址&#xff0c;就能够做到准确替换。 1.1 对应数值的替换 具体用法如下&#xff1a; replace方法&#xff1a; df.replace(to_replace None :将被替换的原数值&#xff0c;所有…

matlab6.5免安装版,解压即可用【亲测win10可用】

这个版本是咱第一次学matlab的时候用的处女版&#xff0c;如今看着这个界面依然恍如昨日。为甚要分享这种老掉牙古董matlab版本呢&#xff1f;原因在于一款老古董工具箱 —— geatbx。 这款工具箱采用了古老pcode的加密系统加密&#xff0c;而matlab的pcode加密经过几次迭代&a…

数据库开发:MySQL基础(二)

MySQL基础&#xff08;二&#xff09; 一、表的关联关系 在关系型数据库中&#xff0c;表之间可以通过关联关系进行连接和查询。关联关系是指两个或多个表之间的关系&#xff0c;通过共享相同的列或键来建立连接。常见的关联关系有三种类型&#xff1a;一对多关系&#xff0c;…

【机器学习】智驭未来:机器学习如何重塑制造业的转型与升级

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习重塑制造业生产流程&#x1f338;预测性维护&#xff1a;减少停机时间&#xff0c;提高设…

JavaScript(17)——事件监听

什么是事件&#xff1f; 事件是在编程时系统内发生的动作或发生的事情&#xff0c;比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立刻调用一个函数做出响应&#xff0c;也称为绑定事件或…

【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件

目录 ​编辑 前言 系统调用 open 参数flags 参数mode write 追加方式 read close 文件描述符 打开多个文件并观察其文件描述符 C语言文件操作 理解一切皆文件 理解open操作 前言 各类语言的文件操作其实是对系统调用的封装 我们经常说&#xff0c;创建一个文件&a…

【 C++ 】 一文搞定——引用、内联、命名空间、缺省、重载

前言&#xff1a;这篇文章将带您了解C基础中的知识点——命名空间、引用、内联、缺省、重载 &#x1f618;我的主页&#xff1a;OMGmyhair-CSDN博客 一、命名空间namespace 1.可以嵌套定义&#xff0c;但是只能定义在全局 namespace ly {int student 1;int age 21;void Pr…

剑和沙盒 6 - 线程辱骂 – 使用线程名称进行攻击

强调&#xff1a; 进程注入是攻击者工具包中的重要技术之一。在下面的文章中 解释了如何滥用线程描述 API 来绕过端点保护产品。提出了一种新的注入技术&#xff1a;Thread Name-Calling&#xff0c;并给出了实施保护的相关建议。 介绍 进程注入是攻击者使用的重要技术之一 。…

Go-知识panic

Go-知识panic 1. 介绍2. 工作机制2.1 panic函数2.2 工作流程2.3 总结 3. 原理3.1 数据结构3.2 gopanic没有deferdefer函数处理嵌套defer 4. 总结 Go-知识error :https://blog.csdn.net/a18792721831/article/details/140430350 Go-知识defer : https://blog.csdn.net/a18792721…

单片机基于TXW8301的Wi-Fi Halow物联网控制

目前市面上基于2.4/5.8G wifi通讯信号干扰很频繁&#xff0c;基于Wi-Fi Halow的sub1g wifi既可以绕过干扰还可以达到公里级别控制&#xff0c;并且实现高清图传非常方便。 什么是Wi-Fi Halow&#xff1f;有何优势&#xff1f; 早在2016年3月&#xff0c;Wi-Fi联盟就针对物联网…

YOLO v8目标检测(二)—v8理论与模型推理

YOLO v8目标检测 数据增强 使用场景&#xff1a;在数据加载器加载数据的过程中会使用到数据增强的相关方法&#xff0c;来构造数据集。模型推理方法进行学习之前首先复习了解图像数据增强的相关方法和步骤。 其中在v8的源代码中 augment.py 的源代码文件。它包含了几个用于数据…