我是如何快速上手微信小程序开发的

422 阅读7分钟

一 如何创建一个微信小程序

二 如何搭建小程序页面
三 小程序如何获取数据,处理逻辑
四 如何发布小程序应用

无论是前端开发,还是后端开发,时间长了,你总会能总结出它的一些规律的,对于前端开发主要就两条,页面展现,逻辑处理。如果是全流程开发的话,那就是,如何创建项目,页面如何实现,数据获取和逻辑处理如何实现,如何打包上线。移动端或者前端,基本开发流程就这个四个步骤。所以在在前端方面去学习新一门开发技术,只要你解决了这四个问题,那一切就OK了,下面我就讲一下,我在学习微信小程序开发,如何用这四步法快速上手开发的

一 如何创建一个微信小程序

学习一门新技术先看下它的开发文档小程序介绍

然后呢就是开始一些准备的步骤,微信公众平台提供我们开发管理的功能微信工作平台

1.1 首先要先注册一个账号,具体步骤请看下图的相关章节
![](https://upload-images.jianshu.io/upload_images/1972799-6daa24dde5f4372f.png?imageMogr2/auto-orient/strip|imageView2/2/w/954/format/webp)
账号注册
1.2 小程序信息完善和配置,具体步骤请看下图的相关章节
![](https://upload-images.jianshu.io/upload_images/1972799-5562fb8d31319243.png?imageMogr2/auto-orient/strip|imageView2/2/w/511/format/webp)
小程序信息配置
1.3 上面的工作做完后,接下来才开始创建一个小程序项目

请看小程序开发步骤

![](//upload-images.jianshu.io/upload_images/1972799-2c9cbf8f57703192.png?imageMogr2/auto-orient/strip|imageView2/2/w/516/format/webp)
小程序项目的创建

到此第一个问题我们就算完成了,接下来解决小程序界面如何搭建。

脚手架 github.com/wechat-mini…

然后最重要的,微信提供自己的开发者工具,不需要用chrome什么调试,微信开发者工具提供wxapi的调用测试能力,这些在chrome里面是测试不了的

二 如何搭建小程序页面

![](https://upload-images.jianshu.io/upload_images/1972799-89ba614765a648f0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
小程序界面实现

框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。
将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。
WXML(WeiXin Markup language) 用于描述页面的结构。
WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。
WXSS(WeiXin Style Sheet) 用于描述页面的样式。

小程序的页面是由wxml 和wxss这两个文件来实现的,wxml结构如何写请参考微信小程序组件
wxss是负责样式控制的,基本类似于css,支持flex布局,所以要想上手构建微信小程序的界面,最好要熟悉html ,css.
还有最重要的就是生命周期了

生命周期

//index.js
Page({
  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) {
    // tab 点击时执行
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },
  // 事件响应函数
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  },
  // 自由数据
  customData: {
    hi: 'MINA'
  }
})

微信提供的界面组件很多,没必要一下子全学会,会用一两个就行,其他的遇到需要的时候现查先做,这样又节约学习时间,又能够加深理解。到此第二个问题我们解决了,下面看第三个问题,数据逻辑如何处理。

三 小程序如何获取数据,处理逻辑

3.1 逻辑处理
![](https://upload-images.jianshu.io/upload_images/1972799-a2f23fba53624f9d.png?imageMogr2/auto-orient/strip|imageView2/2/w/1122/format/webp)
数据定义
![](https://upload-images.jianshu.io/upload_images/1972799-f9438d14cc3efbe9.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
数据展现

逻辑处理是通过js文件来操作的
一个服务仅仅只有界面展示是不够的,还需要和用户做交互:响应用户的点击、获取用户的位置等等。在小程序里边,我们就通过编写 JS 脚本文件来处理用户的操作。

<view>{{ msg }}</view>
<button bindtap="clickMe">点击我</button>

点击 button 按钮的时候,我们希望把界面上 msg 显示成 "Hello World",于是我们在 button 上声明一个属性: bindtap ,在 JS 文件里边声明了 clickMe 方法来响应这次点击操作:

Page({
  clickMe: function() {
    this.setData({ msg: "Hello World" })
  }
})

响应用户的操作就是这么简单,更详细的事件可以参考文档 WXML - 事件
此外你还可以在 JS 中调用小程序提供的丰富的 API,利用这些 API 可以很方便的调起微信提供的能力,例如获取用户信息、本地存储、微信支付等。在前边的 QuickStart 例子中,在 pages/index/index.js 就调用了 wx.getUserInfo 获取微信用户的头像和昵称,最后通过 setData 把获取到的信息显示到界面上。更多 API 可以参考文档 小程序的API

3.1 数据获取

现在几乎每个应用都需要从后端获取数据,那么小程序如何获取呢,当然是通过网路操作了。我们封装了小程序的网络操作

const app = getApp()

const request = (url, options) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: `${app.globalData.host}${url}`,
      method: options.method,
      data: options.method === 'GET' ? options.data : JSON.stringify(options.data),
      header: {
        'Content-Type': 'application/json; charset=UTF-8'
        // 'x-token': 'x-token'  // 看自己是否需要
      },
      success(request) {
        if (request.data.error_code === 0) {
          resolve(request.data)
        } else {
          reject(request.data)
        }
      },
      fail(error) {
        reject(error.data)
      }
    })
  })
}

const gets = (url, options = {}) => {
  return request(url, { method: 'GET', data: options })
}

const post = (url, options) => {
  return request(url, { method: 'POST', data: options })
}

const put = (url, options) => {
  return request(url, { method: 'PUT', data: options })
}

// 不能声明DELETE(关键字)
const remove = (url, options) => {
  return request(url, { method: 'DELETE', data: options })
}

module.exports = {
  gets,
  post,
  put,
  remove
}

如何使用请看下图

![](https://upload-images.jianshu.io/upload_images/1972799-30540785d9cb3435.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
数据获取

数据展现如下图

![](https://upload-images.jianshu.io/upload_images/1972799-753c8f135de2aeeb.png?imageMogr2/auto-orient/strip|imageView2/2/w/1117/format/webp)
数据展现

到此,第三个问题我们就解决的了下面看第四个问题。

四 如何发布小程序应用

小程序发布文档说明

![](https://upload-images.jianshu.io/upload_images/1972799-c3e2ee59cf23ceb6.png?imageMogr2/auto-orient/strip|imageView2/2/w/587/format/webp)
小程序发布步骤

到此四个问题都解决了。

总结:本文内容是很简单的,借用了大部分官方文档,其实本文目的不是教你学小程序开发,而是分享一下在学习一项新事物我的方法和思路,互联网技术变化是很快的,我觉得一个人的能力,不仅仅是你技术有多好,你要明白技术是用来干什么的,技术是用来解决现实生活中的问题的,一个好的程序员,不是技术能力,而是解决问题的能力,解决问题不可能只用一种技术,这就要求你的学习能力要强,针对不同的问题,使用不同的技术,哪怕使用的技术你不熟悉,但它是解决问题最好的方法,那就要求你有快速学习并解决问题的能力。
学习一项新技术,我们要先抓住主线,把流程搞通了,以后再在工作中慢慢的熟悉和丰富对它细节的一些认知,所以学一项东西前多问自己几个问题,我学什么,我为什么学,我怎么学,等。先思考后学习,一定会让你事半功倍。
对于怎么学习微信小程序开发,我问了自己上面的四个问题,每个问题,我只需要了解大体内容,四个问题都解决了,然后整个流程也就通了,以后也就是慢慢的对每个问题内容的细节慢慢的熟悉和了解了,其实花了不到一下午的时间,我就搞出了一个简单的demo出来了,了解的内容基本已经覆盖微信小程序日常开发80%的内容了。以上就是我的一点学习心得。

最后小程序Demo
Demo截图

![](https://upload-images.jianshu.io/upload_images/1972799-89500b4ddb5ba70d.png?imageMogr2/auto-orient/strip|imageView2/2/w/323/format/webp)
首页
![](https://upload-images.jianshu.io/upload_images/1972799-b6607559f3327b29.png?imageMogr2/auto-orient/strip|imageView2/2/w/317/format/webp)
我的
![](https://upload-images.jianshu.io/upload_images/1972799-4f2e7c93fbb4921a.png?imageMogr2/auto-orient/strip|imageView2/2/w/321/format/webp)
点击我的任意条目,数据是从第三方聚合平台提供的api获取的
![](https://upload-images.jianshu.io/upload_images/1972799-235e43358c5baf1a.png?imageMogr2/auto-orient/strip|imageView2/2/w/320/format/webp)

最后目前有很多的多端开发框架,背景大多是都是因为小程序开发的盛行

在这里插入图片描述

开发工具

其他还有很多例如

阿里的rax

我们自己的ditto