微信小程序入门指南

102 阅读3分钟

小程序从入门到放弃

先导:小程序学习,原本是去年在公司内部做的一次技术分享演讲所写的,用于讲解时使用。现在我分享出来,对没接触过小程序能有个大致了解。

资料

微信公众平台

小程序开发文档

wxParse插件

开发工具下载地址

小程序示例

小程序示例

0. 什么是小程序

传送门

通信模型

通信模型

1. 目录结构

传送门

├── app.js
├── app.json
├── app.wxss
├── pages
│   │── index
│   │   ├── index.wxml
│   │   ├── index.js
│   │   ├── index.json
│   │   └── index.wxss
│   └── logs
│       ├── logs.wxml
│       └── logs.js
└── utils

2. 配置小程序

传送门

2.1 全局配置

{
  "pages": [
    "pages/index/index",
    "pages/logs/index"
  ],
  "window": {
    "navigationBarTitleText": "Demo"
  },
  "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/logs/index",
      "text": "日志"
    }]
  },
}

2.2 页面配置

3. 框架

3.1 注册小程序

传送门

App() 构造器

小程序生命周期

getApp()

整个小程序只有一个 App 实例,是全部页面共享的。开发者可以通过 getApp 方法获取到全局唯一的 App 实例,获取App上的数据或调用开发者注册在 App 上的函数。

const app = getApp()
console.log(app.globalData)

3.2 注册页面

传送门

Page()构造器

页面生命周期

生命周期

3.3 路由

传送门

页面栈概念

路由语法

有2种用法,调用API或使用组件。

小程序vue
wx.navigateTorouter.push
wx.redirectTorouter.replace
wx.navigateBackrouter.go(-1)

wx.switchTab 只能跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面(不能带参数)

wx.reLaunch 关闭所有页面,打开到应用内的某个页面

语法示例

wx.navigateTo({
  url: '../logs/logs?id=1'
})

页面如何获取url的query?

onLoad(options) {
  console.log(options)
}

3.4 事件系统

传送门

事件绑定bind/catch的区别

4. 语法

4.1 wxml语法(模板语法)

数据绑定

<view id="item-{{id}}"> {{ message }} </view>

Page({
  data: {
    id: 0,
    message: 'Hello MINA!'
  }
})

列表渲染

<view wx:for="{{array}}">
  {{index}}: {{item.message}}
</view>

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

条件渲染

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>

小程序中如何实现v-show

4.2 js语法

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

<view>{{text}}</view>
<button bindtap="changeText"> 改变 </button>

Page({
  data: {
    text: 'init data',
  },

  changeText: function() {
    console.log(this.data.num, '获取')
    // 设置
    this.setData({
      text: 'changed data'
    })
  },
})

数组和对象如何设置?

4.3 自定义组件

传送门

创建和使用自定义组件

组件生命周期

语法

小程序vue
propertiesprops
behaviorsmixins
observerswatch
methodsmethods

5. 组件

不可用HTML语法,没有div,p,span……

view 可看作 div

text 可看作 span

什么是原生组件?传送门

关于open-data

6. API

6.1 交互

wx.showToast({
  title: '成功',
  icon: 'success',
  duration: 2000
})

6.2 发起网络请求

传送门

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  method: 'GET', // 默认值
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默认值
  },
  success (res) {
    console.log(res.data)
  }
})

6.3 数据缓存

wx.setStorage/wx.setStorageSync 设置

wx.getStorage/wx.getStorageSync 获取

wx.removeStorage/wx.removeStorageSync 移除

wx.clearStorage 清空所有

6.4 图片

wx.previewImage({
  current: '', // 当前显示图片的http链接
  urls: [] // 需要预览的图片http链接列表
})

6.5 位置

wx.getLocation({
 type: 'wgs84',
 success (res) {
   const latitude = res.latitude
   const longitude = res.longitude
 }
})

6.6 电话

wx.makePhoneCall({
  phoneNumber: '1340000' 
})

7. 其它

7.1 登录授权

关于登录授权又双叕变了 官方公告

登录

登录流程时序

wx.login 调用接口获取登录凭证(code)

wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: 'https://test.com/onLogin',
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

获取用户信息

wx.getUserProfile 获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。

wx.getUserInfo 已被弃用,说多都是泪

授权

有些权限需要用户授权才能使用

获取手机号

7.2 使用npm

传送门

npm init 初始化,出现package.json则成功

安装 npm 包

点击开发者工具中的菜单栏:工具 --> 构建 npm。

点击开发者工具中的详情 --> 本地设置,勾选“使用 npm 模块”选项

使用

7.3 小程序UI组件库

Vant Weapp

结束语

有助于开发者对小程序有个初步认识和快速上手,虽然目前还有许多不完善的地方。

该篇仅为内部培训资料使用,如需转载请联系作者。