為什么寫本書
2017年1月9日,小程序如期發布,給本就異常火爆的前端領域又注入了一股新的力量,甚至很多公司已經開始招聘小程序開發者,其應用也呈現出蓬勃發展的趨勢。
然而開發人員中也出現了一些不同的聲音,有人認為它的出現又為前端領域增加了負擔,因為與現有的Web標準不同,它需要前端開發者開發了應用后,再去適配另一個小程序環境,以此來批評微信不擁抱標準,自立門戶,不夠開放。
實際上在我們看來,小程序并沒有為前端人員增加負擔,反而為前端開發者創造了新的價值。因為小程序是更接近原生APP的一個新的開發框架,不符合HTML5標準,在這個意義上,它實際上是為開發者提供了新的開發渠道,雖然小程序并未提供類似APP的應用商城為開發者帶來應用分發的經濟效益,但小程序本身內置提供支付功能的API,便于更快更方便地開發出既為用戶帶來價值又能為開發者或企業帶來收益的小程序應用,這本身對開發者和企業而言,有足夠的
想象和拓展空間。
另外,小程序雖然不符合現有的HTML5標準,但是依然沿用了JavaScript、CSS以及HTML的語法基礎,其JavaScript甚至支持ES6語法,并且小程序在這些基礎上做了不少的擴充,并引入了新的MINA框架,開發者需要采用該框架進行開發,但其上手難度對于較為熟練的前端開發人員來說,門檻非常低。而與“增加了前端人員負擔”的觀點相反,無論是在安卓、iOS平臺,還是平臺下不同屏幕大小的手機,微信都通過小程序框架,為小程序提供了一致的呈現效果,在這一點上,反而徹底將前端開發人員從機型適配的苦海中解脫了出來。
而且對于小程序開發,微信提供了完整的開發編譯環境,在這個層面上,也為前端人員節省了大量的環境架構工作量,使用微信開發者工具,可以立即著手
開發小程序。目前常用的小程序已超150個,基本涵蓋了生活中的大部分場景,且數量還在快速增加中。其帶來的價值正在悄然中迅猛到來,已經成為前端開發人員必須
掌握并提高自身價值的新技能。
如果說2016年沒有掌握Node.js開發的前端人員會失去競爭力的話,那么2017年,沒有熟練掌握微信小程序開發的前端人員,在前端開發人員隊伍中,也一樣會缺少競爭力。
本書特色與內容架構
循序漸進、由淺入深
作為一本開發者使用的學習參考書,本書講解知識點時,遵從循序漸進的原則,將所有需要掌握的知識點做了系統化的組織和編排,每講述一個知識點,均有相應的內容和案例解說,讓讀者在每一章節中都體會到自己的成長。
本書參考了官方文檔的知識結構,為了使讀者盡快入門,按照由淺入深的原則對章節進行了重新編排,幫助讀者快速上手。
案例生動翔實,圖示豐富
本書大部分案例都只針對相應的知識點,在完整介紹知識點的前提下盡可能精簡內容和代碼,讀者閱讀實例會感覺到非常輕松,學習知識點的時候,沒有多余知識點分散精力,集中掌握小程序開發的目標,降低學習成本和理解的難度。另外,在講解知識點時,對不容易理解的地方書中使用了豐富的圖表來展示,必要時用編號、標記等清楚地標記了操作的順序和重點,讓讀者把更多的精力放在開發和實踐中。
語言樸實,風趣幽默
雖然是一本講解編程方面的圖書,但本書并沒有采用教科書式的刻板語言,而是盡可能用通俗的語言,風趣地解讀其中的內容,力保讀者在輕松、愉悅的環境中完成學習。
適用讀者和致謝
本書寫作的目的是為了讓所有對小程序感興趣的人可以快速上手。
技術人員可以通過本書的技術開發章節快速了解小程序的開發以及調試方法;
創業者或產品經理可以從本書中迅速了解小程序的適用性以及優勢;
運營人員可以迅速入門掌握運營規范以及應該避免的問題。
讀者可以根據需要選擇不同的章節進行閱讀參考。
由于小程序更新頻繁,本書中所介紹的開發接口以及工具版本可能并不是當前的最新版,在一些細節上與最新版本的小程序可能會有些不同,讀者在具體動手開發時需要以官方的當前版本為準。
本書主要由沙拉依丁·蘇里坦與黃曦創作,寫作過程中得到了輕課CEO肖逸群的大力支持和鼓勵,以及輕課提供的平臺與資源,在此表示由衷的感謝。并感謝家人、朋友們以及同事們一直給予的幫助和鼓勵。
寫作過程中難免有所紕漏,歡迎讀者批評指正,并提出寶貴建議。
黃曦沙拉依丁·蘇里坦
2017年3月
第 1 章 小程序特點與開發邏輯 ......................1
1.1 互聯網正在變得越來越“輕” 1
1.2 什么是小程序 5
1.2.1 小程序的由來 5
1.2.2 小程序的發展與展望 6
1.3 你的產品適合做小程序嗎 9
1.4 小程序特色:即用即走 12
1.5 小程序與訂閱號、服務號的異同 13
1.6 消息推送與傳播分享 16
1.7 普通用戶怎么玩轉小程序 17
1.7.1 普通用戶啟動小程序方法 17
1.7.2 普通用戶在小程序里面能做什么 17
第 2 章 微信小程序開發申請入門與環境搭建 .................18
2.1 小程序申請方法以及流程 18
2.2 小程序開發環境搭建 20
第 3 章 初識微信小程序:小程的 HELLO WORLD ..............23
3.1 小程序 MINA 框架介紹 23
3.2 小程序基本結構 25
3.3 微信 WEB 開發者工具使用方法介紹 34
3.4 手把手教你做 DEMO――HELLO WORLD 小程序 38
3.4.1 Demo 的簡要編制步驟 38
3.4.2 驗證小程序可執行目錄結構 41
3.4.3 數據與事件的綁定 43
3.5 本章要點總結 46
第 4 章 微信小程序入門:小程序的開發方式 ................48
4.1 WXML 及其數據綁定 48
4.2 WXSS-小程序的 CSS 樣式 57
4.2.1 新的尺寸單位 rpx 57
4.2.2 樣式導入 58
4.2.3 內聯樣式 58
4.2.4 選擇器 59
4.3 事件 59
4.4 視圖容器 63
4.4.1 view 視圖容器 63
4.4.2 scroll-view 可滾動視圖區域 64
4.4.3 swiper 滑塊視圖容器 70
4.5 基礎內容 75
4.5.1 圖標組件 icon 75
4.5.2 文本組件 text 77
4.5.3 進度條組件 progress 78
4.6 導航 80
4.7 手把手教你做 DEMO――簡易通訊錄83
4.8 本章要點總結 93
第 5 章 小程序開發實戰:全面掌握小程序組件..............94
5.1 表單組件 94
5.1.1 按鈕組件 button 94
5.1.2 label 組件 97
5.1.3 多項選擇器組件 checkbox 101
5.1.4 單項選擇器組件 radio 105
5.1.5 滾動選擇器組件 picker 106
5.1.6 滑動選擇器組件 slider 114
5.1.7 開關選擇器組件 switch 116
5.1.8 輸入框組件 input 122
5.1.9 多行輸入框組件 textarea 128
5.1.10 表單組件 form 130
5.2 媒體組件 135
5.2.1 音頻組件 audio 136
5.2.2 視頻組件 video 139
5.2.3 圖片組件 image 147
5.3 地圖組件 MAP 150
5.4 畫布組件 CANVAS 154
5.5 手把手教你做 DEMO――用表單完善通訊錄 155
5.6 本章要點總結 158
第 6 章 小程序 API(1):網絡、媒體和緩存..................159
6.1 小程序接口規范 159
6.2 網絡 160
6.2.1 發起請求 160
6.2.2 上傳、下載 163
6.2.3 websocket 166
6.3 媒體 170
6.3.1 圖片 170
6.3.2 視頻 176
6.3.3 錄音 178
6.3.4 音頻播放控制 179
6.3.5 音樂播放控制 180
6.3.6 音頻組件控制 185
6.3.7 視頻組件控制 186
6.3.8 文件 187
6.4 數據緩存 191
6.4.1 wx.setStorage(OBJECT) 192
6.4.2 wx.setStorageSync(KEY,DATA) 193
6.4.3 wx.getStorage(OBJECT) 194
6.4.4 wx.getStorageSync(KEY) 195
6.4.5 wx.getStorageInfo(OBJECT) 195
6.4.6 wx.getStorageSync(KEY) 196
6.4.7 wx.removeStorage(OBJECT) 197
6.4.8 wx.removeStorageSync(KEY) 198
6.4.9 wx.clearStorage() 198
6.4.10 wx.clearStorageSync () 198
6.5 手把手教你做 DEMO―WEBSOCKET 從服務端 到小程序 199
6.5.1 安裝 node.js 環境 199
6.5.2 新建 app.js 文件響應請求 201
6.5.3 編寫小程序 205
6.5.4 發送 GET 請求 215
6.6 本章要點總結 217
第 7 章 小程序 API(2):位置、設備與界面設計 .................219
7.1 位置 219
7.1.1 wx.getLocation(OBJECT) 獲取位置 219
7.1.2 wx.chooseLocation(OBJECT) 打開地圖選擇位置 221
7.1.3 wx.openLocation(OBJECT) 使用微信內置地圖查看
位置 223
7.1.4 wx.createMapContext(mapId) 地圖組件控制 224
7.2 設備 226
7.2.1 wx.getNetworkType(OBJECT) 獲取網絡類型 226
7.2.2 wx.getSystemInfo(OBJECT) 獲取系統信息 227
7.2.3 wx.getSystemInfoSync () 獲取系統信息同步接口 228
7.2.4 wx.onAccelerometerChange(CALLBACK) 監聽重力
感應數據 228
7.2.5 wx.onCompassChange(CALLBACK) 監聽羅盤數據 229
7.2.6 wx.makePhoneCall(OBJECT) 撥打電話 230
7.3 界面 230
7.3.1 交互反饋 231
7.3.2 設置導航條 236
7.3.3 導航 237
7.3.4 動畫 239
7.3.5 繪圖 246
7.3.6 其他 255
7.4 手把手教你做 DEMO――小地圖 255
7.5 本章總結 259
第 8 章 小程序 API(3):開放接口 ........................261
8.1 登錄 261
8.1.1 wx.login(OBJECT) 261
8.1.2 wx.checkSession(OBJECT) 264
8.1.3 用戶數據的簽名驗證和加解密 265
8.2 用戶信息 268
8.2.1 wx.getUserInfo(OBJECT) 268
8.2.2 UnionID 機制 270
8.3 微信支付 270
8.4 客服消息 272
8.4.1 接收消息和事件 272
8.4.2 發送客服消息 276
8.4.3 臨時素材接口 277
8.5 分享 279
8.6 獲取二維碼 280
8.7 手把手教你做 DEMO――簡易登錄頁 281
8.8 本章總結 285