「小程序」這個劃時代的產品發佈快一週了,互聯網技術人都在摩拳擦掌,躍躍欲試。但是小程序目前還在內測,首批只發放了 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