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

爲何是小程序?

爲何咱們會開發小程序呢?或許是由於工做須要,或許是源於本身的追求(來自名利的慾望),但我要說——這是一種緣分,很美好的緣分,不少年後還值得慶幸的緣分
  • 小程序目前能夠分爲三個階段程序員

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

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

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

      • 做爲一個月活超10億的超級app,人口紅利已達天花板,因此如今開始打時長紅利的主意,拓展微信的使用場景,拓寬微信的邊界
      • 馬化騰親口說過:從消費互聯網到產業互聯網,隨着產業互聯網時代的到來,咱們也在「鏈接產業」上尋求突破,而小程序就是鏈接產業互聯網的「利器」,什麼是產業互聯網?簡單理解就是互聯網+的馬化騰版,是經過大數據、互聯網等技術給B端/產業賦能的東東,這麼說是否是就理解了「利器」一說,不只給咱們衆多程序員創業的機會,也讓他們以最低成本遇上互聯網的快車啊
      • 賺錢啊!鵝廠的夢想啊!

作什麼樣的小程序?

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

小程序os長什麼樣?

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

clipboard.png

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

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

clipboard.png

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

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

來看下生命週期 瀏覽器

clipboard.png

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

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

有用請點贊🙏
下一篇:微信小程序之登陸態的探索微信

相關文章
相關標籤/搜索