什麼是微信小程式?
微信小程式是騰訊於2017年1月9日推出的一種不需要下載安裝即可在微信平臺上使用的應用,主要提供給企業、政府、媒體、其他組織或個人的開發者在微信平臺上提供服務。截止2018年3月,微信小程式使用者規模突破4億,小遊戲類微信小程式佔比達28%。
小程式是一種新的開放能力,開發者可以快速地開發一個小程式。小程式可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。本文將帶感興趣的小夥伴從0到1部署一遍小程式,以便大家快速熟悉小程式整套開發流程。
如何選擇小程式Demo在GitHub上,分享分享小程式Demo可不少,但是僅僅只停留在API呼叫及靜態資料展示層面,本教程想給大家展現的是將小程式與服務端無縫結合使用,最終,我們參考騰訊雲推出的小程式體驗demo微信小程式使用者資源上傳COS示例,也就是小程式的小相簿專案。
根據官方文件,小相簿是結合騰訊雲物件儲存服務(Cloud Object Service,簡稱COS)製作的一個微信小程式示例。在程式碼結構上包含如下兩部分:
applet: 小相簿應用包程式碼,可直接在微信開發者工具中作為專案開啟server: 搭建的 Node 服務端程式碼,作為伺服器和applet通訊,提供 CGI 介面示例用於拉取 COS 圖片資源、上傳圖片到 COS、刪除 COS 圖片等。小相簿主要功能如下:列出 COS 伺服器中的圖片列表點選左上角上傳圖片圖示,可以呼叫相機拍照或從手機相簿選擇圖片,並將選中的圖片上傳到 COS 伺服器中輕按任意圖片,可進入全屏圖片預覽模式,並可左右滑動切換預覽圖片長按任意圖片,可將其儲存到本地,或從 COS 中刪除現在,就讓我們開始學習如何部署這個Demo吧!
搭建小程式開發環境開發小程式的第一步,你需要擁有一個小程式帳號,通過這個帳號你就可以管理你的小程式。
申請賬號
點選 https://mp.weixin.qq.com/wxopen/waregister?action=step1 根據指引填寫資訊和提交相應的資料,就可以擁有自己的小程式帳號。
如果你註冊過小程式,可以點選右側的立即登入。如果沒有的話,請重新註冊,值得注意的是,郵箱必須填寫未在微信公眾平臺、未在微信開放平臺、個人未繫結的郵箱,不然這裡是無法註冊的。密碼請填寫你能記住的密碼即可。
現在登入https://mp.weixin.qq.com/,點選左側的設定——開發設定,在這裡,我們就能看到你小程式的AppID了。
當小程式的ID拿到之後,我們就可以下載安裝開發工具了。
安裝開發工具現在,開啟 開發者工具下載頁面 ,根據自己的作業系統下載對應的安裝包進行安裝。
之後,就可以開始執行開發者工具了。使用前需要我們掃描二維碼才能開始使用,請開啟微信,然後點擊發現——掃一掃,掃描開發者工具展示的二維碼,之後在手機上點選登入即可。
建立“小相簿”專案
在建立“小相簿”專案之前,我們需要下載“小相簿”原始碼檔案,你可以直接點選這裡下載官方的DEMO檔案,也可以去官方GitHub倉庫拉取,以便獲取最新的程式碼。我這裡使用Git命令獲取官方最新原始碼。
接下來,開啟該專案app目錄下的檔案,我們會看到類似這樣的一個目錄。
app.js 是小程式入口檔案app.json 是小程式的微信配置,其中指定了本示例的使用者資源上傳頁面indexpages目錄 內包含各個頁面的入口和配置,業務邏輯,如index目錄則為index頁面之後,點選開發者中間首頁的小程式專案按鈕,專案目錄選擇你剛下載“小相簿”專案目錄,AppID寫第一步自己獲取到的。專案名稱可自行填寫,我這裡填寫為小相簿。然後點選確定按鈕即可。
之後,等待十幾秒,微信開發者工具初始化之後,你將會看到系統模擬的小程式的頁面。目前我們還沒有配置伺服器,該小程式暫時無法使用,我們需要做一些準備工作。
準備域名和證書在微信小程式中,所有的網路請求受到嚴格限制,不滿足條件的域名和協議無法請求,具體包括:
只允許和在 微信公眾平臺 中配置好的域名進行通訊,如果還沒有域名,需要 註冊域名。網路請求必須走 HTTPS 協議,所以你還需要為你的域名 申請一個證書。註冊域名我們可以在這裡註冊購買自己喜歡的域名,最低價格僅1元/年!我們就從中挑選一個吧,這裡我以域名techeek.cn為例。當我們註冊完域名後,就需要將你的域名解析到你的伺服器了。
新增完成後我們就可以開始解析這個域名了,點選你購買域名操作中的解析按鈕。在之後頁面中,點選新增記錄。在之後的頁面中,填寫新的記錄。主機記錄可以隨意填寫,我這裡填寫為weixin,值得注意的是,這裡填寫的內容就是你域名的二級域名開頭的地址,比如我的一級域名為techeek.cn,那麼填寫完我的完成域名為www.210z.com。接下來,在記錄型別處,如果你指向的為雲伺服器,我們填寫A記錄即可。線路型別我們填寫為預設,之後在記錄值處填寫你的伺服器IP,我這裡伺服器的IP是***.***.***.***。那麼我在解析記錄裡填寫***.***.***.***即可,具體如圖。
等解析完成後,我們可以測試下你的域名是否指向了你的伺服器,我們在你的Windows電腦上按下Win鍵+R鍵,然後輸入cmd,在彈出的命令提示符視窗中輸入你剛設定的域名,我這裡以www.210z.com為例,這裡請改成你自己的域名。
我們檢查返回的IP地址是否為你剛才設定的地址,如果是,則證明設定成功,可以開始下一步了。
申請證書之後,我們需要申請SSL證書,可以點選這裡申請騰訊雲提供的免費證書,在購買頁面,選擇域名型免費版(DV)證書。
然後點選免費快速申請按鈕。之後,我們需要在通用名稱處填寫你剛申請並繫結伺服器的域名,在申請郵箱處填寫你能收到郵件的郵箱。密碼預設留空,我們點選下一步。
若你的域名在騰訊雲申請解析,那麼可以直接點選圖中的自動DNS驗證,如果是其他服務商解析,請點選手動DNS驗證或檔案驗證,本文將僅介紹自動DNS驗證,其他驗證方式請前往您域名註冊的服務商處查詢。
配置伺服器小相簿的伺服器執行程式碼和配置已經打包成騰訊雲 CVM 映象,大家可以直接使用。如果你和我一樣,已經擁有了一臺伺服器,那則可以重灌系統選擇已有映象進行部署。騰訊雲使用者可以免費領取禮包,體驗騰訊雲小程式解決方案。
之後我們通過SSH方式登入伺服器,登入伺服器可以參考下面的教程。
連線伺服器首先檢查你的伺服器安全組設定,確保其開放SSH使用的22和HTTP訪問使用80埠,建議先開啟全部埠。然後我們通過SSH軟體登入伺服器,如果你本地電腦是Windows情況下可以使用putty等軟體,Linux及MacOS請使用終端進行連線。
我這裡以MobaXterm的終端軟體為例,點選左上角的Session按鈕,選擇以SSH方式連線,在Remote host輸入你的伺服器的公網IP地址,Specify username輸入你的使用者名稱,如果你的伺服器是Ubuntu系統,請輸入ubuntu如果是CentOS系統則輸入root。這裡我們是CentOS系統,所以我們輸入root。
這樣,你就進到你的伺服器的頁面了。
配置HTTPS映象預設中已經部署了Nginx服務,在啟動Nginx之前,我們需要對其進行配置。開啟/etc/nginx/conf.d下修改配置中的域名、證書、私鑰。首先,上傳你在準備域名證書步驟中下載的證書。我們先將其解壓出來,然後再將其上傳到伺服器的/etc/nginx/ssl目錄下。
然後,耐心等待系統上傳完成。我們輸入開啟/etc/nginx/ssl目錄然後使用ls命令檢視是否上傳完成。
接下來,我們就可以開始對Nginx進行配置啦!開啟Nginx配置目錄/etc/nginx/conf.d
我們看到有一個名為www.qcloud.la.conf的配置,我們需要將其改成自己的配置。首先對齊進行重新命名,將其的域名更換為你自己的域名。
mv www.qcloud.la.conf www.210z.com.conf然後,使用nano命令對其進行編輯
nano www.210z.com.conf將全部的www.qcloud.la替換成你的域名,我這裡以www.210z.com.conf為例。
server { listen 80; listen 443 ssl; server_name weixin.techeek.cn; charset utf-8; access_log logs/www.210z.com.access.log main; error_log logs/www.210z.com.error.log; ssl on; ssl_certificate ssl/1_www.210z.com_bundle.crt; ssl_certificate_key ssl/2_www.210z.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1; ssl_ciphers HIGH:!aggNULL:!MD5; ssl_prefer_server_ciphers on; include conf.d/partials/*.conf;}注意:ssl_certificate ssl/1_www.210z.com_bundle.crt;和ssl_certificate_key ssl/2_weixin.techeek.cn.key;這兩行名稱一定要和你上傳檔案的名稱相同!
之後,我們就可以啟動Nginx了,輸入Nginx啟動HTTP服務。
nginx然後,開啟你的瀏覽器,訪問https://www.210z.com這裡替換成你的域名,字首一定要是https。
如果你和我一樣有一個小鎖標誌。恭喜你,配置完成!
開通COS小相簿示例的圖片資源是儲存在 COS 上的,要使用 COS 服務,需要登入 COS 管理控制檯,然後在其中完成以下操作,注意,本Demo不支援COS V5版本,使用前請先確定你建立的儲存桶的版本。
建立並設定
這裡的名稱請按自己需求填寫,名稱無所謂,但請記住,後面要用到,地區請選擇你能訪問的就近區域。訪問許可權一定要設定成公有讀私有寫,然後點選確定按鈕。接下來,我們進入這個剛剛建立的儲存桶,然後點選域名設定。
開通 COS 得到APP ID及金鑰對然後,我們點選左側的金鑰管理,在這個頁面,點選「雲 API 金鑰」按鈕,獲取我們的API。
然後點選新彈出頁面點選+新建金鑰按鈕,系統會自動建立一個金鑰。我們在這裡獲得APPID和SecretId,然後點選SecretKey旁邊的顯示,獲取SecretKey。
啟動小相簿服務一切準備就緒,終於可以在伺服器端啟動我們小相簿的服務了。開啟我們的伺服器SSH頁面。在剛才部署的映象中中,小相簿示例的 Node 服務程式碼已部署在目錄/data/release/qcloud-applet-album下,進入該目錄:
cd /data/release/qcloud-applet-album在該目錄下有個名為config.js的配置檔案,按註釋修改對應的 COS 配置:
nano config.js修改對應的 COS 配置
module.exports = { // Node 監聽的埠號 port: '9993', ROUTE_BASE_PATH: '/applet', cosAppId: '填寫開通 COS 時分配的 APP ID', cosSecretId: '填寫金鑰 SecretID', cosSecretKey: '填寫金鑰 SecretKey', cosFileBucket: '填寫建立的公有讀私有寫的bucket名稱',};這裡填寫你上一步設定的APPID、SecretID、SecretKey、及bucket名稱,如圖
然後按下鍵盤上的Ctrl+X,按下鍵盤上的Y鍵,之後敲下回車即可儲存。接下來,我們就可以啟動小相簿示例了,預設使用pm2管理 Node 程序,執行以下命令啟動 node 服務
pm2 start process.json看到類似下面的輸出,代表啟動成功。
配置通訊域名域名註冊及證書申請好之後,可以登入 微信公眾平臺 配置通訊域名了。我們點選微信公眾號右側的設定,然後找到伺服器域名配置。
進入微信公眾平臺管理後臺設定伺服器配置,配置類似如下設定。需要將 weixin.techeek.cn 設定為上面申請的域名,將 downloadFile 合法域名設定為在 COS 管理控制檯中自己建立的 bucket 的相應 預設加速域名,如下圖所示。
啟動小相簿 Demo現在,剩下最後一個步驟,在微信開發者工具將小相簿應用包原始碼新增為專案,並把原始檔config.js中的通訊域名修改成上面申請的域名。
然後點選介面的除錯按鈕。這裡有個問題。截止目前為止,微信小程式提供的上傳和下載 API 無法在除錯工具中正常工作,需要用手機微信掃碼預覽體驗。我們點選開發者工具介面的真機除錯按鈕,然後掃描二維碼,即可開始體驗自己部署開發的小程式!
接下來,你就可以看到當前的除錯視窗,快上傳幾個檔案試試吧!
主要功能實現上傳圖片
上傳圖片使用了微信小程式提供的wx.chooseImage(OBJECT)獲取需要上傳的檔案路徑,然後呼叫上傳檔案介面wx.request(OBJECT)傳送 HTTPS POST 請求到自己指定的後臺伺服器。和傳統表單檔案上傳一樣,請求頭Content-Type也是multipart/form-data。後臺伺服器收到請求後,使用 npm 模組 multiparty 解析 multipart/form-data 請求,將解析後的資料儲存為指定目錄下的臨時檔案。拿到臨時檔案的路徑後,就可直接呼叫 COS SDK 提供的檔案上傳 API 進行圖片儲存,最後得到圖片的儲存路徑及訪問地址(儲存的圖片路徑也可以直接在 COS 管理控制檯看到)。
獲取圖片列表
呼叫列舉目錄下檔案&目錄 API可以獲取到在 COS 服務端指定 bucket 和該 bucket 指定路徑下儲存的圖片。
下載和儲存圖片
指定圖片的訪問地址,然後呼叫微信小程式提供的wx.downloadFile(OBJECT)和wx.saveFile(OBJECT)介面可以直接將圖片下載和儲存本地。這裡要注意圖片訪問地址的域名需要和伺服器配置的 dowmloadFile 合法域名一致,否則無法下載。
總結怎麼樣,學會了嗎?文中涉及的產品大部分都是免費使用的,如果只是想學習簡單的Demo搭建,大家可以在活動時間以超低價格拿到伺服器進行學習,當然啦,後續長時間使用,也可以購買一臺伺服器進行搭建哦!