“小程序”这款划时代的产品发布已经快一周了,互联网技术人员摩拳擦掌,跃跃欲试。不过小程序还在内测,第一批只发放了200个内测资格(泪流满面)。本以为没有AppID,小程序这个月就没有机会了。好在这两天微信发布了开发者工具正式版,无需内测邀请即可试用。于是就有了我对“小程序”的初体验,我的感受只有一个字——爽!选择哪个“小程序”Demo?在知名的同性交友网站Github上,有很多“小程序”的demo,但大多只是简单的API演示,有的甚至直接把页面数据写在json文件中(明明有个网络请求API)。我想体验的是一个可以无缝连接服务端和小程序的项目(体验够爽)。最终我选择了腾讯云官方推出的“小相册”项目。“小相册”主要实现以下功能:列出对象存储COS中的图片。点击左上角上传图片图标调用相机拍照或从手机相册中选择图片,上传选中图片到COS。点击任意图片进入图片全屏预览模式,左右滑动切换预览图片。长按任意图片保存到本地或从COS中删除效果演示图(受限于开发工具,部分功能暂未实现)CloudObjectService是云对象推出的高可用、高稳定、高安全的云存储服务面向企业和个人开发者的腾讯云。任何数量和形式的非结构化数据都可以放入COS,并在其中实现数据管理和处理。之所以选择腾讯云的Demo,是因为它是腾讯自己推出的,项目质量有保证;第二,因为是少有的既谈小程序开发,又引入云部署的项目。稍有经验的程序员都知道架构要静态和动态分开。静态文件最好不要放在自己的服务器上,而是放在专门用于存储的对象存储服务器COS上,使用CDN加速。《小相册》的后端是Node.js,使用Nginx作为反向代理。第一步:搭建开发环境首先,我们需要搭建微信“小程序”的本地开发环境。也就是下载开发者工具。微信官方已经推出了正式版IDE,破解版就不用下载了。打开官网下载页面,根据自己的操作系统选择。我正在使用Mac版本。安装完成后,打开运行,会要求微信扫码登录,之后就可以看到创建项目的页面了。选择添加项目,如果没有AppID,选择None(如果乱写会报错,到时候可能进不了项目)。如果您选择的项目目录为空,请勾选“在当前目录下创建快速启动项目”,如图。点击“添加项目”后,我们将进入开发工具的调试页面。第二步:下载“小相册”源码接下来,我们下载“小相册”源码。可以选择直接从腾讯云官网提供的链接下载,也可以从腾讯云团队的Github仓库拉取。我推荐从Github仓库中拉取,这样你可以及时获取最新的代码。gitclonehttps://github.com/CFETeam/weapp-demo-album.git最后我们会得到一个这样的文件目录。简单说明一下目录结构:小程序(或app):“小相册”应用包的代码,在微信开发者工具中可以直接作为项目打开。server:构建的Node服务器代码,作为服务器与app通信,提供了一个CGI接口的例子,用于拉取图片资源,上传图片,删除图片。assets:“小相册”演示截图。源码下载完成后,我们打开微信网页开发者工具,新建项目“迷你相册”,选择目录小程序(或app)。《小相册》源码分析在部署之前,我们先简单分析一下《小相册》的具体代码。毕竟,光看效果不是我们的目的。我们的目标是以“微型相册”为例,了解如何开发小程序并与服务器进行交互。“迷你相册”包含描述整个程序的应用程序和描述各个页面的多个页面。主程序app主要由三个文件组成,分别是app.js(小程序逻辑)、app.json(小程序公共设置)和app.wxss(小程序公共样式表),其中前两个是必不可少的文件。config.js文件中包含一些部署域名的设置,所以现在不用管它。pages目录下有两个页面,分别是index和album。页面结构比较简单,其中index为小程序启动时默认进入的页面。每个页面下至少要有两个文件,.js(页面逻辑)和.wxml(页面结构),.wxss(页面样式表)和.json(页面配置)文件是可选的。您可能已经注意到这些文件与父目录具有相同的文件名。这是微信官方规定的,目的是减少配置项,方便开发者。下面我们就以索引页为例简单说明一下。index.wxml是这个页面的表现层文件。里面的代码很简单,可以分为上下两部分。恭喜成功构建微信小程序进入相册分享二维码,邀请好友一起写小程序!页面演示效果如下:我们可以看到页面上有一个“进入相册”的按钮。正常理解为点击按钮后,我们可以进入相册(这不是废话)。小程序是如何实现这个操作的?在index.wxml中,我们发现在对应的button标签上定义了一个bindtap属性,绑定了一个叫gotoAlbum的方法。而这个方法可以在index.js文件中找到。其实文件中只定义了这个方法,具体动作是跳转到相册页面。Page({//转到相册页面gotoAlbum(){wx.navigateTo({url:'../album/album'});},});程序的主要逻辑写在album.js页面,包括选择或拍照、图片预览、图片下载和图片删除;使用了album.wxml中的三个视图容器view、scroll-view和swiper,还提供了一个消息提示框toast。具体方法和视图的实现请参考项目源码。所有这些功能都写在Page类中。lib目录提供了一些小程序会用到的辅助功能,包括异步访问和对象存储COSAPI。总的来说,正如微信官方宣传的那样,在开发者工具下开发小程序的效率确实提高了很多,微信改进的组件和API也不少。所以在开发速度上的体验还是很爽的。另外,由于“小相册”需要用到很多云端能力,比如上传、下载图片等,所以我们还需要部署配置服务器。有关详细信息,请参阅后续步骤。第三步:在云端部署服务器代码。虽然服务端的开发不是本文的重点,但是为了完整体验《小相册》的整个开发部署过程,我们还是需要了解一下服务端的部署。这里我们使用腾讯云。如果你想更酷一些,可以选择腾讯云官方提供的小程序云镜像。“小相册”服务器的运行代码和配置已经打包成腾讯云CVM镜像,可以直接使用。可以说是一键部署云端。如果你之前没有用过腾讯云,你可以选择免费试用(我已经领取了8天个人服务器),或者领取礼包以优惠价格购买所需的服务。也可以选择将“小相册”源码中的服务器文件夹上传到自己的服务器。第四步:准备域名和配置证书。如果您已有腾讯云服务器和域名,并配置了https,则可跳过4-6步。在微信小程序中,所有的网络请求都被严格限制,不符合条件的域名和协议不能请求。简单的说,你的域名必须遵循https协议。所以你还需要为你的域名申请证书。如果您没有域名,请先注册一个。由于我们还没有收到内测,所以暂时不用登录微信公众平台配置通讯域名。第五步:Nginx配置在https微信小程序云示例图中,已经部署了Nginx,但是需要在/etc/nginx/conf.d下修改配置中的域名、证书、私钥。请把红框替换成你自己的域名和证书,设置proxy_pass为Node.js监听的端口,我的是9993。配置完成后,重新加载配置文件,重启Nginx。sudoservicenginxreloadsudoservicenginxrestart第六步:域名解析我们还需要添加一个域名记录,将域名解析到我们的云服务器,这样该域名就可以用于https服务了。在腾讯云注册的域名,可以直接使用阿里云DNS控制台添加主机记录,直接选择上面购买的云服务器即可。解析生效后,我们的域名将支持https访问。第七步:激活并配置COS由于我们要实现动静分离的结构,所以我们选择将“迷你相册”的图片资源存储在COS上。使用COS服务需要登录COS管理控制台,然后在其中完成以下操作。单击创建存储桶。系统会要求您选择项目并填写相应的名称。这里,我们只需要填写我们喜欢的Bucket名称即可。然后在Bucket列表中,单击刚刚创建的Bucket。然后在新页面上单击“获取API密钥”。弹出页面包含我们需要的三个信息:唯一APPID、一对SecretID和SecretKey(用于调用COSAPI)。保存此信息,我们稍后需要它。最后,在新的Bucket容器中创建一个文件夹,并将其命名为photos。这个我们后面也会提到。第八步:启动“迷你相册”服务器官方镜像中,迷你相册示例的Node服务代码已经部署在/data/release/qcloud-applet-album目录下。进入目录,如果是自己的服务器,请进入对应的文件夹。cd/data/release/qcloud-applet-album该目录下有配置文件config.js(如下图),根据注释修改对应的COS配置:module.exports={//节点监听端口numberport:'9993',ROUTE_BASE_PATH:'/applet',cosAppId:'填写激活COS时分配的APPID',cosSecretId:'填写秘钥SecretID',cosSecretKey:'填写秘钥SecretKey',cosFileBucket:'填写Createdpublicreadprivatewritebucketname',};另外,cd./routes/album/handlers,修改list.js,将constlistPath的值改为你Bucket下的图片存放路径。如果是根目录,修改为'/'。在当前的服务器代码中,这个值被设置为'/photos',如果你在第7步中没有创建这个目录,你将无法调试成功。小相册示例使用pm2管理Node进程,执行如下命令启动node服务:pm2startprocess.json第九步:配置“小相册”通信域名接下来,打开“小相册”项目微信开发者工具,将源文件config.js中的通信域名host设置为你申请的域名。将蓝框内容改成自己的域名,点击Debug,打开小相册demo开始体验。最后提醒一下,目前微信小程序提供的上传下载接口在调试工具中无法正常使用,需要使用手机微信扫码预览体验。但由于我们没有内测资格,所以暂时无法体验。嗯,这还不够酷,没有内测邀请。更新:腾讯云另外写了3个demo小程序教程,大家也可以看看。