Vue重度使用者也許會在wepy和mpvue中徘徊,React和TypeScript重度使用者在現(xiàn)階段當之無愧Taro首選。 這是一篇我與小程序的故事,但小程序的過去卻與我無關(guān)。 曾經(jīng)與她錯失交臂,但愿一切還來得及。 畢業(yè)后的兩年內(nèi),一直在創(chuàng)業(yè)公司工作,但自己卻錯過了很多創(chuàng)業(yè)風口,如區(qū)塊鏈和小程序,唯獨跟風了機器學習,但這是一條漫長的路,需要潛心學術(shù)否則很難做出成績,我曾在現(xiàn)公司AI Labs的某部門工作過一段時間,深知這一點。 區(qū)塊鏈和小程序在如今看來,無疑在過去的一年里都是程序員創(chuàng)業(yè)的風口,甚至可以說是風向標。 我之前待過的一家創(chuàng)業(yè)公司,主要做股票行業(yè)投顧平臺的業(yè)務,React Native承載了所有面向用戶的APP產(chǎn)品需求,整個前后端技術(shù)團隊最多的時候也只有11人,雖然是一家很小的創(chuàng)業(yè)公司,但兩位創(chuàng)始人中,CEO曾是奇虎360 Web產(chǎn)品及商業(yè)產(chǎn)品業(yè)務線副總經(jīng)理,聯(lián)合創(chuàng)始人是某大型券商高管,因此公司對產(chǎn)品的技術(shù)也曾多次摸索,數(shù)字貨幣涉及區(qū)塊鏈,智能投顧涉及機器學習,量化投資涉及程序化交易,機會很多,但說實話要做好這些方向?qū)嵲谑翘y,尤其16年國內(nèi)股票市場一直處于熊市的低谷中徘徊。 因思想,而光華; 因變革,而機遇; 因蛻變,而不凡。
在16年小程序內(nèi)測的時候就聽說過小程序,但真正接觸小程序是17年1月10日,某券商給我當時在的創(chuàng)業(yè)公司兩個名額,我有幸受邀參加了在北京大學光華管理學院舉辦的”小程序,大變革-2017年小程序全國巡回**“,小程序的正式發(fā)布僅僅是在一天之前的1月9日。
小程序的誕生,就一路伴隨著贊賞和爭議不斷,從發(fā)布上線時候不被大多數(shù)人看好,我便是其中之一,到如今的逐漸火熱,甚至可以說是如日中天,在移動互聯(lián)網(wǎng)創(chuàng)業(yè)領(lǐng)域一騎絕塵,17年后半年到如今的創(chuàng)業(yè)黑馬。小程序剛出來的時候,我可能和大多數(shù)人的想法一樣,中大型的互聯(lián)網(wǎng)公司不可能去擁抱騰訊生態(tài)圈,受限于騰訊爸爸苛刻的游戲規(guī)則。 然而在這一年里,小程序用時間與實踐證明了自己的變革與價值,微信小程序的規(guī)則也在開發(fā)社區(qū)的影響下變得更加完善。 對于第三方企業(yè)來講,微信為自己帶來了巨大的流量入口和低成本的拉新渠道,如滴滴、美團、京東等公司都推出了自己的小程序。像共享單車類的企業(yè),微信是絕大多數(shù)用戶的二維碼掃碼入口,小程序為其帶來了巨大的流量入口,如摩拜單車、青桔單車、街兔電單車小程序。 對于小程序開發(fā)者來說,小程序的開發(fā)生態(tài)不斷地在完善,從最開始的原生框架,到類vue規(guī)范的wepy,再到近vue寫法的mpvue,再到最近剛推出的遵循React規(guī)范的Taro。這期間,也曾有過類React的小程序框架Labrador,但小程序正式發(fā)布沒多久就幾乎停止維護了。 真正讓我感到驚喜的是Taro這個小程序框架,雖然推出的時間最短,但腳手架中自帶TypeScript編譯選項,這無疑是企業(yè)級小程序應用的首選框架,no,我認為,哪怕只是一個單人維護的小型應用,TypeScript也是必備的,可以讓開發(fā)者避免一些低級錯誤的bug,以及讓代碼的可維護性更高。 Taro 是凹凸實驗室打造的一套遵循 React 語法規(guī)范的多端統(tǒng)一開發(fā)框架,是React系開發(fā)者的福音。 Taro官方稱“只要書寫一套代碼,通過Taro編譯工具將源代碼分別編譯出可以在不同端(微信小程序、H5、APP端[React Native])運行的代碼,同時Taro還提供了開箱即用的語法檢測和自動補全等功能,有效地提升了開發(fā)體驗和開發(fā)效率”。 Taro所具備的優(yōu)勢:
在我看來,wepy和mpvue都想盡可能地提供一套類vue的寫法,但小程序的運行環(huán)境始終和Web端存在著差異,不可能完美地支持vue的所有指令及過濾器等等。開發(fā)者不但要去踩小程序自身的坑,還要去記住wepy和mpvue到底有哪些vue的特性不能使用,這著實是叫人頭大啊。 React和原生的小程序開發(fā)方式比更加現(xiàn)代化、規(guī)范化、組件化,JSX比Vue的字符串模板也具有更強的表現(xiàn)力。 JSX
render () { return (
小程序模板
<view class="index"> <view wx:key={idx} wx:for="{{list}}" wx:for-item="item" wx:for-index="idx">{{item}}view> <view bindtap="func">方法view>view>復制代碼
JSX 其實本質(zhì)上就是 JS,我們可以在里面寫任意的邏輯代碼,這樣一來就比字符串模板的表現(xiàn)力與操作性要強多了,況且,小程序的字符串模板功能比較羸弱,只有一些比較基本的功能。 Taro有著和React完全一致的API和組件化系統(tǒng)。在 Taro 中,不用像原生小程序一樣區(qū)分什么是 App 組件,什么是 Page 組件,什么是 Component 組件,Taro 全都是 Component 組件,并且和 React 的生命周期幾乎完全一致。 Taro 和 React 一樣,同樣使用聲明式的 JSX 語法。相比起字符串的模板語法,JSX 在處理精細復雜需求的時候會更得心應手,示例代碼如下:
Taro的其他幾項優(yōu)點:
技術(shù)選型與權(quán)衡 小程序社區(qū)已經(jīng)有多個優(yōu)秀的框架以小程序為核心對多端適配進行了探索,我們將各個開發(fā)框架的主要特點和特性進行了對比并制成圖表。大家可以結(jié)合團隊技術(shù)棧、技術(shù)需求以及框架特點、特性進行選型和權(quán)衡。
在后續(xù)文章中,會帶大家一起用Taro框架來實戰(zhàn)開發(fā)小程序。 |