小程序框架
目录结构
|- 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语法
小程序组件