為什么是小程序?
為什么我們會開發(fā)小程序呢?或許是因為工作需要,或許是源于自己的追求(來自名利的欲望),但我要說——這是一種緣分,很美好的緣分,很多年后還值得慶幸的緣分
做什么樣的小程序?
回到上面的引子,為什么值得慶幸?因為上面說了——能降低開發(fā)成本,能提高用戶體驗,能褥流量!能讓每個人都有機會搞事情?。?!搞什么呢?我也不知道,如果你有好的想法歡迎聯(lián)系我:smile:不過,這里分享下我的想法
-
戰(zhàn)線不能長!張小龍說過——"用完即走",其實這不是原因,只是我調(diào)個書袋而已:joy:但微信確實是這樣啊,聊天、朋友圈,好像確實沒什么太喪心病狂的一直拉著你不走(好像現(xiàn)在還有看一看?始終記住——鵝廠有夢想?。┧阅阕龅臇|西要符合人家產(chǎn)品的思想!好吧,說個實際的場景,如果你要在小程序里的創(chuàng)作文章,那別人來一條信息你回不回?不回?你的思緒回不回被打亂?不會?你的心情會不會很煩?不會?:wave:你贏了,來生再見,所以權(quán)衡好你的功能設(shè)計,戰(zhàn)線越長越容易死
-
短!平!快! 對應(yīng)上面。就是快速進入主題,功能點一目了然,功能也盡量單一,該干什么盡快干什么!例如讓用戶分享,讓用戶pay,快!快!快!不猶豫,讓用戶盡快上車
-
做矩陣,對應(yīng)上面,如果你想把app的功能都搬到小程序上,那一定要做功能拆分,做多個小程序形成矩陣
小程序os長什么樣?
想種一個小程序總先知道這片土地什么樣吧?OK,歡迎來到小程序黑土地。。。
-
首先我們先說說小程序用到的兩個線程——渲染線程、腳本線程,與網(wǎng)頁開發(fā)不同,這兩個線程是分開的,分別運行在不同的線程中,而網(wǎng)頁則是互斥的,也就是說視圖和腳本被分開了,在不同的線程里,這就導(dǎo)致了和普通網(wǎng)頁開發(fā)一個很大的不同——沒有DOM API,而且也不是運行在瀏覽器里所以也沒有BOM API
-
我們再看圖還發(fā)現(xiàn)小程序總共有三種運行環(huán)境,并且!每個環(huán)境兩個線程還都不一樣!所以同學(xué)們啊,在開發(fā)工具上行的在真機上不一定行??!可別太天真了,一定要在真機上驗證功能的可行性!
-
我們有沒有想過小程序為什么要費那么大功夫重造輪子?不直接用成熟的web技術(shù)?說是體驗,其實我覺得最主要的是微信想管控一切,不是你想怎樣就可以怎樣,而是我讓你怎樣,你才能怎樣(至今我還對此很不爽)所以就干掉了靈活的web,別被我?guī)侠?mdash;—小程序并不是完全沒有了web,實際上你看到的就是web,只是沒有暴露出來,而是微信直接通過編譯小程序來替你操作了
既然是兩個線程,那必然要通信啊,要協(xié)作完成任務(wù),那怎么實現(xiàn)的呢?看下面的通信模型
沒看到圖也能先想到是這個樣式:blush:,這里提示幾點
-
上圖中的Native是指微信客戶端
-
邏輯層發(fā)送網(wǎng)絡(luò)請求也經(jīng)由Native轉(zhuǎn)發(fā)
-
渲染層是由多個webview組成的,為什么?為了提供更好的交互體驗呀,這樣也更貼近原生體驗,同時避免了單個WebView的任務(wù)過于繁重,同時導(dǎo)致了小程序的生命周期不容易被理解(下面帶你理解)
-
通信是有時間成本的,所以在開發(fā)中我們最好使用異步接口
來看下生命周期