「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试。但是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面)。本觉得没有 AppID 这个月就与小程序无缘了,庆幸的是微信这两天发布了正式版开发者工具,无需内测邀请也能够尝鲜了。
所以也就有了我与「小程序」的初体验,而个人感觉只有一个字——爽!html
在知名同性交友网站 Github 上,「小程序」的 Demo 很多,可是大多只是简单的 API 演示,有的甚至直接把页面数据写在了 json 文件里(分明有网络请求 API)。我想体验的是可以将服务端和小程序端无缝链接起来(体验够爽)的项目。最终,我选择了腾讯云官方推出的「小相册」项目。
「小相册」主要实现了如下功能:node
对象存储服务(Cloud Object Service)是腾讯云推出的面向企业和我的开发者提供的高可用,高稳定,强安全的云端存储服务。能够将任意数量和形式的非结构化数据放入COS,并在其中实现数据的管理和处理。
之因此选择腾讯云的 Demo,一是由于它是腾讯自家推出的,项目的质量有保障;二是由于它是少有的既讲小程序开发,又介绍云端部署的项目。
稍微有点经验的程序员都知道,架构要动静分离,静态文件最好不要放在本身的服务器上,要放在专门用来存储的对象存储服务器COS上,而且用CDN 加速。「小相册」后端采用的是 Node.js,Nginx做为反向代理。nginx第一步:搭开发环境
首先,咱们须要在本地搭建好微信「小程序」的开发环境。即下载开发者工具。微信官方已经推出了正式版 IDE,你们没有必要再去下载破解版了。打开官网下载页面,根据本身的操做系统选择。我使用的是 Mac 版。
安装好以后打开运行,会要求微信扫码登录。以后,就能够看到建立项目的页面了。
选择添加项目,没有 AppID 就选无(若是乱写会报错,到时可能没法进入项目)。若是你选择的项目目录为空,请如图所示勾选在“当前目录中建立quick start项目”。
点击“添加项目”以后,咱们会进入开发工具的调试页面。git第二步:下载「小相册」源码
接下来,咱们下载「小相册」的源码。能够选择直接从腾讯云官网提供的连接下载,也能够从腾讯云团队的 Github 仓库拉取。我推荐从 Github 仓库拉取,这样能够及时获取最新的代码。
git clone https://github.com/CFETeam/weapp-demo-album.git
最终,咱们会获得相似这样的文件目录。
简单解释下目录结构:程序员
app.js
(小程序逻辑)、app.json
(小程序公共设置)和 app.wxss
(小程序公共样式表),其中前两个为必备文件。config.js
文件中包含了一些部署域名的设置,如今不用管。index.wxml
是这个页面的表现层文件,其中的代码很是简单,能够分为上下两大部分。 <view> <view class="page-top"> <text class="username">恭喜你</text> <text class="text-info">成功地搭建了一个微信小程序</text> <view class="page-btn-wrap"> <button class="page-btn" bindtap="gotoAlbum">进入相册</button> </view> </view> <view class="page-bottom"> <text class="qr-txt">分享二维码邀请好友结伴一块儿写小程序!</text> <image src="../../images/qr.png" class="qr-img"></image> <image src="../../images/logo.png" class="page-logo"></image> </view> </view>页面的演示效果以下:
index.wxml
中,咱们发现对应的 button 标签上定义了一个 bindtap
属性,绑定了一个叫作 gotoAlbum
的方法。而这个方法能够在 index.js
文件中找到。事实上,文件中也只定义了这一个方法,执行的具体动做就是跳转到 album 页面。 Page({ // 前往相册页 gotoAlbum() { wx.navigateTo({ url: '../album/album' }); }, });
album.js
页面中编写了程序的主要逻辑,包括选择或拍摄图片、图片预览、图片下载和图片删除;album.wxml 中三种视图容器 view、scroll-view、swiper均有使用,还提供了消息提示框 toast。具体方法和视图的实现请查看项目源码。全部的这些功能都写在 Page 类中。/etc/nginx/conf.d
下修改配置中的域名、证书、私钥。proxy_pass
设置为 Node.js 监听的端口,个人是 9993。sudo service nginx reload sudo service nginx restart
/data/release/qcloud-applet-album
下。进入该目录,若是是你本身的服务器,请进入相应的文件夹。 cd /data/release/qcloud-applet-album
在该目录下,有一个名为 config.js
的配置文件(以下所示),按注释修改对应的 COS 配置: module.exports = { // Node 监听的端口号 port: '9993', ROUTE_BASE_PATH: '/applet', cosAppId: '填写开通 COS 时分配的 APP ID', cosSecretId: '填写密钥 SecretID', cosSecretKey: '填写密钥 SecretKey', cosFileBucket: '填写建立的公有读私有写的bucket名称', };另外,
cd ./routes/album/handlers
,修改 list.js
,将 const listPath
的值修改成你的Bucket 下的图片存储路径。若是是根目录,则修改成 '/'
。当前服务端的代码中将该值设置为了 '/photos'
,若是你在第七步中没有建立该目录,则没法调试成功。pm2 start process.json
更新:腾讯云还写了另外3个demo的小程序教程,你们也能够看看。github