跳转至

启英小程序文件结构与框架接口说明

1. 启英小程序文件结构与列表

使用微信发开者工具导入启英的小程序sample代码,资源管理器中查看文件目录。

1.1 启英小程序文件结构

components:存放自定义组件文件。

control:存放设备控制界面文件。

images:主包界面中的图片资源文件。

pages:小程序主包界面文件。

utils:工具函数和辅助方法。

app.js:小程序核心逻辑文件,小程序实例的注册和全局功能的定义。

app.json:全局配置文件,可在此添加配置界面。

app.wsss:小程序的主样式表文件,可定义全局样式。

其余文件:.eslintrc.js、.gitignore、project.config.json、project.private.config.json、sitemap.json,涉及小程序协议,工具版本,工具规则等信息,无需过多关注

1.2 启英小程序主要修改的文件列表

  • 小程序全局文件

app.js:小程序的逻辑文件,提供全局函数和数据,方便其他页面调用,减少重复代码,提高开发效率。

app.json:小程序的全局配置文件,确保小程序的所有页面和组件能够正确加载和显示, 包括了小程序的所有页面路径、界面表现、顶部导航栏、底部 tab 等。

app.wxss:小程序的全局样式文件, 定义全局样式,确保所有页面在视觉上保持一致,提升用户体验。

  • 小程序界面文件

启英小程序sample代码中,界面文件主要包含 :首页界面蓝牙搜索添加界面风扇控制界面1风扇控制界面2,四个界面。

小程序每个界面通常包含四个文件:.js(页面逻辑)、.json(页面配置)、.wxml(页面结构)和.wxss(页面样式)。

界面 界面文件路径
首页界面 pages\index\index
蓝牙搜索添加界面 pages\device\device
风扇控制界面1 control\Fan\electricFan\electricFan
风扇控制界面2 control\Fan\electricFan2\electricFan2

2. 微信小程序常用框架接口

小程序框架接口说明(https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html)

2.1 小程序 App框架接口:

App(Object object):注册小程序,接受一个 Object 参数,其指定小程序的生命周期回调等。

App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

Object object参数:

属性 类型 默认值 必填 说明 最低版本
onLaunch function 生命周期回调——监听小程序初始化。
onShow function 生命周期回调——监听小程序启动或切前台。
onHide function 生命周期回调——监听小程序切后台。
onError function 错误监听函数。
onPageNotFound function 页面不存在监听函数。 1.9.90
onUnhandledRejection function 未处理的 Promise 拒绝事件监听函数。 2.10.0
onThemeChange function 监听系统主题变化 2.11.0
其他 any 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

示例代码

App({
  globalData: {
    // Global data
  },
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide (options) {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
})

2.2 页面 Page框架接口:

Page(Object object): 注册小程序中的一个页面, 接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

Object object参数:

属性 类型 默认值 必填 说明
data Object 页面的初始数据
options Object 页面的组件选项,同 Component构造器中的options` ,需要基础库版本 2.10.1
behaviors String Array 类似于mixins和traits的组件间代码复用机制,参见 behaviors,需要基础库版本 2.9.2
onLoad function 生命周期回调—监听页面加载
onShow function 生命周期回调—监听页面显示
onReady function 生命周期回调—监听页面初次渲染完成
onHide function 生命周期回调—监听页面隐藏
onUnload function 生命周期回调—监听页面卸载
onRouteDone function 生命周期回调—监听路由动画完成
onPullDownRefresh function 监听用户下拉动作
onReachBottom function 页面上拉触底事件的处理函数
onShareAppMessage function 用户点击右上角转发
onShareTimeline function 用户点击右上角转发到朋友圈
onAddToFavorites function 用户点击右上角收藏
onPageScroll function 页面滚动触发事件的处理函数
onResize function 页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTap) function 当前是 tab 页时,点击 tab 时触发
onSaveExitState function 页面销毁前保留状态回调
其他 any 开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问。这部分属性会在页面实例创建时进行一次深拷贝

示例代码

//index.js
Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  onShow: function() {
    // Do something when page show.
  },
  onReady: function() {
    // Do something when page ready.
  },
  onHide: function() {
    // Do something when page hide.
  },
  onUnload: function() {
    // Do something when page close.
  },
  onPullDownRefresh: function() {
    // Do something when pull down.
  },
  onReachBottom: function() {
    // Do something when page reach bottom.
  },
  onShareAppMessage: function () {
    // return custom share data when user share.
  },
  onPageScroll: function() {
    // Do something when page scroll
  },
  onResize: function() {
    // Do something when page resize
  },
  onTabItemTap(item) {
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },
  // Event handler.
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  },
  customData: {
    hi: 'MINA'
  }
})

2.3 基础功能

2.3.1 console

向调试面板中打印日志。console 是一个全局对象,可以直接访问。在微信客户端中,向 vConsole 中输出日志。

方法 功能
console.debug() 向调试面板中打印 debug 日志
console.log() 向调试面板中打印 log 日志
console.info() 向调试面板中打印 info 日志
console.warm() 向调试面板中打印 warn 日志
console.error() 向调试面板中打印 error 日志
console.group(string lable) 在调试面板中创建一个新的分组。随后输出的内容都会被添加一个缩进,表示该内容属于当前分组。调用 console.groupEnd之后分组结束。
console.groupEnd() 结束由 console.group 创建的分组

示例代码

2.3.2 定时器

微信小程序中的定时器主要有两种: 一次性定时器setTimeout和周期性定时器setInterval,其接口列表如下。

定时器接口 功能
number setTimeout(function callback, number delay, any rest) 设定一个定时器。在定时到期以后执行注册的回调函数
clearTimeout(number timeoutID) 取消由 setTimeout 设置的定时器。
number setInterval(function callback, number delay, any rest) 设定一个定时器。按照指定的周期(以毫秒计)来执行注册的回调函数
clearInterval(number intervalID) 取消由 setInterval 设置的定时器。

示例代码

onLoad(options) {
    let now_time = new Date()   //获取当前时间
    console.log('开始定时器时间:',now_time);

    let Timeout = setTimeout(() => {    //定时五秒后执行
      now_time = new Date()
      console.log('Timeout 时间:',now_time);
    }, 5000);

    let Interval = setInterval(() => {  //周期每秒执行
      now_time = new Date()
      console.log('Interval 时间:',now_time);
    }, 1000);

    setTimeout(() => {  //十秒后关闭定时器
      now_time = new Date()
      clearTimeout(Timeout)
      clearInterval(Interval)
      console.log('结束定时器打印,当前时间:',now_time)
    }, 10000);
  },

小程序运行结果如下。