微信小程序入门与进阶

小时光茶社

导语:本文章的主要目的就是针对两类人: 一类是没有做过小程序开发,但是想了解小程序整个开发过程及环境和开发中需要注意哪些问题的人,你适合读本文的入门篇,可以帮你节省至少几天的时间。 另一类人就是你写过小程序,但是想对小程序更深入的了解,并想对你的小程序进行一定程度上的优化,那你更适合阅读本文进阶篇,本文给出了一些优化的方向及方法,可供参考。 好了,现在让我们来开启小程序的前生今世探险之旅吧。

目录

(一) 入门

    a) 运行环境

    b) 开发姿势   

    c)  一个DEMO

    d) 特有的脾气

    e) 踩过的坑

(二) 进阶

    a )原理

    b) 性能优化

    c) 新的写码姿势

    d) 页面间通信

入门

640?wx_fmt=png

运行环境

一图胜千言,我这就不多废话,先上一个图,来讲明下整个运行的环境流程。

微信小程序入门与进阶_第1张图片

总结:小程序前端代码是统一上传到微信服务器,用户访问小程序时,微信客户端自动会去拉取小程序前端所有代码,小程序代码里再调用API从服务器取回数据,并把数据渲染到页面,然后展示给用户。

640?wx_fmt=png

开发姿势

1. 准备阶段

微信小程序入门与进阶_第2张图片

注册小程序管理员帐号地址如下:https://mp.weixin.qq.com/wxopen/waregister?action=step1

关联对应的公众号,可以关联也可以不关联,主要是看业务需求。

关于小程序和公众号的区别,首先两个在管理端登录的平台地址是不一样的,其次可以理解为都是属于微信平台的一个应用,这两个应用可以设置关联,前提是注册公众号与小程序的主体信息(即身份信息)需一致。关联后可以在公众号里引导跳转到小程序,小程序与公众号就成为了一套登录体系。

小程序的名字不可和非同主体的公众号名字一样。

2. 开发体验阶段

微信小程序入门与进阶_第3张图片

只有在小程序管理后台设置为开发者权限的用户才可以扫码访问开发版本小程序,同理体验版也只有设置为体验者权限的用户才可以扫码访问体验版小程序。

开发版可以有多个,即一个开发就是提交一个开发版,互不冲突。但是体验版只有一个,即从众多开发版里设置一个版本做为体验版。

3. 完成阶段

微信小程序入门与进阶_第4张图片

只有小程序完成发布上线,全体微信用户才可以访问。发布上线是管理员在微信小程序管理后台从体验版或是众多提交的开发版里选一个提交审核成为现网版。

4. 维护&升级阶段

在小程序管理后台可以把当前现网的版本随时回退到老版本,也可以随时挂小程序暂停公告。

小程序每次发布一个新的版本后,当用户访问小程序时,依然访问的是老版本(微信客户端会异步去下载新版本),当小程序生存周期结束后再启动小程序时,就会访问最新版小程序。基础库1.9.9以后,也可以用强制升级接口进行强制升级并启动。接口名为:wx.getUpdateManager(),只在现网版生效。

备注:

640?wx_fmt=png

一个DEMO

我这里以一个最简单的Demo让大伙快速的了解整个小程序的开发方式,以及编码规则和组成小程序的各个部件说明。至于具体详细的教程,我想小程序官网写得非常详细了,我这里就不再复述。官网详细教程地址为:

https://developers.weixin.qq.com/miniprogram/dev/index.html 

1. 创建一个小程序

在微信开发者工具上创建一个新的项目,填写上你在微信管理端申请的小程序的APPID,界面如下:

微信小程序入门与进阶_第5张图片

会自动生成一个目录结构的demo。

效果:

微信小程序入门与进阶_第6张图片

2. 文件结构

微信小程序入门与进阶_第7张图片

2.1  每个小程序页面都是由四个文件组件(json, wxml, wxss,js)。

3. 生命周期

微信小程序入门与进阶_第8张图片

3.1 js为入口文件,每个页面都会经过该页,其onLauch触发条件为第一次冷启动后执行一次,onShow的触发条件为点击退出小程序按钮,然后在没有被回收时,又从任务栏呼起小程序时。由上图知道每个小程序的所有页面都会在第一次启动时全部加载。

微信小程序入门与进阶_第9张图片

其中pages 就是路由的相关配置; window为小程序窗口风格相关的配置;tabBar为底部导航栏的配置。

3.4  小程序启动方式:冷启动,热启动

3.5 一个页的基本代码写法,如下为index.js

微信小程序入门与进阶_第10张图片
微信小程序入门与进阶_第11张图片

4. 微信原生API

微信原生API主要是开放微信的原生能力,提供一些H5没有的能力,有网络类,媒体类,文件操作类,数据存储类,位置获取类,设备信息类,界面等接口。

5. 组件

a). 组件包括两类,一类为微信官网定义好的组件,其中只有