再看小程序

再看小程序

2016年9月微信小程序內測後不久,我在我的知乎專欄中寫下了一篇《換個角度,再來看看微信小程序的開發與發展》。文中從一個開發者和產品經理的角度提出了一些對小程序的看法。2年過去了,相比於各種蹭熱點的媒體文章,我當初的判斷還是比較理智和準確的。很慶幸當初寫這篇文章時,我並沒有站在一個純技術開發者的角度來看待小程序,這是這篇文章分析比較準確的主要原因。

文中我談到微信會逐步淡化企業號;談到小程序由於開發的低成本必定成為產品試水的最好形態;談到小程序的成功必定是依賴於微信的生態與微信資源的逐步傾斜;也表明了我的觀點,對於任何一項技術或者是產品,先看看別急著下結論。

我是一個對於成功定論非常保守的人。但如果你問我,快兩年了,微信小程序成功了嗎?毫無疑問,成功了。來看看數據:

微信最新發布的數據顯示,目前已發布小程序數量為 100 萬 +,小程序開發者已達 150 萬 +,小程序日均打開次數 4 次,主動訪問的用戶量為 54%。

但有時候我們總是很願意相信自己的感覺,並不願意相信數字,特別是在這個互聯網時代,數字的堆積已經讓我們麻木了。所以,羅列數字並不能代表小程序的成功。

但在我看來,最能夠直觀反映技術實用度的是外包市場。無論從我的感覺,還是我爬取的一些數據分析來看,微信小程序的確已全面佔領了外包市場。

也就是說,即使你無法從商業的更高角度來看待小程序,但至少作為一個技術開發者,外包開發小程序也已經讓你能夠有一份不錯的收入了。

這算是成功嗎?你我皆凡人,商業規模上的小程序是否成功的分析,我拿不出來,我分析的也不準確。但只從外包這塊來看,大量小程序的開發需求至少從經濟學的角度來看,它確實刺激了消費,刺激了產品的更新換代。

這就夠了,根本無需去談論小程序對於商業2.0,消費升級等等這些離我們很遠的概念。

我們做技術的人,總是在潛意識裡會以技術的標準來判斷一個產品是否能夠成功;或者說,我們在骨子裡崇拜的是更酷的技術,人為的為每個技術打上一個標籤,形成一個以自我感覺為中心的diss鏈條。

早期的時候,diss鏈條是這樣的 彙編 > c > c++ > java > php ,搞伺服器的看不上搞前端的,搞系統底層的看不上做web的,搞演算法的看不上做應用的。

相信我,我也是個做技術的人,在我內心深處,我也有這樣的認知。在我看來小程序確實在技術上沒有太多創新,它真不「酷」,也沒什麼逼格。和現在的熱點機器學習、AI,流行的微服務、高並發等等概念相比,它簡直就是個土撥鼠。

但真實的世界不是這樣的,技術真的只是占很小的一個部分,你不能永遠活在純技術的世界裡,在技術之外,更重要的是生態、是商業、是模式。

沒有人關心你用的是什麼框架,你用的是什麼技術,什麼語言,能出東西,能解決問題,能提高效率就是王道。一個產品的前端用jquery來寫和用vue來寫有區別嗎?對於你來說有區別,但對於那些產品的決策者,對於用戶來說,沒有區別。

但可惜的是,在我們看來,jquery就是low,VRA這些MVVM就是豪華版頂配,就是酷;Go就是未來,Java、PHP就是落後,要挨打,沒前途。

早點跳出這種思維,你會有不一樣的格局,也能比其他人多出更多的機會,同時這也是一個技術人成熟的重要標誌。小孩子才分對錯,大人只看利弊,這話我並不喜歡,因為用它來描述人的處世觀太過於殘酷。但對於技術,這話perfect。

微信小程序的成功不是技術上的成功,而是模式與生態的成功。微信有10億MAU(月活躍用戶數量),在這個體量下,任何微小的動作都會對業界和市場產生舉足輕重的影響。用戶數多就是微信的尚方寶劍,就是小程序賴以發展的基石。

有時候我也對小程序有很多怨言。bug多、文檔差、API變動頻繁,反饋bug後解決問題的速度太慢。在技術這個層面上,小程序相對於國外的技術或者框架,確實有很多不嚴謹的地方,技術上沒有太多創新也是事實。

但如果我們跳出技術的思維來看,微信小程序確確實實是解決了用戶的痛點,連接了線上和線下,給了無數創業者一個可以以低成本起步的機會,同時也提供了強大的推廣渠道。

2年前,我做第一門《微信小程序入門與實戰》時,其實也只是抱著試一下的心態。但2年過去了,我越來越看好小程序。看好的原因不僅僅在於微信又向小程序傾注了更多的資源或者加入了更多功能,更多的是在技術層面上,我突然發現小程序已經具備了替代APP的潛力。我們簡單來看看微信小程序這2年來一系列比較重要的更新動作:

  1. 微信小程序同公眾號強綁定
  2. 微信小程序獲得了分享的能力,可以分享給好友和群聊
  3. 新增微信首頁下拉打開小程序以及新增「我的小程序」
  4. ES6幾乎完美的支持
  5. 卡券功能的支持
  6. 自定義組件的支持(五星功能,極為重要)
  7. 微信小程序新增廣告功能(極為重要,互聯網最直接的盈利模式)
  8. 開放微信小遊戲(小遊戲是一種特殊的小程序,依然歸屬於小程序)

再看看7月份微信公開課上公布的小程序未來技術規劃:

  1. 自定義組件2.0
  2. npm的支持(極為重要)
  3. 官方自定義組件
  4. 小程序雲
  5. 可視化小程序編程

其實你不需要具體了解每一項計劃的真正意義,但其實你可以明顯感覺到,小程序是具備未來的。現在是什麼樣子並不重要,重要的是他還在發展,他還有更多的可能性。

2年前,我對於會不會出現獨立的小程序開發工程師一直是不敢肯定的,我認為這個職位由前端工程師兼任即可。但2年後,我認為極有可能會出現類似於Android和iOS開發工程師的專業小程序開發工程師。

小程序並不是你想的那麼簡單,雖然語言層面上通用於Web開發,但其實小程序是分為兩大部分的,一部分是」前端「,另外一部分是小程序的「開放能力」。小程序的前端開發對於絕大多數前端工程師而言,並不難,無非還是組件+CSS+JS。但小程序真正難的是對於開放能力的應用。從小程序文檔上看,生成二維碼這個能力,只不過是寥寥一頁文字,但帶參數的二維碼以及入口場景值在應用層面上是可以演化出很多營銷和推廣能力的。一個小程序開發工程師不是只去做前端樣式,還需要對這些開放能力有比較深入的研究。

17年4月我上線了課程案例《零食商販》小程序,當時我自信滿滿的說,這是現有小程序中體驗第一的小程序。但1年多過去了,我已經看過太多體驗和設計遠超《零食商販》的小程序,隨著時間的流逝,越來越多優質的小程序已經躍然紙上。而且這些小程序的功能之多,功能之複雜,已經在向APP看齊了。

如果你能夠跳出偏見,全面梳理一下小程序從開始到現在的發展歷程,你會發現,它的確是擁有光明的未來。

最後聊聊製作《微信小程序實戰》這門小程序新課程的初衷。主要原因還是我非常看好小程序,而距離上一門小程序課程上線到今年7月,已經有1年零4個月沒有製作小程序課程了。沒有製作的原因主要是因為,我認為小程序之前所迭代的功能並不足以讓我產生做新課程的衝動,它確實多了很多API,但如果只是多了API,在開發模式上沒有任何改變的話,這是不值得去做一門新課程的。

我一向認為老師講課應該講思維、講方法、甚至可以講技巧,但就是應該儘可能少的講具體API的調用。因為API每天都在增加,都在變化,一個程序員如果不能掌握思維和方法,每天都在學習API如何調用,恕我直言,這太累了,投入和回報的比例也太低了。

所以我的課程基本上是很少去講API調用的。《微信小程序入門與實戰》這門課程雖然少了很多最新的API,但它依然是小程序入門的經典課程,尤其適合前端初學者。至於新的API,你翻下文檔就能知道是怎麼回事兒。

但小程序更新了自定義組件,這是我做新課程最大的意義。基本上每個前端框架都會提供組件技術,所以大多數同學也對組件習以為常了。但來聽聽我對組件的看法。

大多數情況下,我們對於組件的理解是停留在「可復用」這個層面,而實際開發中,其實組件的可復用這一點並不是太實用。因為封裝一個及其靈活的組件成本是非常高的,我想,除了那些技術很強的團隊,大多數團隊都會選擇封裝一個組件,但是在復用時,拿來改一下,不會完全遵守不去更改組件源碼的原則。

但我看待組件的觀點不同。我認為組件最實用的價值還是在於代碼的分離。微信小程序已不再是我們印象中簡簡單單的功能了,現在的小程序大多數都是商城類小程序,除此之外還附帶社區功能,已和APP沒有太大的差異了。

功能增多,必定帶來維護成本增高的問題,對小程序結構良好的規劃已經是一個很嚴肅的問題。組件是一個解決問題的手段,另外一個手段是需要引入伺服器常用到的業務層的概念。業務層Models,相信很多同學都知道,但真正應用到項目里,它到底是怎樣的一種寫法,你是否真的做到了通過引入Model和組件來解決代碼混亂的問題?還是只是聽人家說MVVM,MVVM,讓這些好的架構流於一種概念?這是值得大家思考的。

另外一點是關於前端開發的細節問題,先給出課程案例小程序:

簡單嗎?我想絕大多數同學在看到這個小程序時會認為很簡單。但你真的去做的時候,當你真的考慮到用戶的時候,你會發現他真的不簡單。

比如首頁期刊在來回切換的時候,你是否做了緩存?如果每一次導航都要去伺服器去載入數據,其實是沒有必要的,因為期刊的內容最多1天更新一次,不會頻繁變化。但在加入緩存機制後,程序的代碼複雜度是要增加很多的。

再比如,對於點贊數量的顯示,也許我們寫代碼的時候直接就顯示一個數字,但你需要考慮到如果數字很大比如10000+的時候,直接顯示這個數字是不合適的,應該顯示成10k+。

還有很多數據在提交的時候,是需要考慮到本地更新的,不能等伺服器返回後再更新前端數據。

這些細節對於我們前端開發來說非常重要,可以說一個產品注重細節和不注重細節,開發成本和技術難度是有天壤之別的。

最後,新課程啟用了全新的課程模式,提供標準的在線API,供前端開發者調用,不再使用fake的假數據。API文檔地址:bl.7yue.pro/dev/index.h

。在真實的開發中,與伺服器交互數據、閱讀API文檔的能力,也是我們前端開發者必須要訓練的一項能力。

新課程依然是訓練編程的思維,輔以詳細講解小程序中最重要的布局方式flex彈性盒子與ES6的重要知識應用,沒有太多小程序API的講解。

性格如此,著實難以改變。

u.wechat.com/MD0C8mzctJ (二維碼自動識別)

推薦閱讀:

付唄WIFI小程序
小程序是什麼?
如何看待小程序的告訴發展?
小程序開放插件功能,今天你的小程序「共享開發」了嗎?

TAG:小程序碼 | 小程序二維碼 | 科技 |