微信小程序

微信小程序

微信小程序开发

1.小程序简介

  • 小程序与普通网页的不同

    • 运行环境不同

      • 网页运作在浏览器中

      • 小程序运行在微信中

    • 开发模式不同

      • 网页的开发环境:浏览器+代码编辑器

      • 小程序有一套自己的标准开发模式:

        • 申请小程序开发账号

        • 安装小程序开发者工具

        • 创建和配置小程序项目

    • API不同

      • 由于运行环境的不同,小程序中无法调用DOM和BOM的API,但是,小程序中可以调用微信环境提供的各种API,例如地理定位,扫码,支付

2.第一个小程序

注册小程序开发账号

打开网站https://mp.weixin.qq.com/进行注册

获取小程序的AppID

image-20230416110332910

小程序开发者工具

微信开发者工具是官方推荐使用的小程序开发工具,它提供的主要功能如下:

  • 快速床架小程序项目

  • 代码的查看和编辑

  • 对小程序功能进行调试

  • 小程序的预览和发布

3.小程序代码的构成

项目的基本组成结构

image-20230416122904994

  • pages文件夹用来存放所有小程序的页面

  • utils文件夹用来存放工具性质的模块(例如:格式化时间的自地你一模块)

  • app.js文件是小项目的入口文件

  • app.json文件是小程序全局配置文件

  • app.wxss文件是小程序项目的全局样式文件

  • project.config.json文件是项目的配置文件

  • sitemap.json文件是用来配置小程序极其页面是否允许被微信索引

小程序页面的组成部分

小程序官方建议把所有的小程序的页面存放在pages目录中,以单独的文件夹存在

image-20230416124146816

其中每一个页面由4个基本文件组成:

  • .js文件(页面的脚本文件,存放页面的数据、事件处理函数等)

  • .json文件(当前页面的配置文件,配置窗口的外观、表现等)

  • .wxml文件(页面的模板结构文件)

  • .wxss文件(当前页面的样式表文件)

app.json文件

  • app.json文件是小程序的全局配置文件,包括了小程序的所有页面路径, 窗口外观、界面表现、底部tab等

Demo项目里边的app.json配置内容如下:

image-20230416125436520

对应的每一项的作用:

  • pages:用来记录当前小程序页面的路径

  • window:全局定义小程序所有页面的背景色、文字颜色等

  • style:全局定义小程序组件所有使用的样式的版本

  • sitemapLocation:用来指明sitemap.json的位置

project.config.json文件

  • project.config.json是项目的配置文件,用来记录我们对小程序开发工具所做的个性化配置

image-20230416130218148image-20230416130258263

  • setting中保存了编译相关的配置

  • projectname保存了项目的名称

  • appid保存的是小程序的账号ID

sitemap.json文件

微信现在已开放小程序内的搜索,效果类似于网页的SEO,sitemap.json文件用来配置小程序页面是否允许微信索引

image-20230416130843614

更改action的值为disallow则不允许微信索引,page表示要索引的页面

页面的.json配置文件

小程序中的每一个页面可以使用.json文件来对页面的窗口外观进行配置,页面中的配置项会覆盖app.json中的window中相同的配置项,例如:

image-20230416131647567image-20230416131704068

新建小程序的页面

只需要在app.josn文件里的pages中新建页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件:

image-20230416132141993image-20230416132200007

修改项目首页

  • 只需要调整app.json中pages数组中的页面路径的前后顺序即可修改项目的首页。小程序会把排在第一位的页面当做项目的首页进行渲染

WXML模板

WXML(WeiXin Markup Language)是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页开发中的HTML

WXML和HTML的区别

  • 标签名称不同

    • HTML(div,span,img,a)

    • WXML(view,text,image,navigtor)

  • 属性节点不同

    • <a href="">超链接</a>

    • navigator url="/page/home/home"></navigator>

  • 提供了类似于Vue中的模板语法

    • 数据绑定

    • 列表渲染

    • 条件渲染

WXSS样式

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述WXML的组件样式,类似于网页开发中的CSS

WXSS和CSS的区别

  • 新增了尺寸单位

    • CSS中需要手动进行像素单位换算,例如rem

    • WXSS在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算

  • 提供了全局样式和局部样式

    • 项目个目录下的app.wxss会作用于所有小程序页面

    • 局部页面的.wxss样式仅对当前页面生效

  • WXSS仅支持部分CSS选择器

    • class选择器

    • id选择器

    • element选择器

    • 并集选择器

    • 后代选择器

    • ::after和::before等选择器

JS逻辑交互

小程序中的.js文件的分类

  • app.js

    • 是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序

  • 页面的.js文件

    • 是页面的入口文件,通过调用Page()函数来创建并运行页面

  • 普通的.js文件

    • 是普通的功能模块,用来封装公共的 函数或属性供页面使用

4.小程序的宿主环境

宿主环境(host environment)指的是程序运行所在必须的依赖环境,例如Android和ios系统是两个不同的宿主环境,脱离了宿主环境的软件是没有任何意义的。

手机微信是小程序的宿主环境

image-20230416145719773

小程序借助宿主环境提供的能力可以完成许多普通网页无法完成的功能

小程序宿主环境包含的内容

  • 通信模型

  • 运行机制

  • 组件

  • API

通信的主体

小程序中的主体是渲染层和逻辑层

  • WXML模板和WXSS样式工作在渲染层

  • js脚本工作在逻辑层

小程序的通信模型
  • 渲染层和逻辑层之间的通信由微型客户端进行转发

  • 逻辑层和第三发服务器之间的通信由微信客户端进行转发

image-20230416150529188

小程序的运行机制

小程序启动过程

  • 把小程序的代码包下载到本地

  • 解析app.json全局配置文件

  • 执行app.js小程序的入口文件,调用App()创建小程序实例

  • 渲染小程序首页

  • 小程序启动完成

小程序的页面渲染过程

  • 加载解析页面的.json文件

  • 加载页面的.wxml模板和.wxss样式

  • 执行页面的.js文件,调用Page()创建页面实例

  • 页面渲染完成

小程序组件分类

小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出页面结构,官方把小程序的组件分为9大类:

  • 视图容器

  • 基础内容

  • 表单组件

  • 导航组件

  • 媒体组件

  • map地图组件

  • canvas画布组件

  • 开发能力

  • 无障碍访问

常用的视图容器组件
  • view

    • 普通的视图区域

    • 类似于HTML中的div,是一个块级元素

    • 常用来实现页面的布局效果

  • scroll-view

    • 可滚动的视图区域

    • 常用来实现列表滚动效果

  • swiper和swiper-item

    • 轮播图容器组件和轮播图item组件

view组件的基本使用

效果——用法与css大多数是一致的,主要是每一个标签代表的内容不一样,就把view当做div来使用

1image-20230416152011503

scroll-view组件的基本使用

为了使用其滚动效果必须要设置宽高

swiper组件和swiper-item组件的基本使用

这两个组件的配合使用可以实现轮播图的效果

swiper常用的属性

属性类型默认值说明
indicator-dotsbooleanfalse是否显示面板指示点
indicator-colorcolorrgba(0,0,0,3)指示点颜色
indicator-active-colocolor#000000当前选中的指示点颜色
autoplaybooleanfalse是否自动切换
intervalnumber5000自动切换时间间隔
circularbooleanfalse是否采用衔接滑动

效果:

image-20230416173126307

常用的基础内容组件
  • text

    • 文本组件

    • 类似于HTML中的span标签,是一个行内元素

  • rich-text

    • 富文本组件

    • 支持HTML字符串渲染成WXML结构

text组件的基本使用
  • 通过text组件的selectable属性,实现长按文本选中文本内容的效果

需要注意的是在小程序里面只有text组件支持长按文本选中操作

rich-text组件的基本使用
  • 通过rich-text组件的nodes属性,可以把HTML字符串渲染成对应的UI结构:

image-20230416175313620

其他常用的组件
  • button

    • 按钮组件

    • 功能比HTML中的button按钮丰富

    • 通过open-type属性可以调用微信提供的各种功能(转发、获取用户授权等)

  • image

    • 图片组件

    • image组件的默认宽度为300px,高度为240px

  • navigator

    • 页面导航组件

    • 类似于HTML中的a链接

button组件的基本使用
属性说明
type按钮的类型,有三个值:default(默认)、warn(警告按钮)、primary(主色调按钮)
size按钮的小尺寸,值为mini,使用该属性后按钮会成行排列
plain镂空按钮,使用该属性后按钮会成行排列

image-20230416180654440

image-20230416180323935

image组件的基本使用

image是有默认尺寸的,就算不给它图片地址,它也会占用空间

image组件的mode属性

  • image组件的mode属性用来指定图片的裁剪和缩放模式,常用mode属性值如下

mode值说明
scaleToFill默认值,缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素
aspectFit缩放模式,保持纵横比缩放图片,是使图片的边长能完全显示出来,也就是说,可以完整的展示图片
aspectFill缩放模式,保持纵横比,只保证图片的短边能完全展示,也就是说图片只在水平或者垂直方向是完整的,另一个方向会被裁剪
widthFix缩放模式,高度自动变化,保持原图的宽高比不变
heightFix缩放模式,高度不变,宽度自动变化,保持图片的宽高比

小程序API的分类

小程序官方把API分为3类:

  • 事件监听API

    • 特点:以on开头,用来监听某些事件的触发

    • 举例:wx.onWindowResize(function callback)监听窗口的尺寸变化事件

  • 同步API

    • 特点:以Sync结尾的API 都是同步API,同步API的执行结果可以通过函数返回值直接获取,如果执行出错会抛出异常

    • 举例:wx.setStorageSync(‘key’,’value)向本地存储中写入内容

  • 一步API

    • 特点:类似jQuery中的$.ajax(options)函数,需要通过success、fail、complete接受调用的结果

    • 举例:wx.request()发起网络数据的请求,通过success回调函数接受数据

5.协同工作和发布

权限管理需求

小程序的开发流程:

55964bf434f2c2b999736e01fc87e15

 

 

成员管理的两个方面

c838bddb74ebb8cf77ef25d694bd55e

 

b6bfcd553a1f8d7ecb85ac66bf81785

 

863a97dc305b2a0dc71e1004902202c

小程序的上线发布

一个小程序的发布上线一般要经过上传代码->提交审核->发布这三个步骤

模板与配置

  • 能使用WXML模板语法来渲染页面结构

  • 能够使用WXSS样式美化页面结构

  • 能够使用app.json对小程序进行全局配置

  • 能够使用page.json对小程序页面进行个性化配置

  • 能够知道发起网络数据请求


WXML模板语法

数据绑定

数据绑定的基本原则

  • 在data中定义数据

  • 在WXML中使用数据

在data中定义页面的数据

在页面对应的.js文件中,把数据定义在data对象中即可:

Mustache语法格式

把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来,语法格式:

Mustache语法的应用场景

  • 绑定内容

    • 前面已经演示过了

  • 绑定属性

     

  • 运算(三元运算、算数运算)

事件绑定

时间是渲染层到逻辑层的通讯方式,通过事件可以将用户在渲染层的行为反馈到逻辑业务的处理

小程序中常用的事件

类型绑定方式描述
tapbindtap或bind:tap手指触摸后马上离开,类似于HTML中的click事件
inputbindinput或bind:input文本框的输入事件
changebindchange或bind:change状态改变时触发

事件对象的属性列表

当事件回调触发的时候,会收到一个实践对象event,它的属性:

属性类型说明
typeString事件类型
timeStampinteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触发事件,当前停留在屏幕中的触摸点信息的按钮
changeTouchesArray触摸事件,当前变化的触摸点信息的按钮
target和currentTarget的区别

target是触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件

ac90a4df908ef5a37a0672830e7fc30

bindtap的语法格式

在小程序中是通过tap来实现点击事件(即触摸事件),类似于HTML里的click事件,其语法格式如下:

  • 通过bindtap,可以为组件绑定tap事件

  • 在页面的js文件中定义对应的事件处理函数,事件参数通过形参event(一般简写为e)来接收“

在事件处理函数中为data中的数据赋值

通过调用this.setData(dataObject)方法可以给页面data中的数据重新赋值

事件传参

小程序中的事传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数,例如小面的代码将不能正常工作:

因为小程序会把bindtap的属性值统一当做事件名称来处理,相当于要调用一个名称为Add(123)的事件处理函数。


可以为组件提供data-参数名自定义属性传参,实例:

  • n被解析成参数的名字

  • 数值2会被解析为参数的值


在事件处理函数中,通过event.target.dataset.参数名即可得到具体的参数的值

image-20230417111135879

bindinput的语法格式

在小程序中,通过input事件来响应文本框的输入事件,语法格式如下:

通过e.detail.value来获取输入的值

image-20230417112542851

WX:if条件渲染

在小程序中,使用wx:if=“{{condition}}”来判断是否需要渲染该代码块

也可以使用wx:elifwx:eles来添加判断

hidden的使用

在小程序中,直接使用hidden=“{{condition}}”也能控制元素的显示与隐藏

wx:if和hidden的对比
  • 运行方式不同

    • wx:if以动态创建和移出元素的方式,控制元素的展示和隐藏

    • hidden以切换元素的样式(display:none/block)控制元素的显示和隐藏

  • 使用建议

    • 频繁切换时使用hidden

    • 控制条件比较复杂就使用wx:if

WX:for列表渲染

通过wx:for可以根据指定的数组,循环渲染重复的组件结构,语法:

默认情况下,当前循环项的索引用index表示,当前循环项用item表示

手动指定索引和当前项的变量名
  • 使用wx:for-index可以指定当前循环项的索引的变量名

  • 使用wx:for-item可以指定当前项的变量名

WX:key的使用

类似于Vue列表渲染中的:key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的key值,从而提高渲染的效率,示例:


WXSS模板样式

wxss具有大部分css的特性,同时,wxss还对css进行了扩充以及修改,以适应微信小程序的开发

与css相比,wxss拓展的特性:

  • rpx尺寸单位

    • rp x是微信小程序中独有的,用来解决屏适配

    • rpx的实现原理:鉴定不同设备屏幕的不同,为了实现自适应适配屏幕,rpx把所有的设备屏幕在宽度上等分为750份(即当前屏幕的总宽度为750rpx)

    • 会导致在较小的屏幕上1rpx代表的宽度较小,在较大的屏幕上1rpx代表的宽度较大

  • @import样式导入

    • 样式导入

样式导入

使用WXSS提供的@import语法,可以导入外联的样式表

@import的语法格式

@import后需要导入的外联样式表的相对路径,用;表示语句结束

该文件是写在WXSS里的

image-20230417143703108

 

全局样式和局部样式

全局样式

定义在app.wxss中的样式为全局样式,作用在每一个页面中

局部样式

全局配置

页面配置

网络数据请求

列名数据类型是否允许为空说明
idint上传文件的唯一标识
fileNameString文件名
fileURLString文件的相对地址
timeString文件的上传时间
numint文件的下载次数
列名数据类型是否允许为空说明
idint用户账号
passwordString用户密码
CombinationLockString用户备用密码锁,忘记密码时可用于找回密码
signatureString用户自定义的个性签名
nicknameString用户自定义的昵称
genderString用户自定义的性别

 

 

 

 

 

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Other My Posts