摘要:一邊是需求的猛烈變動(dòng)倔约,一邊是開(kāi)發(fā)成本的居高不下佳遣。能否聰明的選擇技術(shù)棧甚至生死攸關(guān)。
注:本文主要針對(duì)以數(shù)據(jù)展現(xiàn)查詢(xún)?yōu)橹鞯某R?guī)業(yè)務(wù)型的公司免绿,不適用于非常規(guī)界面的項(xiàng)目唧席,如游戲、視頻工具等嘲驾。
之前做JobDeer時(shí)淌哟,我們的整個(gè)技術(shù)團(tuán)隊(duì)大部分時(shí)間只有一個(gè)人,最多時(shí)也就兩個(gè)工程師辽故,一直運(yùn)作得不錯(cuò)徒仓。除了功能上的節(jié)制,技術(shù)棧方案的選擇也有很大的原因誊垢。最近新技術(shù)又起來(lái)了不少掉弛,我也更新一下之前用到的技術(shù)棧方案症见,這里和大家分享下。
初創(chuàng)期:PHP + Responsive Web
初創(chuàng)期是一個(gè)業(yè)務(wù)需求猛烈變動(dòng)的時(shí)期殃饿,在這個(gè)階段谋作,任何非業(yè)務(wù)邏輯相關(guān)的開(kāi)發(fā)都是極大的犯罪浪費(fèi)。所以我個(gè)人覺(jué)得這時(shí)候最佳的方案就是可以自動(dòng)適配電腦和手機(jī)的Web全平臺(tái)方案乎芳。
這點(diǎn)大部分人都知道遵蚜,但其實(shí)要把開(kāi)發(fā)時(shí)間和成本壓到最低,有很多技巧奈惑,這里給一個(gè)思路:
依托微信做賬號(hào)系統(tǒng)
首先吭净,直接使用微信作為用戶(hù)體系(微博更適合用來(lái)分享、可能的話(huà)預(yù)存下手機(jī)號(hào)携取,以后做自有用戶(hù)激活用)攒钳。
這樣有幾個(gè)好處:
不用做用戶(hù)注冊(cè)、用戶(hù)找回密碼這種和業(yè)務(wù)無(wú)關(guān)的流程
直接就具備了移動(dòng)端一鍵支付的能力
PC上可以直接微信掃碼登入
簡(jiǎn)潔的卡片化設(shè)計(jì)同時(shí)兼容大小屏
然后雷滋,全站頁(yè)面通過(guò)Responsive設(shè)計(jì)不撑,同時(shí)兼容 PC、手機(jī)瀏覽器晤斩、微信內(nèi)嵌瀏覽器焕檬。
為了達(dá)到這個(gè)目標(biāo),PC端的設(shè)計(jì)要簡(jiǎn)單澳泵,盡量卡片化实愚。微信內(nèi)嵌時(shí)的導(dǎo)航、分享都和手機(jī)瀏覽器不同兔辅,需要識(shí)別設(shè)備做優(yōu)化腊敲。雖然這樣在產(chǎn)品設(shè)計(jì)時(shí)會(huì)比較慢點(diǎn),但做好之后整個(gè)產(chǎn)品結(jié)構(gòu)會(huì)非常統(tǒng)一维苔,流程會(huì)非常清晰碰辅。順便提下,原型工具Axure RP7是直接支持Responsive原型的介时,很好用没宾。
保留接口,Web前后端分離
最后沸柔,Web框架的選型上循衰,React優(yōu)先;Vue褐澎、Angular其次会钝;最低也建議要保持接口和前端代碼的分離。
就是說(shuō)工三,PHP最好只用來(lái)構(gòu)建Rest接口顽素,不要渲染頁(yè)面咽弦,全部頁(yè)面全部用JS來(lái)渲染。你要問(wèn)寫(xiě)接口用Go和NodeJS行不行胁出,當(dāng)然行,不過(guò)我覺(jué)得能完成同等工作的人里邊段审,PHP的最容易招到全蝶、也相對(duì)便宜。
這部分有一個(gè)安全大坑寺枉。某些PHP程序員并不熟悉寫(xiě)純接口抑淫,經(jīng)常把敏感字段返回了。要多盯下姥闪。
初創(chuàng)期建議不要過(guò)早啟動(dòng)客戶(hù)端方案始苇,除非對(duì)客戶(hù)端的原生功能非常依賴(lài)。原因比較現(xiàn)實(shí)筐喳,那就是客戶(hù)端團(tuán)隊(duì)是非常貴的催式,光是一個(gè)iOS一個(gè)Android就三五萬(wàn)一個(gè)月了。而更貴的是APP的安裝成本避归,如果從Web導(dǎo)流到微信公眾號(hào)的轉(zhuǎn)化率是60%荣月,那么到APP的轉(zhuǎn)化通常在20%以下。
進(jìn)階期:ReactJS +?React Native
當(dāng)業(yè)務(wù)定型以后梳毙,你就會(huì)發(fā)現(xiàn)嵌到別人APP里邊還是很憋屈的哺窄,而且微信的JS SDK的BUG經(jīng)常讓人無(wú)語(yǔ)。另一方面账锹,對(duì)融完了一兩輪的公司來(lái)說(shuō)萌业,過(guò)分依賴(lài)微信還是有風(fēng)險(xiǎn)的。需要把各個(gè)外圍平臺(tái)上的用戶(hù)聚集到一個(gè)完全屬于自己的地方奸柬,這時(shí)候我們就可以開(kāi)始做APP了生年。
坦率的講,要做一個(gè)90分以上體驗(yàn)的APP鸟缕,原生方案是最靠譜的晶框。但如果你的APP只是列表分頁(yè)之類(lèi)的簡(jiǎn)單結(jié)構(gòu),Hybrid(混合APP)看起來(lái)會(huì)是一個(gè)更好的方案懂从。
之前我們的Hybrid方案用的是內(nèi)嵌Html的PhoneGap+ionic授段,但我并不推薦大家去用這東西。
兩個(gè)原因番甩,一是在一些比較老機(jī)器上侵贵,會(huì)出現(xiàn)內(nèi)存不足這種沒(méi)法繞過(guò)的問(wèn)題,導(dǎo)致經(jīng)常性崩潰缘薛;二是JS在各個(gè)設(shè)備上的兼容性會(huì)讓你調(diào)到想殺人窍育,別問(wèn)我怎么知道的卡睦。
所以這里推薦的是ReactNative的JS渲染原生控件的方案。雖然里邊標(biāo)簽和CSS的語(yǔ)法都很奇葩漱抓,但是人家不卡啊表锻,但是人家不卡啊,但是人家不卡啊乞娄。
加上如果之前的前端用的本身就是React的話(huà)瞬逊,這時(shí)候可以重用不少業(yè)務(wù)邏輯。現(xiàn)在ReactNative已經(jīng)可以同時(shí)支持iOS和Android仪或,LeanCloud也對(duì)其做了不少支持确镊,但在A(yíng)ndroid上的推送依然需要自己來(lái)實(shí)現(xiàn)。
之后可能依然會(huì)需要iOS和Android的人來(lái)開(kāi)發(fā)原生組件范删,以實(shí)現(xiàn)業(yè)務(wù)邏輯特有的功能蕾域。但由于開(kāi)發(fā)的工作量一般較小、而且可以通過(guò)組件機(jī)制去耦合到旦,所以非常適合直接外包出去—— 好像又能省不少錢(qián)旨巷。
小結(jié)
粗略估計(jì),這個(gè)方案應(yīng)該足夠支撐大部分的APP運(yùn)營(yíng)到百萬(wàn)用戶(hù)了厢绝。ReactNative這塊我只測(cè)試了一些Demo契沫,但坑國(guó)內(nèi)大公司已經(jīng)踩了不少,不放心的同學(xué)可以抓來(lái)看看昔汉。
最后再說(shuō)一邊懈万,初創(chuàng)期方案里邊,從技術(shù)角度看靶病,PHP換成別的語(yǔ)言是可行的会通,但用PHP人力成本更低。
當(dāng)然你能找到一個(gè)ReactJS和NodeJS都非常資深的人娄周,那么恭喜你一兩年都都不用擔(dān)心技術(shù)方問(wèn)題了涕侈。所以NB點(diǎn)的前端動(dòng)不動(dòng)年薪60~80萬(wàn),那是有道理的……