開發微信小程序必須要知道的事

爲什麼是小程序?

爲什麼我們會開發小程序呢?或許是因爲工作需要,或許是源於自己的追求(來自名利的慾望),但我要說——這是一種緣分,很美好的緣分,很多年後還值得慶幸的緣分
  • 小程序目前可以分爲三個階段

    • 一是語音和搖一搖(還有約炮利器的傳說)
    • 二是公衆號,也就是這時註定了小程序的出現是歷史的必然選擇(shihouzhuge),爲什麼這麼說呢?因爲微信在開方了webview的同時加入了js-sdk的開發工具包,而這就是小程序的前身
    • 三就是當下的微信os,能跑小程序的微信
  • 我們繼續來說說第二點,有了js-sdk不就可以了嗎?不就可以打通微信了嗎?還要什麼小程序?!可是人家是有夢想的鵝廠啊!!?

    • 先從技術上說,js-sdk只是爲傳統網頁提供包含微信api的開發工具包,並沒有解決移動網頁遇到的體驗不良問題,所以小程序就做了

      • 資源離線存儲,提高加載速度
      • 提供更強的開放能力
      • 通過構建組件系統實現對安全性的管控
      • 通過內置實現的組件提高開發速度和降低開發成本
      • 開放入口啊,不像網頁只能通過鏈接打開
      • 加上其他XXX就搞出了比擬原生的體驗(chadebushao)
    • 微信的夢想上說

      • 作爲一個月活超10億的超級app,人口紅利已達天花板,所以現在開始打時長紅利的主意,拓展微信的使用場景,拓寬微信的邊界
      • 馬化騰親口說過:從消費互聯網到產業互聯網,隨着產業互聯網時代的到來,我們也在“連接產業”上尋求突破,而小程序就是連接產業互聯網的“利器”(聽不懂什麼玩意)
      • 賺錢啊!鵝廠的夢想啊!

做什麼樣的小程序?

回到上面的引子,爲什麼值得慶幸?因爲上面說了——能降低開發成本,能提高用戶體驗,能褥流量!能讓每個人都有機會搞事情!!!搞什麼呢?我也不知道,如果你有好的想法歡迎聯繫我😄不過,這裏分享下我的想法
  • 戰線不能長!張小龍說過——"用完即走",其實這不是原因,只是我調個書袋而已😂但微信確實是這樣啊,聊天、朋友圈,好像確實沒什麼太喪心病狂的一直拉着你不走(好像現在還有看一看?始終記住——鵝廠有夢想!)所以你做的東西要符合人家產品的思想!好吧,說個實際的場景,如果你要在小程序裏的創作文章,那別人來一條信息你回不回?不回?你的思緒回不回被打亂?不會?你的心情會不會很煩?不會?👋你贏了,來生再見,所以權衡好你的功能設計,戰線越長越容易死
  • 短!平!快! 對應上面。就是快速進入主題,功能點一目瞭然,功能也儘量單一,該幹什麼儘快幹什麼!例如讓用戶分享,讓用戶付費,快!快!快!不猶豫,讓用戶儘快上車
  • 做矩陣,對應上面,如果你想做app的功能都搬到小程序上,那一定要做功能拆分,做多個小程序形成矩陣

小程序os長什麼樣?

想種一個小程序總先知道這片土地什麼樣吧?OK,歡迎來到小程序黑土地。。。

clipboard.png

  • 首先我們先說說小程序用到的兩個線程——渲染線程、腳本線程,與網頁開發不同,這兩個線程是分開的,分別運行在不同的線程中,而網頁則是互斥的,也就是說視圖和腳本被分開了,在不同的線程裏,這就導致了和普通網頁開發一個很大的不同——沒有DOM API,而且也不是運行在瀏覽器裏所以也沒有BOM API
  • 我們在看圖還發現小程序總共有三種運行環境,並且!每個環境兩個線程還都不一樣!所以同學們啊,在開發工具上行的在真機上不一定行啊!可別太天真了,一定要在真機上驗證功能的可行性!
  • 我們有沒有想過小程序爲什麼要費那麼大功夫重造輪子?不直接用成熟的web技術?說是體驗,其實我覺得最主要的是微信想管控一切,不是你想怎樣就可以怎樣,而是我讓你怎樣,你才能怎樣(至今我還對此很不爽)所以就幹掉了靈活的web,需要提醒的是——小程序並不是完全沒有了web,實際上你看到的就是web,只是沒有暴露出來,而是微信直接通過編譯小程序來操作

既然是兩個線程,那必然要通信啊,要協作完成任務,那怎麼實現的呢?看下面的通信模型

clipboard.png

沒看到圖也能先想到是這個樣式😊,這裏提示幾點

  • 上圖中的Native是指微信客戶端
  • 邏輯層發送網絡請求也經由Native轉發
  • 渲染層是由多個webview組成的,爲什麼?爲了提供更好的交互體驗呀,這樣也更貼近原生體驗,同時避免了單個WebView的任務過於繁重,同時導致了小程序的生命週期不容易被理解(下面帶你理解)
  • 通信是有時間成本的,所以在開發中我們最好使用異步接口

來看下生命週期

clipboard.png

  • 其實瞭解了渲染層是由多個webview組成的就很容易理解生命週期了

    • navigatebBack是返回上一個webview,銷燬當前的webview
    • navigateTo是打開承載新頁面的webview,同時保留老的webview
    • redirectTo是在當前webview裏打開新的頁面
  • 左下角有兩張拼一起的圖是switchTab的
  • Tabbar頁面初始化之後不會被銷燬!所以Tabbar頁面不會unLoad,更多請參閱圖片

有用請點贊🙏
下一篇文章將講講小程序的登錄態💪

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章