微信小程序入门总结

一、目录结构

目录结构

1.1 主体(app)

app.jsapp.jsonapp.wxss组成,包括小程序的注册、全局配置、页面注册、公共变量和方法,还有样式。

1.1.1 注册小程序

每个小程序都需要在 app.js 中调用 App() 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。整个小程序只有一个 App 实例,是全部页面共享的。

App({
  onLaunch: function () {},
  onShow: function () {},
  onHide: function () {},
  globalData: {
    appName: '',
    tplId: {},
    APPID: '',
    domain: '',
    userInfo: null,
    userWXInfo: null
  }
})

开发者可以通过 getApp() 方法获取到全局唯一的 App 实例,获取App上的数据或调用开发者注册在 App 上的函数。

const appInstance = getApp()
console.log(appInstance.globalData.userInfo)

1.1.2 小程序全局配置

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。

{
  "pages": [
    "pages/index/index",
    "pages/logs/index"
  ],
  "window": {
    "navigationBarTitleText": "Demo"
  },
  "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/logs/index",
      "text": "日志"
    }]
  },
  "networkTimeout": {
    "request": 10000,
    "downloadFile": 10000
  },
  "debug": true,
  "navigateToMiniProgramAppIdList": [
    "wxe5f52902cf4de896"
  ]
}

1.2 页面(Page)

一个小程序页面由四个文件组成,分别是:index.js、index.wxml、index.json、index.wxss。

⚠️为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名。

1.2.1 WXML

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。具有数据绑定列表渲染条件渲染模板引用等能力。

1.2.1.1 数据绑定

WXML 中的动态数据均来自对应 Page 的 data。语法使用大家熟悉的Mustache,比如:

{{ message }}

Page({
  data: {
    message: 'Hello,World'
  }
})

更新数据需要用到Page原型链上的setData函数

this.setData({
  message: 'updating view'
})
1.2.1.2 列表渲染

在组件上可以使用wx:for绑定一个数组,来循环渲染该组件。使用 wx:for-item 可以指定数组当前元素的变量名,使用 wx:for-index 可以指定数组当前下标的变量名。比如:


  {{ index }}:{{ item.message }}


  {{ idx }}:{{ itemName.message }}

Page({
  data: {
    array: [{
      message: 'foo',
    }, {
      message: 'bar'
    }]
  }
})

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 input 中的输入内容,switch 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供:

  1. 字符串:代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。

  2. 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字。

1.2.1.3 条件渲染

在框架中,使用 wx:if="" 来判断是否需要渲染该代码块

1
2
3
1.2.1.4 模板

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。



使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如: