騰訊推出微信小程序也有一段時間了,在各類行業裏面也都掀起一陣陣的熱潮,不少APP應用被簡化爲小程序的功能迅速推出,同時也根據小程序的特性推出各類獨具匠心的應用,相對傳統的APP來講,微信小程序確實可以大大下降開發成本和難度,但也意味着須要掌握整個微信小程序的各類接口功能、應用場景等相關技術點,本篇隨筆先從大的方面來介紹微信小程序開發的一些知識,如架構設計、技術路線 、工具準備等方面作一些淺薄的介紹,但願你們也有所收益,有所借鑑,則善莫大焉。html
在咱們開發各類應用的時候,老是但願可以先從大的方向上探索整個業務場景,儘量的不用形成後期的返工或者推倒重來,這種代價是很是高昂的,所以前期花些時間來作一下總體的規劃,而後在具體化各個業務模塊的開發纔是比較合理的作法。前端
業務數據的集中化,是不少企業的在數據化浪潮中賴以生存的核心,各行各業都有本身的業務數據,有些企業掌握着重要的行業數據,一旦數據成了規模,就能夠對外提供接口,實現數據業務的營收,也是一項很是不錯的收入,同時也是企業的核心競爭力。react
無論數據是部署在阿里雲、騰訊雲等雲產品上,仍是部署在自家的服務器上,都是數據集中化的表現之一,圍繞着數據集中化,那麼各類應用就有一個統一的API接口的需求,這種統一API能夠稱爲統一平臺,也能夠稱爲統一接口,都有不一樣的稱呼。ios
隨着基於JSON格式的Web API的普遍應用,愈來愈多的企業採用Web API接口服務層,做爲統一接口的核心所在,也成爲Web API核心層。基於JSON格式的接口,能夠普遍地、跨平臺的應用於IOS、安卓等移動端,也能夠應用在常規的Web業務系統,Winform業務系統、微信應用、微信小程序等方方面面,所以企業內部造成本身是的一套Web API標準和詳細的文檔很是重要,一旦完善了,就能夠供各個業務場景使用,這些業務能夠外包給其餘軟件公司或者團隊,各自分離開發,而本身內部則只須要花費精力來統一維護Web API核心層和提升整個核心層的功能接口穩定、緩存處理等方面事情便可。其餘業務團隊開發的系統只須要遵循整個大接口平臺的統一規劃,完成各自的功能需求便可,不會形成數據庫的不一致,更不會讓某家公司掌握核心的技術資源,尾大不掉的尷尬情形。git
基於上面的分析,咱們企業最終圍繞着Web API核心層作了不一樣的業務應用,以下圖所示。github
基於Web API核心層的性能考慮,咱們通常它們分開處理,通常後端有一個數據庫應用服務器,一個Web API服務器,甚至可能還有一個專門處理FTP文件的文件服務器(可選),若是還須要創建Web後臺應用,可能還須要一個或者多個Web 應用服務器,從而分散服務器的IO壓力和計算壓力,若是還須要考慮更加周全一些,還須要一個MQ服務器處理重要訂單數據、緩存服務器存儲緩存數據、負載均衡服務器等等。數據庫
最簡化的要求,至少有一個雲端數據庫服務器和一個Web API服務器,這些服務器羣構成一個Web API一體化應用的場景,以下所示。canvas
考慮到Web API的分層,咱們能夠經過下圖來了解具體的分層結構,從而爲咱們實際的開發作一些鋪墊。小程序
微信小程序的開發準備,咱們首先須要在官網上註冊帳號,而後綁定本身的認證的帳號便可,這些我能夠參考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 中的全部WXML 標籤觸發命令都以'w'開頭,全部 API相關命令都以'api'開頭.
命令 | 對應組件或命令 |
---|---|
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 |
命令 | 對應組件或命令 |
---|---|
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 | 撥打電話 |
咱們知道小程序爲了提升安全性,作了不少方面的限制,其中有一條就是要求使用HTTPS這種安全性協議來獲取數據,以下所示。
所以要求咱們的Web API接口必須統一使用HTTPS(其實這也是常規的作法),這就要求咱們必須在網站提供443端口服務,須要加入HTTPS證書,這種證書能夠從雲服務商上購買,如騰訊雲、阿里雲上的雲服務器後臺都提供了購買證書服務的通道,固然HTTPS證書年費可不算便宜,但咱們也可使用簡單的免費證書先用着。
以阿里云爲例,使用阿里雲帳號登錄後,在【控制檯】【安全雲盾】【證書服務】裏面進行申請。
而後選擇購買證書,在購買證書界面上,選擇免費的證書,錄入相關的資料後提交便可。
購買後,會在訂單列表裏面有一個待審覈的訂單,以下所示,等待審覈經過便可使用。
有了這些準備,咱們就能夠在服務器上綁定對應的端口,提供HTTPS協議的接口訪問了。
剩下的事情就是關注咱們Web API核心接口上的事情,這個方面能夠在另一個主題上進行介紹。