微信可以理解为一个品牌,小程序就是微信的一个子产品
微信开放平台就是给开发者提供技术支持的网站
小程序开发并不是前端的专利!!也提供了其他语言相关的API
小程序注册:
https://mp.weixin.qq.com/wxopen/waregister?action=step1
每个邮箱只能注册一个小程序账号,公众号账号和小程序账号不通
小程序的相关信息的变动次数和一些敏感信息是有限制的
小程序的名字唯一
微信开发者工具是微信给我提供开发相关产品的编辑器,集成了模拟器、编辑器、调试器、脚手架
小程序开发文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/
预览仅仅只能在自己的手机上看,发布后别人才能看到
开平台的开发菜单中的开发设置面板中可以看到AppID(前提是小程序的基本信息已经填写ok了),不能发布多个小程序,但是可以在开发阶段创建多个本地项目
小程序文件后缀
.js,写JS的
.wxml,写结构
.wxss,写样式的
.json,写配置
全局
页面(优先级高于全局)
同名的文件会被自动加载,捆绑解析
小程序的头部导航和底部tabBar都是通过配置搞出来的,并不是自己通过html写出来的
BUG:tabBar的pagePath选项如果相同,在模拟器里可以显示,但是在手机上预览时显示不出来
小程序内置标签(组件)
swiper:轮播图组件
swiper-item:轮播图子项
image:图片
页面中有一个默认page标签,相当于网页中的body,wxml文件中不存在page标签
a标签用什么代替?navigator
div标签用什么代替?view
span标签用什么代替?text
小程序的屏幕适配
我们一般使用内置的rpx作为计量单位
不管什么尺寸的屏幕,小程序都会将其划分为750份,每一份就是1rpx
swiper有一个默认的高度,150px,固定死的,没有做适配
小程序打包后最多2M
可以在project.config.json项目配置文件中的packOptions.ignore配置打包忽略的文件清单
文件夹:folder
文件:file
后缀:suffix
前缀:prefix
正则:regexp
迷你正则:glob
发布流程
开发
点”上传“按钮
在控制台中将开发版选为体验版
提交审核
wxss中不支持本地图片,仅支持网络和base64图片,但是不建议使用base64,因为会导致代码体积过大(最大2M)
tabBar配置中的icon图片不支持网络图片
字体图标的使用
wxss中的@import不支持网络路径
*.js 文件的 必须调用 Page() 函数,并且必须传递一个对象作为参数
数据定义在 data 对象中,可以直接使用 {{ msg }} 访问 data 对象中的数据
{{ 这里可以写一些简单的运算 }}
在wxml中,无论何时,只要访问data中的数据,就需要加{{ ... }}
列表渲染,wx:for="{{ list }}"
默认的循环项变量是item,循环索引变量是index
可以使用wx:for-item=”v“,指定循环项变量
可以使用wx:for-index="i",指定循环索引变量
可以使用wx:key="id"或者wx:key="*this",绑定唯一值,只要保证兄弟元素之间唯一即可
id为循环项中的属性名
*this就是当前循环项,仅在循环项为字符串或数字时使用
条件渲染
wx:if
wx:elif
wx:else
block标签,类似于vue中的template
在小程序的开发工具中创建的页面会自动添加到app.json的pages配置中,pages配置的第一个页面是默认启动页
事件绑定
bind事件类型="事件回调函数的名称"
bind:事件类型="事件回调函数的名称"
事件回调是与data选项同级,不用定义到methods里面
小程序中点击事件用的是tap,没有300ms延迟
app.json中的style:"v2"配置是主题配置,如果应用了这个配置,低版本需要做兼容处理
如果我们使用了其他的UI组件库,建议把这个style: "v2"配置给去掉
事件回调中的第一个形参就可以接收到事件对象,模板不用动
变更数据的方法:this.setData({ ... }),是补丁更新,并不是整个对象,视图层不是实时更新的
小程序中木有DOM API 和 BOM API
https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/#%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%8E%E6%99%AE%E9%80%9A%E7%BD%91%E9%A1%B5%E5%BC%80%E5%8F%91%E7%9A%84%E5%8C%BA%E5%88%AB
小程序中没有XMLHttpRequest,那么 axios和 $.ajax 都不能用
使用wx.request({ url, method, data, success, fail })发请求
url必须添加到地址白名单中
url必须备案,不能使用IP,必须支持https
在本地开发时,可以使用工具禁用白名单验证
要会灵活使用自定义属性来做标记,data-xxx,标记后,可以通过事件对象e.target.dataset获取
标签属性hidden和vue中的v-show类似
onLoad相当于vue里面的created钩子
小程序中通过bind绑定的事件存在事件冒泡,通过catch绑定的事件不存在
bind绑定的事件,默认是在冒泡触发,如果想要在捕获阶段触发,可以使用capture-bind,但是还是穿透,如果想要阻止捕获,可以使用capture-catch
小程序中添加一个互斥事件的概念,通过mut-bind绑定,在一个事件流中,只会触发一次
重点了解 bind 和 catch 即可
app.js文件中必须调用App函数,并且传入一个对象作为参数
生命周期有两种类型
小程序级别
启动时:onLaunch
在小程序整个生命周期(从打开至关闭)只会执行一次
前台运行:onShow
后台运行:onHide
只能抓运行时出错:onError
程序的错误分为两种
编译时错误
运行时错误
就算进入了这个钩子,小程序还是可以正常运行,不会挂掉
小程序启动时,页面找不到时:onPageNotFound
运行时,页面找不到,不会进入这个钩子
页面级别
onLoad,相当于vue的created
有缓存,小程序被关闭前只会执行一次
onShow
onReady,相当于vue的mounted
有缓存,小程序被关闭前只会执行一次
onHide
如果页面中的数据需要每次进入页面时更新,请求要放在onShow钩子里
小程序没有主动正常关闭的入口
为何这样设计?提高用户体验
右上角的圆圈按钮并不是关闭按钮,仅仅只是让小程序后台运行
微信自己来管理小程序的关闭
长时间后台运行
手机性能不足
小程序的场景值就是用来区分不同进入方式的值(数字)
可以在小程序级别的onLaunch和onShow钩子的第一个参数的scene属性获取场景值
应用场景:老板要你统计从那种方式进入咱们小程序的人最多
在navigator跳转url时,encoded参数(?name=zs&age=18),可以通过页面级别的onLoad钩子的第一个参数获取(对象类型),不用解析转换
小程序也支持模块化,就是Node的CommonJS规范,用require导入,用module.exports导出
小程序中不可以直接使用npm安装的第三方模块,需要使用开发者工具构建一下生成出miniprograme_npm这个文件夹,才可使用
需要有package.json文件和node_modules文件夹,才能构建成功
require的优先级:本地模块高于miniprograme_npm
启示:我们在给知识点下结论时,一定要反复验证再确认,因为如果结论是错的,会一直错下去
微信小程序
最新推荐文章于 2021-05-13 01:09:34 发布