微信小程序开发

微信小程序开发

小程序web前端
必须运行在浏览中

微信小程序开发流程

微信小程序设计指南

  • 友好礼貌
    • 重点突出
    • 流程明确
  • 清晰明确
    • 导航明确,来去自如
    • 减少等待,反馈及时
    • 异常可控,有路可退
  • 便捷优雅
    • 减少输入
    • 避免误操作
    • 利用接口提升性能
  • 统一稳定
    -
  • 视觉规范
    • 字体
    • 字体颜色
    • 列表
    • 表单输入
    • 按钮
    • 图标

项目目录结构

  • pages 存储小程序页面
  • utils 全局的功能函数
  • app.js js主入口
  • app.json 主配置文件
    • 小程序中所有页面都必须在 app.json pages中进行配置
    • 小程序会默认显示 pages第一个成员
  • app.wxss 公共样式
  • project.config.json 项目配置

小程序配置

  • 全局配置 :配置所有页面及小程序相关设置
  • 页面配置 :只在当前页面配置。

基础语法

  • 数据绑定: {{}}
    • 组件内容插入数据
    • 属性中插入数据,({{}} 必须使用引号引起来)
  • 条件渲染: wx:if wx:elif wx:else
  • 列表渲染: wx:for wx:for-item wx:for-index wx:key="unique"
  • 模板:
    • 定义模板<template name="tempName" data="{{}}">
    • 使用模板<template is="tempName">
  • 引用
    • 可以将模板定义在独立的文件中
    • <import src="" />
  • 事件
    • 事件是视图层到逻辑层的通讯方式。
    • 事件可以将用户的行为反馈到逻辑层进行处理。
    • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
    • 事件对象可以携带额外信息,如 id, dataset, touches。要给事件传递数据可以使用dataset
    • 事件分类

给标签元素添加事件时需要在事件类型前添加一个前缀:bind catch
bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

页面生命周期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// 获取应用实例
const app = getApp()

Page({

/**
* 页面的初始数据
*/
data: {
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {

},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {

},

/**
* 用户点击右上角分享
*/
/*onShareAppMessage: function () {

}*/
})

页面路由

在小程序中所有页面的路由全部由框架进行管理,框架以栈的形式维护了当前的所有页面,小程序中页面栈最多十层

组件式导航

  • <navigator>
    • open-type='navigate' 跳转到指定页面
    • open-type='redirect' 将页面栈,栈顶替换为指定页面
    • open-type='navigateBack' 返回上一页面

编程式导航

  • wx.navigateTo() 跳转到指定页面
  • wx.redirectTo() 将页面栈,栈顶替换为指定页面
  • wx.navigateBack() 返回指定页面(页面栈出栈)
  • 开发者可以使用 getCurrentPages() 函数获取当前页面栈。

tabBar 中使用的页面如果在路由也使用了,那么路由导航中将不能正确的跳转到该页面。
如果要跳转到tabBar请使用 open-type="switchTab" ,跳转之前会将页面栈中数据全部出栈。

用户交互

  • wx.showToast(Object object) 会自动消失和弹窗
  • wx.showModal(Object object) 显示模态对话框
  • wx.showLoading(Object object) 不会自动消失 ,调用 wx.hideLoading(Object object)隐藏。
  • wx.showActionSheet(Object object) 显示操作菜单

网络请求

不支持 原生ajax 进行网络请求,必须使用api中提供的网络请求方法。

向服务器请求数据时,服务器必须先在小程序后台中进行配置,(必须支持 https ,必须备案)

如果在本地服务器测试时请在项目设置中勾选 不校验合法域名

云开发

云服务器(免费使用)

  • 云函数
  • 云调用
  • 数据库: json类型的数据库
  • 存储:文件存储

项目目录结构

* cloudfunctions 云开发服务器(后台)相关代码

  • 该目录存储的全部都是云函数。调用云函数可以访问到数据库存储
  • 云函数必须要部署到云端才能调用。
  • 该目录下创建云函数时目录名称就是云函数名称。
    * miniprogram 小程序客户端(前端)代码
  • wx.cloud.init() 调用云开发各 API 前,需先调用初始化方法 init 一次(全局只需一次,多次调用时只有第一次生效)
    • 请使用 2.2.3 或以上的基础库以使用云能力