小程序学习笔记

学习B站up主:ilovecoding 的微信小程序视频(推荐!),记的一些笔记和资料的的收录,方便以后相关资料查找。

初识小程序

小程序配置

常见配置文件

project.config.json : 项目配置文件,比如项目名称、appId等

文档地址

sitemap.json :小程序搜索相关配置

文档地址

app.json : 全局配置

全局配置比较多,完整文档,表格中是开发中比较常用到的和相对比较重要的:

属性类型必填描述
pagesstring[]页面路径列表
windowObject全局的默认窗口表现
tabbarObject底部tab栏的表现
pages:页面路径列表
  • 用于指定小程序由哪些页面组成,每一项对应一个页面的路径信息。
  • 小程序中所有的页面都必须在pages中进行注册。
window:全局的默认窗口展示
  • 用户指定窗口如何展示,其中还包括了很多其他的属性
tabbar:底部tab栏的展示
属性类型必填描述
pagePathstring页面路径,必须在 pages 中先定义
textstringtab 上按钮文字
iconPathstring图片路径,不支持网络图片。
selectedIconPathstring图片路径,不支持网络图片。
page.json: 局部配置

每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置。页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项。完整文档

属性类型默认值描述
navigationBarBackgroundColorHexColor#000000导航栏背景颜色
navigationBarTextStylestringwhite导航栏标题颜色,仅支持 black / white
navigationBarTitleTextstring导航栏标题文字内容

小程序的双线程模型

谁是小程序的宿主环境?微信客户端
  • 宿主环境为了执行小程序的各种文件:wxml文件、wxss文件、js文件 提供了小程序的双线程模型。
双线程模型:
  • wxml模块和wxss样式运行于渲染层,渲染层使用WebView线程渲染(一个程序有多个页面,会使用多个WebView的线程)
  • JS脚本(app.js/home.js等)运行于逻辑层,逻辑层使用JsCore运行JS脚本
  • 这两个线程都会经由微信客户端(Native)进行中转交互
    双线程模型

小程序界面渲染流程

界面渲染整体流程
  • 1、在渲染层里,宿主环境会把wxml文件转化成对应的JS对象(虚拟DOM);
  • 2、将JS对象再次转成真实DOM树,交由渲染层线程渲染;
  • 3、数据变化时,逻辑层提供最新数据,产生JS对象对应的节点会发生变化,对比前后两个JS对象,进行 diff 算法对比得到变化的部分;
  • 4、将最新变化的内容应用到真实的DOM树中,更新UI,这同时也是 “ 数据驱动 ” 的原理。
    wxml转换为对应的JS对象
    数据发生变化,前后两个JS对象进行diff算法比较
小程序的启动流程

小程序启动流程

注册小程序 – 参数解析

每个小程序都需要在app.js 中调用App方法注册 小程序实例
  • 在注册时,可以绑定对应的声明周期函数,在生命周期函数中,执行对应的代码
  • 完整文档
属性类型默认值必填描述
onLaunchfunction声明周期回调 – 监听小程序初始化
onShowfunction声明周期回调 – 监听小程序启动或切前台
onHidefunction声明周期回调 – 监听小程序切后台
onErrorfunction错误监听函数
onPageNotFoundfunction页面不存在监听函数
其他any开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问
注册App时做什么呢?
注册小程序时,一般会进行的操作:
  • 1、判断小程序的进入场景
  • 2、监听生命周期函数,在生命周期中执行对应的业务逻辑,比如在某个生命周期函数中获取用户的信息。
  • 3、因为App()实例只有一个,并且是全局共享的(单例对象),所以我们可以将一些共享的数据放在这里。
小程序的打开场景
  • 常见的打开场景:群聊会话中打开、小程序列表中打开、微信扫一扫打开、另一个小程序打开等
  • 完整文档
如何确认场景

在onLaunch和onShow生命周期回调函数中,会有options参数,其中有scene值

获取用户信息

获取微信用户的基本信息方式
  • 1、wx.getUserInfo - 即将废弃,建议不使用;
  • 2、button组件 – 将 open-type 改成 getUserInfo,并且绑定bindgetuserinfo事件去获取
  • 3、使用open-data组件展示用户信息
    获取微信用户的基本信息的方式
保存全局变量

全局变量

注册页面

小程序中的每个页面,都有一个对应的js文件,其中调用Page方法注册页面实例
  • 在注册时,可以绑定初始化数据、生命周期回调、事件处理函数等
  • 完整文档
属性类型描述
onLaunchfunction声明周期回调 – 监听小程序初始化
dataObject页面的初始数据
onLoadfunction生命周期回调—监听页面加载
onShowfunction生命周期回调—监听页面显示
onReadyfunction生命周期回调—监听页面初次渲染完成
onHidefunction生命周期回调—监听页面隐藏
onUnloadfunction生命周期回调—监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottomfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTapfunction当前是 tab 页时,点击 tab 时触发
其他any开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值