前言
记录我在学习小程序期间了解到的一些零散的知识点以及需要注意的问题。
一、知识点
1.小程序版本:
1.预览版本:点击“预览”,在真机上预览;
2.开发版本:上传代码之后,开发者具有开发者权限之后通过“小程序开发助手”看到的版本;
3.体验版本:在管理后台,将开发版本直接切换为体验版本,具有体验权限的人员可以看到体验版本;
4.审核版本:想要将开发版本或者体验版本上线,提交审核之后就是审核版本
5.线上版本:通过审核之后就是线上版本。
2.关于开发者工具上的一些按钮
“测试”按钮:每24小时生成一个测试报告,微信随机分配4到8种机型来测试小程序。
“腾讯云”:第三方平台,帮助我们快速的构建小程序开发环境和线上环境。
3.小程序开发框架
1.wxml:相当于HTML5中的html;
2.wxss:相当于HTML5中的css;
3.js:就是HTML5中的js;
4.wxs:对wxml增强的脚本语言,对请求到的数据进行处理,帮助wxml快速构建出页面内容结构。
4.wxml的四个特性:
1.数据绑定
2.列表渲染
3.条件渲染
wx:if和hidden比较:
wx:if :局部渲染,更高的切换消耗
hidden:始终都会渲染,更高的初始化渲染消耗(如果元素频繁切换,使用hidden比较好)
4.模板引用
import:把<templete/>
标注的以外的代码全部copy过来当前位置
include:而import则是相反,只引用模板
5.小程序启动
1、冷启动:首次打开或者被微信销毁后再次打开
2、热启动:当用户打开过小程序,再次打开小程序
6.小程序什么情况下会被销毁?
两种情况:
(1)当小程序保持状态5分钟之后
(2)短时间收到两次系统告警
7.小程序应用生命周期-四个钩子:
(1)onLaunch:app.js派发onLaunch
(2)onShow:从后台到前台
(3)onHide:从前台到后台
(4)onError:发生脚本错误
8.小程序页面生命周期-四个钩子:
(1)onLoad:页面初次加载时调用
(2)onShow:初次打开页面或者从别的页面返回到当前页面
(3)onReady:页面渲染完成之后调用,在onShow方法之后调用
(4)onHide:当前页面打开新的页面,当前页面触发onHide方法
(5)onUnload:关闭当前页面时,会触发当前页面onUnload方法
9.页面路由
路由方式 | 页面栈表现 |
---|---|
初始化 | 新页面入栈 |
打开新页面 | 新页面入栈 |
页面重定向 | 当前页面出栈,新页面入栈 |
页面返回 | 页面不断出栈,直到目标返回页,新页面入栈 |
Tab切换 | 页面全部出栈,只留下新的tab页面 |
重加载 | 页面全部出栈,只留下新的页面 |
路由方式 | 触发时机 | 路由前页面 | 路由后页面 |
---|---|---|---|
初始化 | 小程序打开的第一个页面 | onLoad,onShow | |
打开新页面 | 调用APIwx.navigateTo 或使用组件<navigator open-type="navigateTo"/> |
onHide | onLoad,onShow |
页面重定向 | 调用APIwx.redirectTo 或使用组件<navigator open-type="redirectTo"/> |
onUnload | onLoad,onShow |
页面返回 | 调用APIwx.navigateBack 或使用组件<navigator open-type="navigateBack"/> |
onUnload | onShow |
Tab切换 | 调用APIwx.switchTab 或使用组件<navigator open-type="switchTab"/> |
||
重加载 | 调用APIwx.reLaunch 或使用组件 <navigator open-type="reLaunch"/> |
onUnload | onLoad,onShow |
10.事件对象属性
type:事件类型
timeStamp:时间戳
target:触发事件的根源组件的信息
currentTarget:事件绑定的当前组件的信息
detail:事件携带的额外信息。比如:点击事件中,x、y表示触摸点距离屏幕上方和左边的距离
changedTouches:表示有变化的触摸点。比如触摸点位置的变化以及触摸点从有到无的变化等。
touches:停留在屏幕上的触摸点的信息
二、注意的问题
1.点击“x”清空input中的值
实现思路:给input的value值设置一个变量,点击”x”时,让这个变量值为空。
1 | <!--wxml--> |
2.自定义checkbox组件和radio组件的样式
如何自定义checkbox的样式?
1 | checkbox .wx-checkbox-input{ |
如何自定义radio的样式?
1 | /* 重写 radio 样式 */ |
3.省市区选择器实现省市区三级联动
1 | <!--wxml--> |
4.如何删除数组中的元素?
需求:点击删除时,删除这个元素
重点:如何点击删除时,获取这个数组元素的索引?
使用 wx:for-index="xxx"
可以指定数组当前下标的变量名,使用data-xxx=""
给元素自定义索引
如果没有定义
wx:for-index="idx"
,可以直接在子元素上定义data-index=""
因为默认数组的当前项的下标变量名默认为index
1 | <!--wxml--> |
5.如何在video组件上添加按钮?
由于video组件的层级太高,要想在它上面加元素,使用z-index
是不管用的。只能使用官方提供的方法cover-view
。
1 | <!--wxml--> |
6.实现动画
1 | <!--wxml--> |
7.小程序长按事件
1 | Page({ |
8.小程序冒泡事件/非冒泡事件
1 | bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。 |
9.拨打电话接口wx.makePhoneCall
1 | <!--wxml--> |
10.实现连续动画
1 | <image class='news-dialog' src="../img/news-dialog.png" animation="{{animationData}}"></image> |
11.滚动消息
1 | <swiper class="swiper_container" vertical="true" autoplay="true" circular="true" interval="2000"> |
12.微信小程序之swiper轮播图中的图片自适应高度的方法
1 | <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-active-color="{{bg}}" style='height:{{Height}}'> |
13.求元素距离页面(page元素)顶部的距离
1 | <image class='guide03' src='../img/guide03.png' style='top: {{topValue}};'></image> |
14.tab切换(既可以点击切换又可以华东切换)
1 | <view class="swiper-tab"> |
15.文件超过2M,如何分包?
某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。
在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分。
在小程序启动时,默认会下载主包并启动主包内页面,当用户用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。
目前小程序分包大小有以下限制:
- 整个小程序所有分包大小不超过 8M
- 单个分包/主包大小不能超过 2M
对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作。
1 | { |
参考链接:https://www.cnblogs.com/zmdComeOn/p/9686114.html
16.自定义微信小程序接口actionSheetTap
1 | <!-- 分享 --> |
17.转发
必须得是button组件,里面含open-type="share"
属性。
1 | <button open-type="share">转发</button> |