MP-01
运行环境不同:网页运行在浏览器中,小程序运行在微信环境中
API不同:运行环境不同,所有小程序中,无法调用DOM和BOM的API,可以调用微信环境提供的各种API;例如:地理定位,扫码,支付。
开发模式不同:网页:浏览器+代码编辑器;小程序:申请一个小程序的开发账号—安装开发者工具—创建和配置小程序的项目
个人账号不支持微信字符,微信认证及一些高级接口的功能!
查看AppID的网址:https://mp.weixin.qq.com/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sEtF1BZG-1681393028083)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230405125915685.png)]
下载开发工具:微信开发者工具(稳定版 Stable Build)下载地址与更新日志 | 微信开放文档 (qq.com)
创建项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCjDuVVD-1681393028084)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230405131501856.png)]
微信小程序开发者文档:微信开放文档 (qq.com)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ngdCvk3-1681393028084)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407085019813.png)]
pages:存放所有小程序的页面
utils:存放所有工具性质的文件
app.js:小程序的入口文件
app.json:小程序项目的全局配置文件
app.wxss:小程序的全局样式文件
project.config.json:项目的配置文件
sitemap.json:用来配置小程序及其页面是否允许被微信索引
小程序官方建议把所有的小程序页面,都成放在pages目录中,以单独的文件夹存在
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZFwsu65-1681393028085)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407085514127.png)]
.js文件:页面的脚本文件,存放页面的数据,时间处理函数等
.json文件:当前页面的配置文件,配置窗口的外观、表现等
.wxml文件:页面的模板结构文件
.wxss文件:页面的样式表文件
JSON是一种数据格式,在实际的开发中,JSON总是以配置文件的形式出现。小程序项目中也不例外:通过不同的.json配置文件,可以对小程序项目进行不同级别的配置。
当前小程序的全局配置文件,包括小程序的所有页面路径,窗口外观,页面效果,底部tab等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmLGztMB-1681393028085)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407090330859.png)]
pages:记录当前小程序所有页面的路径
window:全局定义小程序所有页面的背景色、文字颜色等
style:控制小程序的样式版本
sitemapLocation:用来指明sitemap.json的位置
项目配置文件,用来记录对小程序开发工具所做的个性化配置,可以修复appid
setting:中保存的是编译相关的配置
projectname:保存的是项目名称
appid:保存的是小程序的账号ID
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LEx0GVlf-1681393028085)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407091001152.png)]
微信小程序开放小程序内搜索,效果类似于PC网页中的SEO。sitemap.json文件用于配置小程序页面是否允许微信索引。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8L2kJCms-1681393028086)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407091326985.png)]
关闭终端的黄色警告:“checkSiteMap”: false,
小程序的每一个页面,可以使用.json文件来对本页面的窗口外观进行配置,页面中的配置向会覆盖app.json的window中的相同配置项。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqtT7j0Z-1681393028086)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407092138789.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsFR5Iid-1681393028086)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407092152859.png)]
以index.json中的配置为准
在app.json -> pages中新增页面的存放路径,小程序开发者工具即可帮助我们自动创建对应的页面文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpxUzyVA-1681393028086)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407092452302.png)]
保存后自动生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I0LkUTAX-1681393028087)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407092511577.png)]
调整app.json -> pages数组中页面路径的前后顺序,既可以修改项目的首页。小程序会把排在第一位的页面,当作项目首页进行渲染
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GC4WldKS-1681393028087)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407092859835.png)]
WXML是小程序框架设计的一套标签语言,用来构建小程序的页面结构,其作用类似于网页开发中的HTML
其与html的区别:标签名称不同,属性节点不同,提供了类似Vue中的模板语法
WXSS是一套样式语言,用于描述WXML组件样式,类似网页开发中的CSS。
与CSS的区别:
新增了rpx尺寸单位,在不同大小屏幕上自动进行大小的换算;
提供了全局样式app.wxss对所有的页面都有效果和局部样式:每个文件夹中的.wxss文件,支队当前页面生效;
WXSS仅支持部分选择器:.class 、#id、 element、 并集选择器、 后代选择器、::after和 ::before等伪类选择器
app.js:是整个小程序项目的入口文件,通过App() 函数来启动整个小程序
页面的js文件:Page函数来创建并运行js文件
普通的js文件:普通的功能模块文件,用来封装公共属性或函数供页面使用
指的是程序运行时必须依赖的环境,安卓和IOS是两个不同的数组环境。安卓版程序是不能再IOS上运行的
小程序的宿主环境:微信本身,所有的能力都是由微信提供的
分为两部分:渲染层和逻辑层之间的通信和逻辑层与第三方服务器之间的通信,都是由微信客户端进行转发
WXML模板和WXSS样式工作在渲染层,JS脚本工作在逻辑层。
把小程序的代码包下载到本地,
解析app.json全局配置文件,
执行app.js小程序入口文件,调用App()创建小程序实例,
渲染小程序首页,
小程序启动完成
加载解析页面的.json配置文件,
加载页面的.wxml模板和.wxss样式,
执行页面的.js文件,调用Page()创建页面实例,
页面渲染完成。
由宿主环境提供的,分为9大类
1.视图容器类组件:
view普通视图区域,类似HTML中div,是一个块级元素,常用来实现页面的布局效果
scoll-view可滚动的试图区域,常用来实现滚动列表的效果
swiper和swiper-item轮播图的容器组件和轮播图的item组件
swiper轮播图的常用属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
indicator-dots | Boolean | false | 是否显示面板指示点 |
indicator-color | color | rgba(0, 0, 0, .3) | 未被选中的指示点颜色 |
indicator-active-color | color | #000000 | 当前选中的指示点颜色 |
autoplay | boolean | false | 是否自动切换 |
interval | number | 5000 | 自动切换时间间隔 |
circular | boolean | false | 是否采用衔接滑动 |
2.常用的举出内容组件
text文本组件,类似于HTML中span标签,是一个行内元素
rich-text富文本组件,支持把HTML字符串渲染为WXML结构
3.其他常用组件
button按钮组件,功能比HTML中的button按钮丰富,通过open-type属性可以调用微信蹄冻的各种功能
image图片组件,默认组件的宽为300px、高为240px; mode属性指定图片的裁剪缩放方式
mode值 | 说明 |
---|---|
scaleToFill | 默认的 缩放模式,不包吃纵横比缩放图片,是图片的宽高完全拉伸至填满image元素 |
aspectFit | 缩放模式,保持纵横比缩放图片,是图片的长边能完全显示出来, |
aspectFill | 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。长边会被截掉 |
widthFix | 缩放模式,宽度不变高度自动变化,保持原图宽高比不变 |
heightFix | 缩放模式,高度不变,宽度自动变化,保持原图片宽高比不变 |
navigator(后面会讲)页面导航组件类似于HTML中的a链接
小程序中的API是由宿主环境提供的,通过这些丰富的小程序API,开发者可以方便的调用微信提供的能力,获取用户信息,本地储存,支付功能等!
分为三大类:
事件监听API:以on开头,用来监听某些事件的触发
同步API:以Sync结尾的API都是同步API,同步API的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
异步API:类似jQuery中的$.ajax(options)函数,需要通过success、fail、complete接收调用的结果
针对不同岗位、不同角色的员工的权限进行边界的划分,高效协同的工作
项目人员的组成:项目管理者,产品组,设计组,开发组,测试组
提出要求(产品组)—设计(设计组)—开发(开发组)—体验(产品组,设计组)—测试(测试组)—发布(管理者)
小程序成员管理体现在管理员对小程序项目成员及体验成员的管理:
项目成员:参加小程序的开发、运营成员、登陆小程序管理后台、管理员可以添加、删除项目成员并设置项目成员的角色
体验成员:参加小程序内测体验的成员,可以使用体验版小程序,但不属于项目成员,管理员及项目成员均可以添加、删除体验成员
开发者权限:可以使用小程序开发者工具及对小程序的功能进行代码开发
体验者权限:可以使用体验版小程序
登陆权限:可登录小程序管理后台,无须管理员确认
开发权限:设置小程序服务器域名、消息推送及扫描普通链接二维码打开小程序
腾讯云管理:云开发相关设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-izdCzLsj-1681393028087)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407203921218.png)]
开发版本—开发者编写代码的同时,对项目代码进行自测
体验版本—可以选择某个开发版本作为体验,并选取一份体验版
审核中版本—只能有一份代码处于审核中,通过可以发布到线上
线上版本—线上所有用户使用的版本,该版本在新版本代码发布后被覆盖更新
一般要经过上传代码—提交审核—发布
上传代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWYD6TQ5-1681393028088)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407204801057.png)]
版本管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N3Azqkbo-1681393028088)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407204819505.png)]
设置小程序的基本信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wAEvtX7r-1681393028088)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407205006588.png)]
查看运营数据
1.在小程序后台查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxlZNyHd-1681393028089)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407205101605.png)]
2.使用小程序数据助手
微信公众号搜索-小程序数据助手!
MP-02
在页面对应的.js文件中,把数据定义到data对象中即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJrltuKV-1681393028089)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230407211554804.png)]
想使用的时候使用 {{}} (Mustache语法)将变量包起来即可
Mustache语法主要应用场景:绑定内容、绑定属性、运算(三元运算、算数运算)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0F8KHYy-1681393028089)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408132732190.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MSecH7r9-1681393028089)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408132720645.png)]
事件是渲染成到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理
类型 | 绑定方式 | 事件描述 |
---|---|---|
tap | bindtap 或 bind:tap | 手指触摸后马上离开,类似于HTML中的click事件 |
input | bindinput 或 bind:input | 文本框的输入事件 |
change | bindchange 或 bind:change | 状态改变时触发 |
属性 | 类型 | 说明 |
---|---|---|
type | String | 事件类型 |
timeStamp | Integer | 页面打开到触发事件所经历的毫秒数 |
target | Object | 触发事件的组件的一些属性值集合 |
currentTarget | Object | 当前组件的一些属性值集合 |
detail | Object | 额外的信息 |
touches | Array | 触摸事件,当前停留在屏幕中的触摸点信息的数组 |
changedTouches | Array | 触摸事件,当前变化的触摸点信息的数组 |
target于currentTarget的区别:前者是触发该事件的源头组件,而currentTarget是当前事件绑定的组件。
例子:点击内部按钮时,点击事件以冒泡的方式向外扩散,也会触发外层的view的tap事件处理函数,
e.target指向的是触发事件的源头组件,指向内部按钮
e.currentTarget指向的是当前正在触发事件的那个组件,指向外部view组件
在小程序中不存在HTML中的onclick鼠标点击事件。而是通过tap事件来响应用户的触摸行为的。
通过bindtap,可以为组件绑定tap触摸事件,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPRbXPjC-1681393028090)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408140252452.png)]
在页面的.js文件中对应的事件处理函数(与data平级),事件参数通过形成event(一般简写为e)来接收
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIa7yOQu-1681393028090)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408140302846.png)]
通过按钮点击触发countChange事件
通过调用this.setData(dataObject)方法,可以给页面data中的数据重新赋值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNnBOCZB-1681393028090)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408141042637.png)]
不可以直接在括号中写,这样的写法会被当作事件的名字。data-*="{{#}}"用这个进行传参, * 号代表的是参数的名字, # 号代表的是参数的值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYbPTyKh-1681393028090)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408141630305.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2V9liivj-1681393028091)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408141647431.png)]
在小程序中,通过input事件来响应文本框的输入事件,获得文本框的数据
通过bindinput,可以为文本框绑定输入事件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckYLeJdG-1681393028091)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408143048388.png)]
在页面的.js文件中定义事件处理函数,e.detail.value文本框中的最新的值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dR6c17vW-1681393028091)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408143016488.png)]
实现步骤:
定义数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dc2056hr-1681393028092)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408150635374.png)]
渲染结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OI9641bB-1681393028092)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408150616114.png)]
美化样式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zWV5EecN-1681393028092)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408150546007.png)]
绑定input事件处理函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-El1aTc7g-1681393028093)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408150557919.png)]
wx:if
wx:elif
wx:else 不需要判断条件
在小程序中,使用wx:if="{{condition}}"来判断是否需要渲染该代码块
如果想要一次性控制多个组件的展示与隐藏,可以使用一个block标签将多个组件包装起来,并在block标签上使用wx:if控制属性;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0fmbsRl-1681393028093)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408151759696.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q52Bu7TY-1681393028093)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408151814681.png)]
在小程序中,直接使用hidden="{{}}"也可以控制小程序的隐藏与显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZDD0RXE-1681393028093)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408152050911.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TjybNJT8-1681393028094)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408152106247.png)]
运行方式不同
wx:if以动态创建和移除元素的方式,控制元素的展示与隐藏,条件为true显示元素,为false隐藏元素
hidden以切换的方式(diaplay: none/block),控制元素的显示false与隐藏true
使用建议:频繁切换时,使用hidden。控制条件复杂的时候建议使用wx:if搭配wx:elif、wx:else进行展示与隐藏的切换
可以通过指定的数组,循环渲染重复的组件结构,当前索引用index表示,项用item表示
了解:用属性wx:for-index=“指定名字”;用属性wx:for-item=“指定名字”。作为名字的替换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bSmAWkQ1-1681393028094)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408153149179.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItOBFEoG-1681393028094)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408153203817.png)]
指定唯一的key值能够提高渲染效率!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hfr99Mx4-1681393028096)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408154429202.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JfzHwD40-1681393028096)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408154514295.png)]
WXSS是一套样式语言,用于美化WXML的组件样式,类似网页中的CSS
与css的关系:WXSS具有CSS大部分特性,同时WXSS还对CSS进行了扩充以及修改,以适应微信小程序的开发
扩展的特性有:rpx尺寸单位 @import样式导入
rpx是微信小程序独有的,用来解决屏适配的尺寸单位。实现原理:鉴于不同的设备屏幕大小,为了实现屏幕的自动适配,rpx把所有的设备屏幕等分为750份。所以在小屏幕的设备上1rpx代表的宽度较小,在大屏幕的设备上1rpx代表的宽度较大。
小程序在不同设备三运行的时候会自动把rpx的样式单位转换为对应的县属单位来渲染从而实现屏幕适配
在iPhone6 1rpx = 0.5px
1rpx = 屏幕宽度像素值/750px( 建议使用iPhone6作为标准视觉)
在@import后面写要外链的相对路径,用;表示语句的结束。这个引入的样式会作用在当前组件内!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4DDdliA-1681393028096)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230408180104585.png)]
全局样式:定义在app.wxss中的样式为全局样式,作用于每个页面。
局部样式:在页面的.wxss文件中定义的样式为局部样式,最作用当前页面。
注意:当局部央视与全局样式冲突时,根据就近原则,局部样式会覆盖全局样式,当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局样式
小程序根目录下的app.json文件是小程序的全局配置文件。常用的配置如下:
pages:记录当前小程序所有的页面的存放路径
window:全局设置小程序窗口的外观,
tabBar:设置小程序底部的tabBar效果
style:是否启用新版的组件样式,新版-v2
导航栏区域和背景区域可以通过window来进行相关的配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PKNdR7Pl-1681393028097)(D:\桌面\前端\笔记的图片\3da54e3d9575bcafdb33e9d4cc5c5db3.jpg)]
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
navigationBarTitleText | String | 字符串 | 导航栏标题文字内容 |
navigationBarBackgroundColor | HexColor | #000000 | 导航栏背景颜色,仅支持16进制的 |
navigationBarTextStyle | HexColor | white | 导航栏标题颜色 |
backgroundColor | HexColor | #ffffff | 下拉刷新 窗口的背景颜色,仅支持16进制的 |
backgroundTextStyle | String | dark | 下拉loading的样式,仅支持dark/light |
enablePullDownRefresh | Boolean | false | 是否全局开启下拉刷新,会作用每个小程序页面 |
onReachBottomDistance | Number | 50 | 页面上拉触底事件触发时距离页面底部距离,单位px(不建议修改) |
tabBar是移动端应用常见的页面效果,用于实现多页面的快速切换;分为两种:底部tabBar和顶部tabBar
注意:只能配置至少两个最多五个tab页签;当渲染顶部tabBar时,不显示icon,只显示文本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmO21nxn-1681393028097)(D:\桌面\前端\笔记的图片\IMG_1193.PNG.JPG)]
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
position | String | bottom | tabBar的位置,仅支持bottom/top |
borderStyle | String | black | tabBar上边框的颜色,仅支持black/white |
color | HexColor | tab上文字的默认(未选中)颜色 | |
selectedColor | HexColor | tab上文字选中时的颜色 | |
backgroundColor | HexColor | tabBar的背景色 | |
list(必填项,其他都是选填项) | Array | tab页签列表,最少两个、最多五个 |
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
pagePath | String | 是 | 页面路径,页面必须在pages中预先定义,直接使用page就可以 |
text | String | 是 | tab上显示的文字 |
iconPath | String | 否 | 未选中的图片路径;当postion为top时,不显示icon |
selectedIconPath | String | 否 | 选中时的图片路径,当postion为top时,不显示icon |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nTQwk5jq-1681393028097)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409095344370.png)]
小程序中,每个页面都有自己的.json配置文件,用来针对当前页面的窗口外观、页面效果等进行配置。
小程序中,app.json中的window节点。可以全局配置小程序中每个页面的窗口表现形式。
某些小程序页面想要自己独特的窗口表现,此时页面级别的.json配置文件,可以实现这种要求。
注意:页面配置与全局配置冲突时,会以页面配置为准
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
navigationBarBackgroundColor | HexColor | #000000 | 当前页面导航栏背景颜色,如#000000 |
navigationbarTextStyle | String | white | 当前页面导航栏标题颜色,仅支持dark/light |
navigationBarTitleText | String | 当前页面导航栏标题文字内容 | |
backgroundColor | dark | #ffffff | 当前页面窗口的背景色 |
backgroundTextStyle | String | dark | 当前页面下拉loading的样式,仅支持dark/light |
enablePullDownRefresh | Boolean | false | 是否为当前页面开启下拉刷新效果 |
onReachBottomDistance | Number | 50 | 页面上拉触底事件触发时距页面底部的距离 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H3SYGdzs-1681393028098)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409101922186.png)]
安全考虑,小程序官方对数据接口请求做出两个限制:只能在HTTPS类型的接口,必须将接口的域名添加到信任列表中。
配置步骤:登录微信小程序管理后台—开发—开发设置—服务器域名—修改request合法域名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c74A7PiO-1681393028098)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409103442977.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSbIoeI9-1681393028098)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409103419128.png)]
注意事项:域名只支持https协议;域名不能使用IP地址或localhost;域名必须经过ICP备案;服务器域名一个月最多可以申请5次修改
调用微信小程序提供的wx.request()方法,可以发起GET数据请求,域名必须配置进 request合法域名中。请求的真正数据是res.data
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2k0Rsm9-1681393028098)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409110115086.png)]
调用微信小程序提供的wx.request()方法,可以发起POST数据请求,域名必须配置进 request合法域名中。请求的真正数据是res.data。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hUogBVp6-1681393028099)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409110643262.png)]
在onload事件中调用获取数据的函数,this.方法名(),调用函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2C6NK0Bv-1681393028099)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409110911930.png)]
跨域问题只存在于基于浏览器的Web开发中。由小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域问题
Ajax技术也是依赖于浏览器中的XMLHttpRequest这个对象,由于小程序的数组环境是微信客户端,所以小程序不能叫做发送"Ajax请求",而是叫做发送"发起网络数据请求"。
1.请求的接口必须在详情页中定义声明!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXc6MyGh-1681393028099)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409111010201.png)]
2.跳过https合法域名校验,但是只能在开发和测试阶段使用!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvzEirbR-1681393028100)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409111154888.png)]
Local_Life文件夹
mp-03
页面导航指的是页面之间的相互跳转。实现方式有两种:声明式导航和编程式导航
声明式导航:在页面上声明一个navigator导航组件,通过点击navigatior组件实现页面跳转
编程式导航:调用小程序的导航API,实现页面跳转
tabBar页面指的是被配置为tabBar的页面,在使用navigator标签组件跳转到指定的tabBar页面时,需要指定url属性和open-type属性
url-表示要跳转的页面的地址,必须以 / 开头
open-type表示跳转的方式,必须为switchTab;否则不能实现跳转
在使用navigator组件跳转到普通的非tabBar页面时,则需要指定url属性和open-type属性,其中:
url-表示要跳转的页面的地址,必须以 / 开头
open-type表示跳转的方式,必须为navigate;可以省略
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrBNXZ2b-1681393028100)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202136585.png)]
如果后退到上一个页面或多级页面,则指定open-type属性和delta属性,其中:
open-type的值必须是navigateBack,表示要进行后退导航
delta的值必须是数字,表示要后退的层级
注意简化书写可以省略delta属性,因为其默认值就是1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EF6tVcxL-1681393028100)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202113605.png)]
调用wx.switchTab(Object object)方法,可以跳转到tabBar页面。其中Object参数对象的属性列表如下:
属性 | 类型 | 是否必选 | 说明 |
---|---|---|---|
url | string | 是 | 需要跳转到的tabBar页面路径,路径后不能那个带参数 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功/失败都会执行) |
调用wx.navigateTo(Object object)方法,可以跳转到非tabBar页面。其中Object参数对象的属性列表如下:
属性 | 类型 | 是否必选 | 说明 |
---|---|---|---|
url | string | 是 | 需要跳转到的非tabBar页面路径,路径后可以带参数 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功/失败都会执行) |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESbRtz3c-1681393028101)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409201237704.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnUYhGK7-1681393028101)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409201222353.png)]
调用wx.navigateBack(Object object)方法,可以返回上一页或多级页面。其中Object参数对象的属性列表如下:
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
url 必填项 | string | 1 | 需要跳转到的非tabBar页面路径,路径后可以带参数 |
success | function | 接口调用成功的回调函数 | |
fail | function | 接口调用失败的回调函数 | |
complete | function | 接口调用结束的回调函数(调用成功/失败都会执行) |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSB0PSq5-1681393028101)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202059614.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQCOiC3l-1681393028101)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202049319.png)]
navigator组件的url属性用来指定要跳转到的页面的路径。同时,路径的后面还可以携带参数:
参数与路径之间使用?分隔;参数键与参数值用=链接;不同参数用&分隔。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWkqJGhH-1681393028102)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202346906.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0jEdXgvQ-1681393028102)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409202427531.png)]
调用wx.navigateTo(Object onject)方法跳转页面时。也可以携带参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wh4aLJ0H-1681393028102)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409203244880.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfLYRMem-1681393028103)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409203305121.png)]
提交到的页面的js文件!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRskbuAA-1681393028103)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230409203920970.png)]
是移动端的专有名字,指通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据
开启下拉刷新分为全局开启下拉刷新和局部开启下拉刷新:都是在对应的.json文件中添加enablePullDownRefresh设置为true
在实际开发中一般都是为需要的页面单独开启下拉刷新的效果
监听页面的下拉刷新事件:在对应页面的.js文件中,通过onPullDownRefresh()函数即可监听当前页面的下拉刷新事件
停止下拉刷新的效果:wx.stopPullDownRefresh()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55lCMOON-1681393028103)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410101323083.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bxXTq59L-1681393028103)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410101509906.png)]
是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。
监听页面上拉触底事件:在页面的.js文件中,通过onReachBottom()函数就可以监听页面的上拉触底事件
上拉触底的距离:在触发上拉触底事件时,滚动条距离页面底部的距离,可以在全局或页面的.json配置文件中,通过onReachBottomDistance属性来配置上拉触底的距离,默认是50px。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajygLEUl-1681393028104)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410102924347.png)]
上拉触底事件,得进行节流的判断isloading
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c0svUoCt-1681393028104)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410105749914.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwIqS4iU-1681393028104)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410105956651.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yfw5NXlN-1681393028105)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410110523290.png)]
可以传参,提升开发效率
生命周期是指一个对象从创建-运行-销毁的整个阶段,强调的是一个时间段
分为:应用生命周期(小程序的启动-运行-销毁)和页面生命周期(每个页面的加载-渲染-销毁的过程);页面生命周期范围较小,应用程序的生命周期范围较大
生命周期函数:是由小程序框架提供的内置函数,会伴随生命周期,自动按次执行。
作用:运行程序员在特定的时间点,执行某些特定的操作。例如,页面刚加载时,用onload函数加载页面初始化数据。
注意:生命周期强调时间段,生命周期函数强调的是时间点
分类:应用的生命周期函数(小程序从启动到运行到销毁期间依次调用的那些函数)和页面的生命周期函数(每个小程序中每个页面从加载-渲染-销毁期间依次调用的那些函数)
小程序的应用生命周期需要在app.js中进行声明
onLaunch函数:当小程序初始化完成时,会触发(全局只触发一次)
onShow函数:当小程序启动,或从后台进入前台显示,会触发
onHide函数:当小程序从前台进入后台,会触发
PS:前台:处于小程序运行界面上就是前台状态。后台:处于小程序以外的界面上,此时小程序叫处于后台
小程序的页面生命周期函数需要在页面的.js文件中进行声明
onLoad(options):生命周期函数–监听页面加载,获取数据/转存参数,只会调用一次*
onReady() :生命周期函数–监听页面初次渲染完成。只会调用一次,可以修改一些样式*
onShow():生命周期函数–监听页面显示
onHide():生命周期函数–监听页面隐藏
onUnload():生命周期函数–监听页面卸载,只会触发一次
WXS是小程序中独有的一套脚本语言,可以构建出页面的结构
应用场景:wxml中无法调用在页面的.js中定义的函数,但是,wxml中可以调用wxs中定义的函数。因此小程序中wxs的典型应用场景就是过滤器(在渲染数据之前对数据进行包装与处理,最终渲染到页面上)
虽然说wxs的语法类似于JavaScript,但是wxs和JavaScript是两种完全不同的语言:
number数值类型、string字符串类型、boolean布尔类型、object对象类型、function函数类型、array数组类型、date日期类型、regexp类型
不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写、etc
支持:var定义变量、普通function函数等类似ES5的语法
module对象、require()函数、module.exports对象
wxs代码可以编写在wxml文件中wxs标签内(类似script标签中写JavaScript)
wxml文件中每个wxs标签,必须提供module属性,用来指定当前wxs的模板名称,方便在wxml中访问模块中的成员
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5DVcWp6c-1681393028105)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410133356607.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TAJ50opV-1681393028105)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410133718099.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tm2VXekb-1681393028105)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230410134025348.png)]
与JavaScript不同,wxs只是大量借鉴了JS的语法;
不能作为组件的事件回调,wxs典型的应用场景就是”过滤器“,经常配合Mustache语法{{}}进行使用;
隔离性,wxs的运行环境和其他的JavaScript代码是隔离的,体现在wxs不能调用js中定义的函数,wxs不能调用小程序提供的API;
性能好,在IOS设备上,小程序内的WXS会比JavaScript代码快2-20倍,安卓上二者运行效率无差异
Local_Life文件shoplist
mp-04
在项目的根目录中创建一个components文件夹中,创建名为test文件夹;
在新键的est文件夹上,鼠标右键,点击新建Component;
输入组件的名称之后回车,会自动生成组件对应的4各文件,后缀名分别是:.js .json .wxml和.wxss
注意:为了保证目录结构的倾斜,建议把不同的组件,存放在单独的目录中
引用方式分为:局部引用和全局引用
组件只能在当前被引用的页面内使用,少量使用的组件用局部引用
在页面的.json配置文件中引用组件的方式,叫做局部应用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TkbqVyp7-1681393028106)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411145429908.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KpuBnktH-1681393028106)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411145520826.png)]
组件可以在每个小程序页面中使用,常用的组件用全局引用
在app.json全局配置文件中引用组件的方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZ0KXNTF-1681393028106)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411150002093.png)]
从表面来看,组件和页面都是由.js .json .wxml和.wxss组成的。但是组件和页面的.js文件和.json文件有明显不同。
组件的.json文件中需要声明"component": true属性,页面上面有
组件的.js文件中调用的是Component()函数,页面是Page()函数
组件的事件处理函数需要定义到methods节点中声明,页面的事件处理函数定义在与data平级就行
默认情况下,自定义组件的样式只对当前组件生效,不会影响到组件之外的UI结构;
这样可以防止外界影响组件内部的样式,也防止了组件的样式破坏外界的样式
注意:全局的app.wxss中对组件中的样式无效;只有class选择器会有样式隔离的效果,id选择器,属性选择器,标签选择器不受样式隔离的影响,所以尽量使用class选择器
通过修改styleIsolation修改组件的样式隔离选项
styleIsolation的可选值:
可选值 | 默认值 | 描述 |
---|---|---|
islated | 是 | 启用样式隔离,在自定义组件外,使用class指定的样式将不会相互影响 |
apply-shared | 否 | 表示页面wxss样式影响到自定义组件,但自定义组件wxss中指定的样式不会影响到页面 |
shared | 否 | 用的多一点;表示页面wxss样式将影响到自定义组件,自定义组件wxss中指定的样式也会影响页面和其他设置了apply-shared或shared的自定义组件 |
在小程序中,用于组件模板渲染的私有数据,需要定义到data节点下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6DPfKCyT-1681393028107)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411154001033.png)]
在小程序组件中,事件处理函数和自定义方法需要定义到methods节点中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NXKkxZy-1681393028107)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411154746093.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKSqMG5t-1681393028107)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411154730000.png)]
在小程序组件中,properties是组件的对外属性,用来接收外界传递到组件中的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfq20rVz-1681393028107)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411160312995.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAlOKHbb-1681393028108)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411160352889.png)]
在小程序中properties和data数据用法相同,都是可读可写的;
只不过data更倾向于存储组件的私有数据,properties倾向于储存外界传递到组件中的数据
由于data数据和properties属性在本质上没有任何区别,因此properties属性的值也可以用于页面渲染,或使用setData为properties中的属性重新赋值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPASpM4J-1681393028108)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411161602246.png)]
observers数据监听器用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。类似于vue中的watch监听器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OyqCFNmx-1681393028108)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411191035762.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXOKiOhE-1681393028109)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411191015581.png)]
数据监听器支持监听多个或单个属性的变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzY1scpg-1681393028109)(D:\桌面\前端\笔记的图片\b71aa5e6bbccf0b4c715a5c5e15b7dc9.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qaXyIaDq-1681393028109)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411211537809.png)]
指的是那些不用于界面渲染的data字段
应用场景:某些data中的字段既不会展示在页面上,也不会传递给其他组件,仅仅在当前组件内使用。具有这种特征的data字段适合被叫做纯数字字段。
好处:提升页面性能
在Component构造器的options节点中,指定pureDataPattern为一个正则表达式,字段名符合这个正则表达式的字段将成为纯数据字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9eeq3hf-1681393028110)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411212829366.png)]
生命周期函数 | 参数 | 描述 |
---|---|---|
created | 无 | 在组件实例刚刚被创建时执行 |
attached | 无 | 在组件实例进入页面节点树时执行 |
ready | 无 | 在组件在视图层布局完成后执行 |
moved | 无 | 在组件实例被移动到节点树另一个位置执行 |
detached | 无 | 在组件实例被从页面节点树移除时执行 |
error | Object Error | 每当组件方法抛出错误时执行 |
分别是created、attached、detached;
created函数,组件刚被创建好的适合触发,不能调用setData;通常在这个生命周期中,只给组件的this添加一些自定义的属性字段
attached函数,完全初始化完毕、进入节点树后,会被触发;this.data已被初始化完毕,最常用
detached函数,组件离开组件树/被销毁的时候,会被触发;适合做一些清理性质的工作
可以与data节点平级定义生命周期函数,也可以在lifetimes节点(与data平级)中定义生命周期函数;后面的是新方式,当与旧方式冲突时以新方式为准!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wXdiHrl-1681393028110)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411220310016.png)]
监听页面的变化,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期
组件所在页面的生命周期函数:
生命周期函数 | 参数 | 说明 |
---|---|---|
show | 无 | 组件所在的页面被展示时执行 |
hide | 无 | 组件所在的页面被隐藏时执行 |
resize | Object Size | 组件所在的页面尺寸变化时执行 |
组件所在页面的生命周期函数,需要定义在pageLifetimes节点中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVojngK4-1681393028110)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230411220549940.png)]
在自定义组件中的wxml结构中,可以提供一个slot节点(插槽),用于承担组件使用者提供的wxml
外界可以对插槽上的数据进行定义!
在小程序中,默认每个组件中只允许使用一个slot进行占位,这种限制叫做单个插槽
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13XzlXVT-1681393028110)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412085258897.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtPLkhvF-1681393028111)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412085323427.png)]
使用多个插槽时,可以在组件的.js文件中,进行配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-alLU1oii-1681393028111)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412085531492.png)]
多个不同的插槽用name属性进行区分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8cv26t2u-1681393028111)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412085837393.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9tFbK4h9-1681393028111)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412085816440.png)]
用于父组件向子组件的指定属性设置数据,仅能设置JSON兼容的数据;用于实现父向子传值,且只能传递普通类型数据,无法传递方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vnv1nvSS-1681393028112)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412091301813.png)]
用于子组件向父组件传递数据,可以传递任意数据;实现子向父传值。
1.在父组件的js中,定义一个函数,这个函数通过自定义事件的形式,传递给子组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9So7yU7d-1681393028112)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412092711600.png)]
2.在父组件的wxml中,通过自定义事件的形式,将上一步中的定义的函数引用,传递给子组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VEZuY9J-1681393028112)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412092735349.png)]
3.在子组件的js中,通过调用this.triggerEvent(‘自定义事件名称’, {参数对象}),将数据发送到父组件中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m3dMc1yu-1681393028113)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412092835224.png)]
4.在父组件的js中,通过e.detail获取到子组件传递过来的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NpCGV6zR-1681393028113)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412092902504.png)]
父组件还可以this.selectComponent()获取子组件实例对象;这样可以直接访问子组件的任意数据和方法;调用的时候传递一个选择器,例如this.selectComponent(“.my-component”)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hgAktjS7-1681393028113)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412095411498.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpCiLaE4-1681393028114)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412095504742.png)]
behaviors用于实现组件之间的代码共享的特性,类似于Vue.js中的 mixins
每个behaviors可以包含一组属性、数据、生命周期函数和方法。组件引用他们时,它是属性、数据和方法会被合并到组件中。
每个组件可以引用多个behaviors,behaviors也可以引用其他behaviors
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OvYNx49t-1681393028114)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412100954015.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pq2E9zxw-1681393028114)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412101312478.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gf4pzlqn-1681393028114)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412101322078.png)]
可用节点 | 类型 | 是否必填 | 描述 |
---|---|---|---|
properties* | Object Map | 否 | 同组件属性 |
data* | Object | 否 | 同组件数据 |
methods* | Object | 否 | 同自定义组件的方法 |
behaviors* | String Array | 否 | 引入其他的behavior |
created | Function | 否 | 生命周期函数 |
attached | Function | 否 | 生命周期函数 |
ready | Function | 否 | 生命周期函数 |
moved | Function | 否 | 生命周期函数 |
detached | Function | 否 | 生命周期函数 |
组件和它引用的behavior中可以包含同名字段,冲突时参考以下规则(参考文档):
同名的数据字段(data)
同名的属性(properties)或方法(methods)
同名的生命周期函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1q96TZlq-1681393028115)(D:\桌面\前端\笔记的图片\lADPKEX55EzMATHNAuPNBRQ_1300_739.jpg)]
目前小程序已经支持使用npm安装第三方包,提高开发效率;有三个限制:
不支持依赖于node.js内置库的包;不支持依赖于浏览器内置对象的包;不支持依赖于c++插件的包。
因为这三个限制所以能提供给小程序使用的包很少!
是一个前端团队开发出来的一套小程序UI组件库,阻力快速搭建小程序应用,使用MIT开源协议,对商业使用比较友好。
安装步骤:在项目目录下新建一个package.json文件(运行npm init),运行下载vant webapp,构建npm。按照官方文档里面的说明进行操作
可以在app.json的usingComponents节点下引入需要的组件,即可以在wxml中直接使用组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xsbaZx6-1681393028115)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412153109238.png)]
使用CSS变量来实现定制主题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G9XzTdNq-1681393028115)(D:\桌面\前端\笔记的图片\7d5a95dd455767c8729e17eba2299c57.jpg)]
在app.wxss中写入CSS变量,即可对全局生效
变量名字的文档:vant-weapp/var.less at dev · youzan/vant-weapp · GitHub
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXYps0mo-1681393028116)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412155011906.png)]
指通过额外的配置,将回调函数的异步API,升级改造为基于Promise的异步API。从而提高代码的可读性、维护性、避免回调地狱的问题
实现这个功能主要依赖于miniprogram-api-promise这个第三方的npm包:npm i --save miniprogram-api-promise。每次安装完新的包都得重新点击工具-构建npm
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrFiGVJH-1681393028116)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412160259911.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgY9EiVC-1681393028116)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412160625015.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOEVs1Il-1681393028117)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412161621267.png)]
为了解决组件之间数据共享的问题;常用的全局组件方案有:Vuex、Redux、Mobx。在小程序中可以使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享;其中mobx-miniprogram用来创建Store对象,mobx-miniprogram-bindings用来把Store中的共享数据方法,绑定到组件或页面中使用。
安装MobX相关的包:npm i --save mobx-miniprogram mobx-miniprogram-bindings(安装成功后重新构建npm)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRgWThKT-1681393028117)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412204341270.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hZGmcyUG-1681393028117)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412204752496.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLZ7P6MI-1681393028117)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412212518844.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zX6g3wA4-1681393028118)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412210727557.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4E5KnFeF-1681393028118)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412214033305.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0016SOua-1681393028119)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412214422109.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdqHo2sj-1681393028119)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230412214507931.png)]
指把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载
好处:优化小程序首次启动的下载时间,在多团队共同开发时可以更好的解耦协作
分包前,小程序项目中所有的页面和资源都被打包到了一起,导致整个项目体积过大,影响小程序首次启动和下载时间
分包后,小程序由一个主包+多个分包;主包包含项目的启动页面或TabBar页面、以及所有分包都需要用到的一些公共资源;分包包含当前分包有关的页面和私有资源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fIVRJd5-1681393028119)(D:\桌面\前端\笔记的图片\e0c89c6122bb7ff1a89dea99c1902c1f.jpg)]
分包的加载规则:
1.在小程序启动时,默认会下载主包并启动主包内页面,tabBar页面需要放到主包中
2.当用户进入分包内某个页面时,客户端会把对应的分包下载下来,下载完成后进行展示:非tabBar页面可以按照功能不同,划分为不同的分包之后,进行按需下载。
分包的体积限制:目前,小程序分包的大小有以下两种限制:整个小程序所有分包大小不能超过16M,单个主包/分包不能超过2M
通过subPackages节点生命分包的结构,root属性指定分包的根目录名称,pages属性指定所有页面的存放路径,必须指定这两个节点!name属性指定分包的别名,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXyjyTJd-1681393028120)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230413093614730.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEFms8fS-1681393028120)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230413093815366.png)]
小程序按照subpackages的配置进行分包,subpackages之外的目录将被打包到主包中,
主包也可以有自己的pages(就是最外层的pages字段),
tabBar页面必须在主包内,分包之间不能相互嵌套。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaIv8bgw-1681393028120)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230413094159625.png)]
主包无法应用分包内的私有资源
分包之间不能那个相互引用私有资源
分包可以引用主包内的公共资源
独立分包本质上也是分包,它可以独立于主包和其他分包单独运行。
与普通分包的区别:是否依赖于主包才能运行
使用场景:某些一定功能独立性的页面配置到独立分包中,让其不依赖主包即可运行,很大程度上提升分包页面的启动速度
一个小程序可以有多个独立分包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JoR2ZRV-1681393028121)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230413095809471.png)]
独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源:
主包无法引用独立分包内的私有资源,
独立分包之间,不能相互引用私有资源,
独立分包和普通分包之间,不能相互引用私有资源
PS:独立分包不能引用主包内的公共资源
在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v9Bi8XOT-1681393028121)(C:\Users\t-y-x\AppData\Roaming\Typora\typora-user-images\image-20230413101343097.png)]
同一个分包中页面享有的预下载大小限额2M
开发文档:自定义 tabBar | 微信开放文档 (qq.com)
bBar页面、以及所有分包都需要用到的一些公共资源;分包包含当前分包有关的页面和私有资源
[外链图片转存中…(img-6fIVRJd5-1681393028119)]
分包的加载规则:
1.在小程序启动时,默认会下载主包并启动主包内页面,tabBar页面需要放到主包中
2.当用户进入分包内某个页面时,客户端会把对应的分包下载下来,下载完成后进行展示:非tabBar页面可以按照功能不同,划分为不同的分包之后,进行按需下载。
分包的体积限制:目前,小程序分包的大小有以下两种限制:整个小程序所有分包大小不能超过16M,单个主包/分包不能超过2M
通过subPackages节点生命分包的结构,root属性指定分包的根目录名称,pages属性指定所有页面的存放路径,必须指定这两个节点!name属性指定分包的别名,
[外链图片转存中…(img-VXyjyTJd-1681393028120)]
[外链图片转存中…(img-lEFms8fS-1681393028120)]
小程序按照subpackages的配置进行分包,subpackages之外的目录将被打包到主包中,
主包也可以有自己的pages(就是最外层的pages字段),
tabBar页面必须在主包内,分包之间不能相互嵌套。
[外链图片转存中…(img-XaIv8bgw-1681393028120)]
主包无法应用分包内的私有资源
分包之间不能那个相互引用私有资源
分包可以引用主包内的公共资源
独立分包本质上也是分包,它可以独立于主包和其他分包单独运行。
与普通分包的区别:是否依赖于主包才能运行
使用场景:某些一定功能独立性的页面配置到独立分包中,让其不依赖主包即可运行,很大程度上提升分包页面的启动速度
一个小程序可以有多个独立分包
[外链图片转存中…(img-8JoR2ZRV-1681393028121)]
独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源:
主包无法引用独立分包内的私有资源,
独立分包之间,不能相互引用私有资源,
独立分包和普通分包之间,不能相互引用私有资源
PS:独立分包不能引用主包内的公共资源
在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度
[外链图片转存中…(img-v9Bi8XOT-1681393028121)]
同一个分包中页面享有的预下载大小限额2M
开发文档:自定义 tabBar | 微信开放文档 (qq.com)