微信小程序個人筆記

2017.02.06 版本

tabBar

tabBar 是一個數組,只能配置最少2個、最多5個 tab,tab 按數組的順序排序

邏輯層(App Service)

小程序開發框架的邏輯層是由JavaScript編寫。
邏輯層將數據進行處理后發送給視圖層,同時接受視圖層的事件反饋。 在 JavaScript 的基礎上,我們做了一些修改,以方便地開發小程序。

  • 增加 AppPage 方法,進行程序和頁面的注冊。
  • 增加 getApp 和 getCurrentPages 方法,分別用來獲取 App 實例和當前頁面棧。
  • 提供豐富的 API,如微信用戶數據,掃一掃,支付等微信特有能力。
  • 每個頁面有獨立的作用域,并提供模塊化能力。
  • 由于框架并非運行在瀏覽器中,所以 JavaScript 在 web 中一些能力都無法使用,如 document,window 等。
  • 開發者寫的所有代碼最終將會打包成一份 JavaScript,并在小程序啟動的時候運行,直到小程序銷毀。類似 ServiceWorker,所以邏輯層也稱之為 App Service。

App

  • App() 必須在 app.js 中注冊,且不能注冊多個。
  • 不要在定義于 App() 內的函數中調用 getApp() ,使用 this 就可以拿到 app 實例。
  • 不要在 onLaunch 的時候調用 getCurrentPage(),此時 page 還沒有生成。
  • 通過 getApp() 獲取實例之后,不要私自調用生命周期函數。

Page.prototype.setData()

  • setData 函數用于將數據從邏輯層發送到視圖層,同時改變對應的 this.data 的值。
  • 直接修改 this.data 無效,無法改變頁面的狀態,還會造成數據不一致。
  • 單次設置的數據不能超過1024kB,請盡量避免一次設置過多的數據。

getCurrentPages()

不要嘗試修改頁面棧,會導致路由以及頁面狀態錯誤。

Page 實例的生命周期

mina-lifecycle.png

Bug & Tip

  1. bug: iOS/Android 6.3.30, 首次進入頁面,如果頁面不滿一屏時會觸發 onReachBottom ,應為只有用戶主動上拉才觸發;
  2. bug: iOS/Android 6.3.30, 手指上拉,會觸發多次 onReachBottom ,應為一次上拉,只觸發一次;

網絡

  • 發起請求
  1. 網絡請求的 referer 是不可以設置的,格式固定為 https://servicewechat.com/{appid}/{version}/page-frame.html, 其中 {appid} 為小程序的 appid,{version} 為小程序的版本號,版本號為 0 表示為開發版。
  2. data 數據說明 最終發送給服務器的數據是 String 類型,如果傳入的 data 不是 String 類型,會被轉換成 String 。
    轉換規則如下:
    對于 header['content-type'] 為 'application/json' 的數據,會對數據進行 JSON 序列化
    對于 header['content-type'] 為 'application/x-www-form-urlencoded' 的數據,會將數據轉換成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
  3. content-type 默認為 'application/json'
    bug: 開發者工具 0.10.102800 版本,header 的 content-type 設置異常;
  4. 客戶端的 HTTPS TLS 版本為1.2,但 Android 的部分機型還未支持 TLS 1.2,所以請確保 HTTPS 服務器的 TLS 版本支持1.2及以下版本;
  5. 要注意 method 的 value 必須為大寫(例如:GET);
  6. url 中不能有端口;
  7. request 的默認超時時間和最大超時時間都是 60s
  8. request 的最大并發數是 5
  9. wx.request請求,method設為POST時,加上header: {'content-type': 'application/x-www-form-urlencoded'}可以正常獲取數據
  • 上傳
  1. 最大并發限制是 10 個
  2. 默認超時時間和最大超時時間都是 60s
  • 下載
  1. 最大并發限制是 10 個
  2. 默認超時時間和最大超時時間都是 60s
  3. 網絡請求的 referer 是不可以設置的,格式固定為 https://servicewechat.com/{appid}/{version}/page-frame.html, 其中 {appid} 為小程序的 appid,{version} 為小程序的版本號,版本號為 0 表示為開發版。
  4. 6.5.3 以及之前版本的 iOS 微信客戶端 header 設置無效
  • WebSocket
  1. 如果 wx.connectSocket 還沒回調 wx.onSocketOpen,而先調用 wx.closeSocket,那么就做不到關閉 WebSocket 的目的。必須在 WebSocket 打開期間調用wx.closeSocket 才能關閉
  2. createSocket 鏈接默認和最大超時時間都是 60s
  3. 網絡請求的 referer 是不可以設置的,格式固定為 https://servicewechat.com/{appid}/{version}/page-frame.html, 其中 {appid} 為小程序的 appid,{version} 為小程序的版本號,版本號為 0 表示為開發版。
  • 媒體
  1. 文件的臨時路徑,在小程序本次啟動期間可以正常使用,如需持久保存,需在主動調用 wx.saveFile,在小程序下次啟動時才能訪問得到。
  2. 錄音: wx.startRecord 接口需要用戶授權,請兼容用戶拒絕授權的場景。
  3. 控制音樂播放進度:iOS 6.3.30 wx.seekBackgroundAudio 會有短暫延遲
  • 文件
  1. 本地文件存儲的大小限制為 10M
  2. 新開頁面打開文檔,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx
  • 數據緩存
  1. 本地數據存儲的大小限制為 10MB
  • 位置
  1. iOS 6.3.30 type 參數不生效,只會返回 wgs84 類型的坐標信息
  2. wx.getLocation、wx.chooseLocation 接口需要用戶授權,請兼容用戶拒絕授權的場景。
  • 設備
  1. 獲取網絡類型 wifi/2g/3g/4g/unknown(Android下不常見的網絡類型)/none(無網絡)
  • 重力感應、羅盤
  1. 監聽重力感應數據,頻率:5次/秒
  2. 監聽羅盤數據,頻率:5次/秒
  • 交互反饋
  1. Android 6.3.30,wx.showModal 的返回的 confirm 一直為 true;
  2. wx.showActionSheet 點擊取消或蒙層時,回調 fail, errMsg 為 "showActionSheet:fail cancel"
  • 導航
  1. 為了不讓用戶在使用小程序時造成困擾,我們規定頁面路徑只能是五層,請盡量避免多層級的交互方式。
  2. wx.navigateTo 和 wx.redirectTo 不允許跳轉到 tabbar 頁面,只能用 wx.switchTab 跳轉到 tabbar 頁面
  • 開發接口
  • 登錄
  • 用戶信息
    • wx.getUserInfo 接口需要用戶授權,請兼容用戶拒絕授權的場景
    • 接口如果涉及敏感數據(如wx.getUserInfo
      當中的 openId 和unionId ),接口的明文內容將不包含這些敏感數據。開發者如需要獲取敏感數據,需要對接口返回的加密數據( encryptedData )進行對稱解密。
  • 微信支付
    • 6.5.2 及之前版本中,用戶取消支付不會觸發 fail 回調,只會觸發 complete 回調,回調 errMsg 為 'requestPayment:cancel'
  • 模板信息
    • 微信6.5.2及以上版本支持模板功能。低于該版本將無法收到模板消息
  • 分享
    • 享圖片不能自定義;會取當前頁面,從頂部開始,高度為 80% 屏幕寬度的圖像作為分享圖
  • 獲取二維碼
    • 通過該接口,僅能生成已發布的小程序的二維碼。
    • 可以在開發者工具預覽時生成開發版的帶參二維碼。
    • 帶參二維碼只有 100000 個,請謹慎調用。
    • POST 參數需要轉成 json 字符串,不支持 form 表單提交。

組件

  • input
  1. 微信版本 6.3.30, focus 屬性設置無效;
  2. 微信版本 6.3.30, placeholder 在聚焦時出現重影問題;
  3. input 組件是一個 native 組件,字體是系統字體,所以無法設置 font-family;
  4. 在 input 聚焦期間,避免使用 css 動畫;
  • textarea

    1. 微信版本 6.3.30,textarea 在列表渲染時,新增加的 textarea 在自動聚焦時的位置計算錯誤。
    2. textarea 的 blur 事件會晚于頁面上的 tap 事件,如果需要在 button 的點擊事件獲取 textarea,可以使用 form 的 bindsubmit。
    3. 不建議在多行文本上對用戶的輸入進行修改,所以 textarea 的 bindinput 處理函數并不會將返回值反映到 textarea 上。
    4. textarea 組件是由客戶端創建的原生組件,它的層級是最高的。
    5. 請勿在 scroll-view 中使用 textarea 組件。
    6. css 動畫對 textarea 組件無效。
  • map

  1. map 組件是由客戶端創建的原生組件,它的層級是最高的。
  2. 請勿在 scroll-view 中使用 map 組件。
  3. css 動畫對 map 組件無效。
  • canvas
  1. canvas 組件是由客戶端創建的原生組件,它的層級是最高的。
  2. 請勿在 scroll-view 中使用 canvas 組件。
  3. css 動畫對 canvas 組件無效。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容