小程序框架
目录结构
|- card 	index.js    	index.wxml  	index.json  	index.wxss  |- utils  app.js  app.json  app.wxss  sitemap.json  project.config.json  project.private.config.json 
   | 
 
逻辑层
app.js
App({   onLaunch (options) {},   onShow (options) {},   onHide () {},   onError (msg) {},   globalData: 'I am global data' })
 
  const appInstance = getApp() console.log(appInstance.globalData) 
  | 
 
page.js
- behavior.js
module.exports = Behavior({ 	data: { msg: 'behavior类似mixin' }, 	methods: { custom() {} } })
  | 
 
- index.js
const mineBehavior = require('/path/to/behavior.js')
 
  Page({   behaviors: [mineBehavior],   data: {     text: "This is page data."   },   onLoad: function(options) {},    onShow: function() {},    onReady: function() {},    onHide: function() {},    onUnload: function() {},    onPullDownRefresh: function() {},    onReachBottom: function() {},    onShareAppMessage: function () {},    onPageScroll: function() {},    onResize: function() {},    onTabItemTap(item) {      console.log(item.index)     console.log(item.pagePath)     console.log(item.text)   },   viewTap: function() {      this.setData({       text: 'Set some data for updating view.'     }, function() {} )   },      customData: { hi: 'MINA' } })
  Component({   behaviors: ['wx://component-export'],      export() {     return { myField: 'myValue' }   },   options: {     multipleSlots: true    },   data: { total: 0 },   properties: {     myValue: String   },      pageLifetimes: {     show: function () { },     hide: function () { },     resize: function () { },   },      lifetimes: {     attached: function () { },     moved: function () { },     detached: function () { },   },   observers: {     'a,b': function(a,b) {       this.setData({ total: a + b })     }   },   methods: {     update: function() {              this.setData({         myValue: 'leaf'       })     }   } })
  | 
 
路由
注意事项
navigateTo, redirectTo 只能打开非 tabBar 页面。 
switchTab 只能打开 tabBar 页面。 
reLaunch 可以打开任意页面。 
- 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
 
- 调用页面路由带的参数可以在目标页面的
onLoad中获取。 
| 路由方式 | 
触发 | 
| 打开新页面 | 
wx.navigateTo或<navigator open-type=”navigateTo”/> | 
| 页面重定向 | 
wx.redirectTo或<navigator open-type=”redirectTo”/> | 
| 页面返回 | 
wx.navigateBack或<navigator open-type=”navigateBack或”/> | 
| tab切换 | 
wx.switchTab<navigator open-type=”switchTab”/> | 
| 重启动 | 
wx.reLaunch<navigator open-type=”reLaunch”/> | 
API
wx.chooseMedia()  wx.request()  wx.login()  wx.requestPayment()  wx.chooseAddress() 
 
  wx.setStorage() wx.setStorageSync() wx.getStorage() wx.getStorageSync() wx.clearStorage() wx.clearStorageSync() wx.removeStorage() wx.removeStorageSync()
 
  const fs = wx.getFileSystemManager() fs.writeFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')
   | 
 
获取节点信息
 const query = wx.createSelectorQuery() query.select('#the-id').boundingClientRect(function(res){   res.top  }) query.selectViewport().scrollOffset(function(res){   res.scrollTop  }) query.exec()
 
  | 
 
组件
自定义组件
 {   "usingComponents": { 	  "custom-component": "/pages/custom-component/index"   } }
 
  | 
 
组件间通信
 <child id="child" bind:fn="fn" /> Page({ 	fn() { 		 		const child = this.selectComponet('#child') 		console.log(child) 	} })
 
  <button bind:tap="tap">调用父组件方法</button> Page({ 	tap() { 		 		this.triggerEvent('fn', data, option) 	} })
 
  | 
 
组件模板
<template name="odd"> 	<view>odd</view> </template> <template name="even"> 	<view>even</view> </template> <block wx:for="{{[1, 2, 3, 4, 5]}}"> 	<template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/> </block>
   | 
 
Component构造器
微信小程序开发:微信小程序生命周期总结
组件生命周期
数据监听器
微信支付
地理位置接口新增与相关流程调整
小程序用户信息相关接口调整公告
文件系统
canvas画布
分包加载
微信登录
获取昵称头像
小程序配置/场景值/框架接口/wxml语法/wxs语法
小程序组件