我们的微信小程序开发
基于微信小程序的系统开发准备工作
腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够大大降低开发成本和难度,但也意味着需要掌握整个微信小程序的各种接口功能、应用场景等相关技术点,本篇随笔先从大的方面来介绍微信小程序开发的一些知识,如架构设计、技术路线 、工具准备等方面做一些浅薄的介绍,希望大家也有所收益,有所借鉴,则善莫大焉。
1、小程序的统一架构设计
在我们开发各种应用的时候,总是希望能够先从大的方向上探索整个业务场景,尽可能的不用造成后期的返工或者推倒重来,这种代价是非常高昂的,因此前期花些时间来做一下整体的规划,然后在具体化各个业务模块的开发才是比较合理的做法。
业务数据的集中化,是很多企业的在数据化浪潮中赖以生存的核心,各行各业都有自己的业务数据,有些企业掌握着重要的行业数据,一旦数据成了规模,就可以对外提供接口,实现数据业务的营收,也是一项非常不错的收入,同时也是企业的核心竞争力。
不管数据是部署在阿里云、腾讯云等云产品上,还是部署在自家的服务器上,都是数据集中化的表现之一,围绕着数据集中化,那么各种应用就有一个统一的API接口的需求,这种统一API可以称为统一平台,也可以称为统一接口,都有不同的称呼。
随着基于JSON格式的Web API的广泛应用,越来越多的企业采用Web API接口服务层,作为统一接口的核心所在,也成为Web API核心层。基于JSON格式的接口,可以广泛地、跨平台的应用于IOS、安卓等移动端,也可以应用在常规的Web业务系统,Winform业务系统、微信应用、微信小程序等方方面面,因此企业内部形成自己是的一套Web API标准和详细的文档非常重要,一旦完善了,就可以供各个业务场景使用,这些业务可以外包给其他软件公司或者团队,各自分离开发,而自己内部则只需要花费精力来统一维护Web API核心层和提高整个核心层的功能接口稳定、缓存处理等方面事情即可。其他业务团队开发的系统只需要遵循整个大接口平台的统一规划,完成各自的功能需求即可,不会造成数据库的不一致,更不会让某家公司掌握核心的技术资源,尾大不掉的尴尬情形。
基于上面的分析,我们企业最终围绕着Web API核心层做了不同的业务应用,如下图所示。

基于Web API核心层的性能考虑,我们一般它们分开处理,一般后端有一个数据库应用服务器,一个Web API服务器,甚至可能还有一个专门处理FTP文件的文件服务器(可选),如果还需要建立Web后台应用,可能还需要一个或者多个Web 应用服务器,从而分散服务器的IO压力和计算压力,如果还需要考虑更加周全一些,还需要一个MQ服务器处理重要订单数据、缓存服务器存储缓存数据、负载均衡服务器等等。
最简化的要求,至少有一个云端数据库服务器和一个Web API服务器,这些服务器群构成一个Web API一体化应用的场景,如下所示。

考虑到Web API的分层,我们可以通过下图来了解具体的分层结构,从而为我们实际的开发做一些铺垫。

2、小程序的开发环境准备
微信小程序的开发准备,我们首先需要在官网上注册账号,然后绑定自己的认证的账号即可,这些我可以参考https://mp.weixin.qq.com/debug/wxadoc/dev/ 进行了解即可 ,不在赘述。
同时里面的文档包括了小程序开发的UI规范、架构说明、组件及API的接口说明等内容,建议详细阅读。
我们开发小程序,很多情况下需要利用微信开发者工具(开发者工具 ),工具集成了开发调试、代码编辑及程序发布等功能。启动工具时,开发者需要使用已在后台绑定成功的微信号扫描二维码登录,后续所有的操作都会基于这个微信帐号。
不过,为了更好提高开发工具,我们建议代码编辑还是利用比较专业化的前端开发工具较好,结合上面微信开发者工具进行编译出来即可,推荐的前端开发工具还是老牌的Sublime Text较好,界面效果如下所示。

这个工具可以在我的网盘下载:http://pan.baidu.com/s/1slflTt7,或者也可以百度获取对应最新的版本下载即可。
默认来说,这个工具并不能识别小程序自定义的后缀名,因此我们需要打开对应的wxml,wxss这些文件,我们关联下即可,毕竟这两个文件分别是HTML、CSS3格式的文件。
具体设置操作如下,先打开wxml,wxss这些文件,然后从右下角单击PlainText位置,从弹出列表里面选择正确的格式。

从弹出列表里面首先选择Open all with current extensioin as ***这个菜单,然后选择对应的HTML,或者CSS3格式即可完成后缀名的设置,下次打开会自动关联正确格式的后缀名了。

上面的操作只是设置了文件的格式,对于微信小程序自定义的标签,以及一些特有的JS操作,还是需要费一些工作,好在已经有好心人为我们专门做了小程序的Sublime Text插件。
微信小程序的snippets(sublime通过 “Sublime-snippet” 实现快速补全代码),插件下载的链接:https://github.com/Abbotton/weapp-snippet-for-sublime-text-2-3
下载上方链接提供的snippet

将红色文件夹直接放入sublime的安装目录 PackagesUser 下,重启sublime即可。

同时,JS的模块也是一样的处理,可以快速录入代码段。

输入apirequest即可获得快速录入的代码段,如下所示。

整个snippet的列表包含下面几个部分,分别使用w开始或者api开始,避免冲突。
snippet 列表
为了防止和其他 snippet 冲突,本 snippet 中的所有WXML 标签触发命令都以'w'开头,所有 API相关命令都以'api'开头.
WXML snippet
| 命令 | 对应组件或命令 |
|---|---|
| wapp | 注册小程序 |
| wblockif | block wx:if |
| wbutton | button |
| wcheckbox | checkbox |
| wcheckboxgroup | checkbox-group |
| wcanvas | canvas |
| wimage | image |
| wtext | text |
| wview | view |
| wviewbind | view 事件 |
| wmap | map |
| wnavigator | navigator |
| wexport | 模块化 |
| wfor | for |
| wform | form |
| wradio | radio |
| wradiogroup | radio-group |
| wslider | slider |
| wicon | icon |
| winput | input |
| wtextarea | textarea |
| winfutautofocus | input |
| wvideo | video |
| winputfocus | input |
| wlabel | label |
| wpage | Page() |
| wprogress | progress |
| wscrollview | scroll-view |
| wswitch | switch |
| wtemplate | template |
| wswiper | swiper |
| wviewelif | view |
| wviewelse | view |
| wviewif | view |
小程序API snippet
| 命令 | 对应组件或命令 |
|---|---|
| apirequest | 网络请求 |
| apiuploadfile | 上传文件 |
| apidownloadfile | 下载文件 |
| apiconnskt | 创建 WebSocket 链接 |
| apionsktopen | 监听WebSocket连接打开 |
| apionskterr | 监听WebSocket错误 |
| apisendsktmsg | 使用 WebSocket发送数据 |
| apionsktmsg | 接受消息推送 |
| apicloseskt | 关闭WebSocket连接 |
| apionsktclose | 监听WebSocket关闭 |
| apichooseimg | 选额图片 |
| apipreviewimg | 预览图片 |
| apigetimginfo | 获取图片信息 |
| apistartrecord | 开始录音 |
| apistoprecord | 结束录音 |
| apiplayvoice | 播放语音 |
| apipausevoice | 暂停播放语音 |
| apistopvoice | 结束播放语音 |
| apigetbgaudioplayerstate | 获取音乐播放状态 |
| apiplaybgaudio | 播放音乐 |
| apipausebgaudio | 播放暂停音乐 |
| apiseekbgaudio | 控制音乐播放进度 |
| apistopbgaudio | 停止播放音乐 |
| apionbgaudioplay | 监听音乐播放 |
| apionbgaudiopause | 监听音乐暂停 |
| apionbgaudiostop | 监听音乐停止 |
| apisavefile | 保存文件 |
| apigetsavedfilelist | 查看保存文件列表 |
| apigetsavedfileinfo | 查看保存文件信息 |
| apirmfile | 删除缓存文件 |
| apiopendoc | 新开页面打开文档 |
| apichoosevideo | 视频 |
| apisetstorage | 覆盖本地内容 |
| apisetstoragesync | 同步覆盖本地内容 |
| apigetstorage | 获取指定 key 对应的内容 |
| apigetstoragesync | 同步获取指定 key 对应的内容 |
| apiclearstorage | 清理本地数据 |
| apiclearstoragesync | 同步清理本地数据 |
| apirmstorage | 删除本地数据 |
| apirmstoragesync | 同步删除本地数据 |
| apigetstorageinfo | 获取本地数据信息 |
| apigetstorageinfosync | 同步获取本地数据信息 |
| apigetlocation | 获取位置 |
| apiopenlocation | 查看位置 |
| apichooselocation | 打开地图选择位置 |
| apigetnetworktype | 网络状态 |
| apigetsysinfo | 系统消息 |
| apiaccelerometerchange | 重力感应 |
| apicompasschange | 罗盘 |
| apisetnavbartitle | 动态设置导航条文字 |
| apishownavbarloading | 显示导航条加载动画 |
| apihidenavbarloading | 隐藏导航条加载动画 |
| apihidekeyboard | 收起键盘 |
| apinavigateto | 保留当前页面并跳转 |
| apiredirectto | 关闭当前页面并跳转 |
| apinavigateback | 返回上一个页面 |
| apilogin | 登录 |
| apichecksession | 检测session |
| apigetuserinfo | 用户信息 |
| apipayment | 微信支付 |
| apishowtoast | 交互反馈 |
| apihidetoast | 交互反馈 |
| apishowmodal | 交互反馈 |
| apihidemodal | 交互反馈 |
| apishowactionsheet | 交互反馈 |
| getSystemInfoSync | 同步获取系统信息 |
| apiphonecall | 拨打电话 |
3、小程序的Https协议的SSL证书
我们知道小程序为了提高安全性,做了很多方面的限制,其中有一条就是要求使用HTTPS这种安全性协议来获取数据,如下所示。

因此要求我们的Web API接口必须统一使用HTTPS(其实这也是常规的做法),这就要求我们必须在网站提供443端口服务,需要加入HTTPS证书,这种证书可以从云服务商上购买,如腾讯云、阿里云上的云服务器后台都提供了购买证书服务的通道,当然HTTPS证书年费可不算便宜,但我们也可以使用简单的免费证书先用着。
以阿里云为例,使用阿里云账号登陆后,在【控制台】【安全云盾】【证书服务】里面进行申请。

然后选择购买证书,在购买证书界面上,选择免费的证书,录入相关的资料后提交即可。

购买后,会在订单列表里面有一个待审核的订单,如下所示,等待审核通过即可使用。

有了这些准备,我们就可以在服务器上绑定对应的端口,提供HTTPS协议的接口访问了。
剩下的事情就是关注我们Web API核心接口上的事情,这个方面可以在另外一个主题上进行介绍。
主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发专注于Winform开发框架/混合式开发框架、Web开发框架、Bootstrap开发框架、微信门户开发框架的研究及应用。
转载请注明出处:
撰写人:伍华聪 http://www.iqidi.com 我们的微信小程序开发的更多相关文章
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- 【微信小程序开发•系列文章六】生命周期和路由
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...
- 微信小程序开发日记——高仿知乎日报(下)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 微信小程序开发日记——高仿知乎日报(中)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...
- 微信小程序开发日记——高仿知乎日报(上)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 微信小程序开发工具测评
1月9日微信小程序正式上线.很多企业都希望能在这个.但是在技术开发的问题上,却不知道该如何下手.经过一些程序员不辞辛苦连夜测试,终于从十余款工具呕心沥血筛选出四款比较靠谱实用的微信小程序开发工具.接下 ...
- 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?
原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复 ...
- 微信小程序开发工具使用与设计规范(二)
[未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...
- 微信小程序开发视频教程新鲜出炉
微信小程序开发公测了,可是对于新手来说,不同的框架不同的开发机制,如何快速适应呢?微信小程序开发视频教程新鲜出炉了,从零开始一步一步搭建微信小程序,每个章节都会涉及到不同的知识点,等教程学习完你不但掌 ...
- 三言两语之微信小程序开发初体验(1)
一.前情 直接切入主题,微信发布了小程序,前端开发者表示,如果不会微信小程序的开发感觉就跟不上时代了,先解答几个容易出现歧义的问题 小程序就叫小程序,不叫应用号,因为apple不准,哈哈 小程序是 ...
随机推荐
- [Algorithm] 10. Reverse Integer
Description Given a 32-bit signed integer, reverse digits of an integer. Example Example 1: Input: 1 ...
- 集合:Collection
why ? when ? how ? what ? Java 集合框架图 由上图我们可以看到,Java 集合主要分为两类:Collection 和 Map. Collection 接口 遍历 Coll ...
- maven profile多环境自动切换配置,配置分离,排除文件
痛点: 在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同. 在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部 ...
- java增强for循环中获取index
java增强for循环中获取index http://rensanning.iteye.com/blog/2003205
- HDU 4780 Candy Factory
Candy Factory Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...
- Ural 1036 Lucky Tickets
Lucky Tickets Time Limit: 2000ms Memory Limit: 16384KB This problem will be judged on Ural. Original ...
- [luoguP1076] 寻宝(模拟)
传送门 模拟就好! 然后需要把一圈的有楼梯的都记录一下,取膜乱搞. 代码 #include <cstdio> #include <iostream> #define N 100 ...
- django自身提供的sitemap和feed实现样例
<DJANGO BY EXAMPLE>这书的例子真是精心全过的, 基本的WEB开发过程全覆盖啊. 跟着一步一步的弄就OK啦..可以长很多知道的. 这次跟着作的是sitemap和feed功能 ...
- 26、Java并发性和多线程-线程池
以下内容转自http://ifeve.com/thread-pools/: 线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用.因为每启动一个新线程都会有相应的性能开销,每个 ...
- systemtap --diskio
http://blog.163.com/digoal@126/blog/static/1638770402013101993142404