網(wǎng)站地圖|客服中心|設(shè)為首頁(yè)|加入收藏

行業(yè)新聞

首頁(yè) > 新聞 > 制作 > 前端研發(fā)生態(tài)環(huán)境構(gòu)建經(jīng)驗(yàn)談

前端研發(fā)生態(tài)環(huán)境構(gòu)建經(jīng)驗(yàn)談

不記得從什么時(shí)候起,“生態(tài)環(huán)境”這個(gè)詞經(jīng)常出現(xiàn)在人們耳邊,而在IT行業(yè)中似乎出現(xiàn)頻率更高——所有的巨頭公司都在建設(shè)或運(yùn)營(yíng)自己的“生態(tài)環(huán) 境”,要形成“閉環(huán)”。那么對(duì)前端開發(fā)來講,是否也需要有一套自己的生態(tài)環(huán)境形成一個(gè)閉環(huán)呢?那前端開發(fā)的生態(tài)環(huán)境和閉環(huán)又應(yīng)該是什么樣的呢?

過去很長(zhǎng)一段時(shí)間,我們都在探索適合自己團(tuán)隊(duì)的發(fā)展之路,建立大家共同認(rèn)可的愿景和發(fā)展目標(biāo)等。這時(shí),首先要明確的就是,團(tuán)隊(duì)的追求和價(jià)值觀是什么。最初, 每次制定全年或季度的工作計(jì)劃時(shí),除和具體業(yè)務(wù)相關(guān)的工作外,還會(huì)出現(xiàn)提高工程質(zhì)量、提高開發(fā)效率等這樣的任務(wù)。隨著時(shí)間推移,我們發(fā)現(xiàn)如果前端工程師的 工作目標(biāo)是讓前端工程師們能更好地工作,那么就陷入了一個(gè)死循環(huán),因?yàn)檫@個(gè)目標(biāo)很難被具體化,也很難將前端工程師真正的價(jià)值體現(xiàn)在目標(biāo)中。經(jīng)過一段時(shí)間的 探索,我們嘗試從所參與的產(chǎn)品本身出發(fā)制定工作目標(biāo),這樣“提高工程質(zhì)量”、“提高開發(fā)效率”就變成了過程,產(chǎn)品的進(jìn)步就代表前端工程師的工作產(chǎn)生了價(jià)值。

實(shí)踐后發(fā)現(xiàn)這個(gè)方向是正確的,因?yàn)闊o論團(tuán)隊(duì)內(nèi)部在做什么都只是手段和途徑,而產(chǎn)品本身的改進(jìn)證明目的達(dá)到了。進(jìn)而我們開始嘗試將整個(gè)過 程系統(tǒng)化,于是就提到了開頭所說的前端開發(fā)的生態(tài)環(huán)境和閉環(huán)。如果按照環(huán)境將前端工程師工作的平臺(tái)進(jìn)行劃分,將會(huì)是開發(fā)環(huán)境、服務(wù)器和瀏覽器三個(gè)在物理上 互相隔離的點(diǎn),而通過一系列工具、平臺(tái)和方法論,就能將這三個(gè)孤立的點(diǎn)串聯(lián)起來,形成一個(gè)整體(如圖1所示)。

圖1 前端生態(tài)環(huán)境形成的閉環(huán)

通過這個(gè)閉環(huán),特別是從瀏覽器回到開發(fā)環(huán)境這個(gè)環(huán)節(jié),前端工程師會(huì)通過具體產(chǎn)品和終端用戶進(jìn)行頻繁的信息交換,在最終的產(chǎn)品中進(jìn)行信息收集,再將信息轉(zhuǎn)化為指標(biāo)或其他能夠衡量產(chǎn)品質(zhì)量的形式,以此指導(dǎo)工作方向。

打造前端研發(fā)生態(tài)環(huán)境

接下來,按階段將整個(gè)過程落實(shí)到具體的工程實(shí)現(xiàn)上,最終的產(chǎn)出是一套完整的工具、平臺(tái)和方法論。

從開發(fā)環(huán)境到服務(wù)器

開 發(fā)環(huán)境是一切工作的開始,每一行代碼都是從這里出發(fā)最終deliver給終端用戶的,并不涉及到具體業(yè)務(wù)或產(chǎn)品。當(dāng)團(tuán)隊(duì)人數(shù)增加、項(xiàng)目規(guī)模和數(shù)量開始膨脹 時(shí),很多日常的開發(fā)和發(fā)布操作就會(huì)占用工程師很多的時(shí)間和精力,而這些工作通常又是機(jī)械式重復(fù)的。為了解決效率問題,自動(dòng)化是必然的方案。這個(gè)環(huán)節(jié)中大部 分的問題抽象后都是工程問題,也就是通常所說的前端持續(xù)集成(CI)。合理的CI過程可以有效提高開發(fā)效率和工程質(zhì)量,提供快速且可靠的持續(xù)交付能力。目 前,豌豆實(shí)驗(yàn)室的前端CI過程如圖2所示。

圖2 豌豆實(shí)驗(yàn)室的前端CI過程

其中包含了以下環(huán)節(jié):

  • 版本管理,保證代碼安全和協(xié)同工作的效率;
  • on-save或pre-commit檢查,包括lint和code style檢查;
  • Code Review;
  • 自動(dòng)化測(cè)試;
  • 自動(dòng)化構(gòu)建;
  • 自動(dòng)化部署。

工程在開發(fā)環(huán)境進(jìn)行簡(jiǎn)單的提交前檢查,如靜態(tài)分析和簡(jiǎn)單的測(cè)試,然后提交到代碼托管服務(wù),通過Code Review后合并入庫(kù),進(jìn)行完整的自動(dòng)測(cè)試,最后根據(jù)需要發(fā)布到測(cè)試或生產(chǎn)環(huán)境。

整 個(gè)流程的核心工具是Grunt。Grunt是一個(gè)基于Node.js的任務(wù)管理和調(diào)度工具,最初是完全按照前端開發(fā)的需求打造的,但得益于其強(qiáng)大的擴(kuò)展 性,現(xiàn)在也可以被用于其他類型的工程。Grunt的核心是Gruntfile.js文件,其中預(yù)留了眾多諸如測(cè)試、構(gòu)建、部署等任務(wù)入口,可以在各個(gè)階段 中按需調(diào)用。

對(duì)于中小型團(tuán)隊(duì)來講,合理利用開源項(xiàng)目和第三方服務(wù)可以有效降低在這個(gè)環(huán)節(jié)上的投入。同時(shí),因?yàn)楣こ套詣?dòng)化要求同種工程的結(jié)構(gòu)等都是相近的,這也是一個(gè)將對(duì)工程進(jìn)行規(guī)范化的契機(jī),通過Yeoman或類似的工具可以實(shí)現(xiàn)這個(gè)目的。

服務(wù)器到瀏覽器

經(jīng)過前面提到的CI,工程就被發(fā)布到了線上服務(wù)器,可以分發(fā)給終端用戶了。服務(wù)器在整個(gè)閉環(huán)中起到的是承上啟下的作用,其中很多工作都是離前端工程師的傳統(tǒng)認(rèn)知比較遠(yuǎn)的內(nèi)容,主要包括:

  • 負(fù)載均衡;
  • 靜態(tài)資源管理;
  • CDN自動(dòng)化管理;
  • Cache策略管理;
  • 線上服務(wù)性能指標(biāo)監(jiān)控;
  • 安全防護(hù)。

從 傳統(tǒng)的技術(shù)團(tuán)隊(duì)合作分工來看,這一部分內(nèi)容通常是由運(yùn)維工程師來完成的。但我們發(fā)現(xiàn)由于服務(wù)器和瀏覽器之間的信息交換的暢通和效率將會(huì)直接影響產(chǎn)品在某些 方面的體驗(yàn),所以其中某些部分也是可以被前端工程師納入到工作內(nèi)容當(dāng)中的,或者是可以基于前端的需求進(jìn)行調(diào)整和優(yōu)化的,主要集中在加載速度和可靠性以及安 全三個(gè)方面。

這個(gè)過程需要和運(yùn)維團(tuán)隊(duì)緊密配合,要求對(duì)方提供統(tǒng)一、與業(yè)務(wù)無關(guān)且可編程的配置接口,將服務(wù)規(guī)范化。例如,某工程的靜態(tài)資源在CDN上的過期規(guī)則,可在工程的配置文件中進(jìn)行描述,在發(fā)布時(shí)自動(dòng)通過CDN或CDN源站提供的API進(jìn)行操作。

業(yè)務(wù)層的安全防護(hù)也應(yīng)該在這個(gè)環(huán)節(jié)中考慮進(jìn)來,例如統(tǒng)一的跨站腳本防御策略、API的CORS應(yīng)用策略和CSP規(guī)則等,都應(yīng)該由前端來驅(qū)動(dòng)進(jìn)行制定和實(shí)施。

瀏覽器到開發(fā)環(huán)境

瀏覽器是前端工程師的主場(chǎng),大部分的工作最終都把瀏覽器當(dāng)作運(yùn)行環(huán)境,因此這個(gè)點(diǎn)也是最重要的。在這個(gè)點(diǎn)上主要包含以下工作內(nèi)容:

  • 客戶端性能監(jiān)控;
  • 異常捕獲與收集;
  • 用戶行為跟蹤與統(tǒng)計(jì);
  • 用戶反饋收集。

可 以概括地分為工程數(shù)據(jù)和用戶數(shù)據(jù)收集兩大部分。工程數(shù)據(jù)是用來監(jiān)控產(chǎn)品的性能指標(biāo)和異常情況的,進(jìn)而有針對(duì)性地進(jìn)行性能調(diào)優(yōu)和Bug修復(fù),而產(chǎn)品數(shù)據(jù)則是 用來分析用戶的需求指導(dǎo)產(chǎn)品功能改進(jìn)的。除了配套的統(tǒng)計(jì)工具外,也要能從這些數(shù)據(jù)當(dāng)中轉(zhuǎn)化有意義的信息,同時(shí),以這個(gè)點(diǎn)為基礎(chǔ),不停地改進(jìn)整個(gè)循環(huán)。

響應(yīng)速度也是一個(gè)需要重點(diǎn)考量的目標(biāo),無論是線上產(chǎn)品的異常還是性能退化的發(fā)生,或者某個(gè)功能設(shè)計(jì)失誤導(dǎo)致用戶使用出現(xiàn)嚴(yán)重問題,都應(yīng)該能在這個(gè)流程中快速反饋回來進(jìn)行快速響應(yīng),將損失降到最低。同時(shí),在正常的開發(fā)過程中,響應(yīng)速度快也能夠提高產(chǎn)品本身的迭代速度。

同 樣,在這個(gè)環(huán)節(jié)也有很多第三方服務(wù)可以使用,最常用的就是Google Analytics了,可以提供性能跟蹤、用戶行為統(tǒng)計(jì)、事件統(tǒng)計(jì)等常見的網(wǎng)站數(shù)據(jù)分析服務(wù)。除此之外,還可以使用SpeedCurve來對(duì)加載性能進(jìn)行 針對(duì)性的跟蹤和分析,使用Roolba或Appfial服務(wù)來收集運(yùn)行時(shí)異常。

以工具為基礎(chǔ),工程師就可以對(duì)產(chǎn)品最終運(yùn)行的情況有更形象和具體的認(rèn)知。例如,當(dāng)我們對(duì)加載速度進(jìn)行優(yōu)化時(shí),就可以看到點(diǎn)擊率的上升或跳出率的下降,因此這些指標(biāo)就可以坐為我們制定工作目標(biāo)的標(biāo)準(zhǔn)。

閉環(huán)

到這里,一個(gè)完整的前端開發(fā)生態(tài)環(huán)境就形成了一個(gè)閉環(huán)。以此為基礎(chǔ),前端工程師只要將大部分精力放在最后一個(gè)環(huán)節(jié),就可以快速地改進(jìn)產(chǎn)品,讓工作最終以產(chǎn)品本身為導(dǎo)向來進(jìn)行;剡^頭來,總結(jié)一下在這個(gè)過程中的幾個(gè)原則。

從前端開發(fā)的角度看問題

這個(gè)生態(tài)環(huán)境當(dāng)中,很多內(nèi)容都是和產(chǎn)品設(shè)計(jì)、運(yùn)維等其他工作有交叉的,并不是說前端工程師要把更多相關(guān)的工作納入進(jìn)來,而是要能從自己的角度對(duì)同一個(gè)問題有不同的看法和解決方案,這樣才能發(fā)揮出前端更貼近用戶的優(yōu)勢(shì)。

其 實(shí)這個(gè)研發(fā)閉環(huán)的打造過程沒有任何的新內(nèi)容,都是每個(gè)前端工程師日常工作的一部分,區(qū)別在于從系統(tǒng)化的角度將它們串在一起了。這個(gè)閉環(huán)中,最重要的是最后 從瀏覽器回到開發(fā)環(huán)境的過程,但數(shù)據(jù)的收集和分析工作在不同的公司組織架構(gòu)下可能是由其他角色來完成的,如數(shù)據(jù)挖掘工程師或者產(chǎn)品經(jīng)理等。但我們相信,由 于前端工程師的特殊工作性質(zhì),使其能夠同時(shí)從工程和用戶兩個(gè)角度觀察產(chǎn)品,那么也會(huì)有自己獨(dú)特的解決問題的方式和途徑。這個(gè)生態(tài)環(huán)境是為了能以產(chǎn)品為中心 指導(dǎo)工作而進(jìn)行的基礎(chǔ)建設(shè),本質(zhì)上也只是一個(gè)工具,如何利用好它,需要整個(gè)團(tuán)隊(duì)進(jìn)行長(zhǎng)期的探索和磨合。

不重新發(fā)明輪子

對(duì) 于團(tuán)隊(duì)來講,快速、準(zhǔn)確地解決問題,滿足需求是唯一目標(biāo),因此當(dāng)遇到問題時(shí)首先要仔細(xì)分析真實(shí)需求到底是什么。需求明確后,就涉及到具體的實(shí)現(xiàn)方案設(shè)計(jì)和 技術(shù)選型等工程方面的決策,開源項(xiàng)目或者合適的第三方服務(wù)依然是首選,原因有三。首先,也是最重要的,投入產(chǎn)出比。在整個(gè)閉環(huán)的打造過程當(dāng)中,會(huì)用到無數(shù) 的工具和服務(wù),其中每一個(gè)的復(fù)雜度都是非常高的,如果自己從零開發(fā),時(shí)間成本、人力成本都將高到一個(gè)不可接受的狀態(tài)。其次,開源項(xiàng)目和第三方服務(wù)通常比較 專注,對(duì)所要解決的問題有更深刻的理解。例如,代碼托管服務(wù)GitHub及相關(guān)的配套服務(wù),顯然其更專注在代碼托管、團(tuán)隊(duì)協(xié)作方面的需求。最后,開源項(xiàng)目 和第三方服務(wù)的擴(kuò)展性和兼容性通常是有保障的,做為開源項(xiàng)目或第三方服務(wù),為上下游其他工具和服務(wù)的接入提供良好的支持是基本的目標(biāo)之一,保證了其在整個(gè) 鏈路中的低耦合性和可替代性。當(dāng)有更合適的解決方案時(shí),可以方便地將其替換掉而不影響整個(gè)系統(tǒng)的穩(wěn)定性。

將“人”的因素轉(zhuǎn)化為“非人”的因素

“人” 是最不可控的變量因素,無論是工程質(zhì)量、發(fā)布流程,人工參與的操作都是最容易出問題的環(huán)節(jié)。因此,應(yīng)該盡可能在整個(gè)過程中將更多人的因素轉(zhuǎn)為非人的因素, 機(jī)器化的流程就變得更可控和可靠。舉一個(gè)具體的例子,Code Style是每個(gè)團(tuán)隊(duì)在成員數(shù)量開始增加時(shí)都要制定的第一個(gè)規(guī)范,但規(guī)范有了之后能否具體實(shí)施到每一行代碼中、實(shí)施的效果怎么樣,其實(shí)是取決于人——也就 是每個(gè)成員個(gè)體,且這個(gè)執(zhí)行情況是不可控的。這時(shí)我們就需要通過某種手段將其轉(zhuǎn)為自動(dòng)化的過程,也就是引入代碼的靜態(tài)檢查,如JSLint或 JSHint,自動(dòng)化檢查過程就將Code Style的執(zhí)行情況轉(zhuǎn)變成了非人的因素。自動(dòng)化不只是提高生產(chǎn)效率的手段,同時(shí)也是保證質(zhì)量的重要途徑。

寫在最后

很 多團(tuán)隊(duì)都在探索前端未來的發(fā)展方向,我們也不例外。大家思考這個(gè)問題的思路似乎都是相似的,想要跨端——將前端拓展到Android、iOS等平臺(tái)。有的 團(tuán)隊(duì)是借助PhoneGap這種給WebView加殼的形式,也有的是通過Titanium Mobile或類似的解決方案,打包一個(gè)JavaScript Runtime,通過bridge來操作Native API甚至直接將JavaScript編譯成某種目標(biāo)語言,F(xiàn)在討論前端,不加特殊說明的情況下是特指Web前端,而Web前端是被限定在特定的技術(shù)平臺(tái) 上的。上面提到的兩種思路,本質(zhì)上還是被限制在了Web前端自己的技術(shù)體系內(nèi)。那么,如果拋開具體的技術(shù)實(shí)現(xiàn)來思考這個(gè)問題呢?

前端,應(yīng)該 是最接近用戶的上層業(yè)務(wù),工作內(nèi)容是做UI,而User Interface絕不僅僅只是狹義的視覺上的界面,而是和Interface這個(gè)詞的本意——接口,兩個(gè)不同系統(tǒng)交接并通過它彼此作用的部分——一樣, 是兩個(gè)系統(tǒng)進(jìn)行信息交換的中間介質(zhì),而且信息本身是形式多樣化的。兩個(gè)系統(tǒng),就是指用戶和其所使用的具體產(chǎn)品。從這個(gè)角度看,將前端的業(yè)務(wù)范圍拓展到其他 平臺(tái)是合情合理的,而且在這個(gè)層面上,任何平臺(tái)上做前端開發(fā)都應(yīng)該是有統(tǒng)一的價(jià)值觀和方法論的。

前面提到的這個(gè)閉環(huán),如果將所有的技術(shù)細(xì)節(jié)和實(shí)現(xiàn)方案全都隱去,進(jìn)行進(jìn)一步抽象,只留下需求,就會(huì)變成圖3中的一個(gè)環(huán)形。

圖3 抽象后的生態(tài)系統(tǒng)閉環(huán)

這 個(gè)環(huán)中(其中生產(chǎn)環(huán)境對(duì)iOS和Android等客戶端開發(fā)并不一定存在,所以是虛線)每一個(gè)環(huán)境的需求都是有普適意義的,也可以在其他平臺(tái)上面嘗試類似 的工作方式。其中,運(yùn)行環(huán)境到開發(fā)環(huán)境這一步,因?yàn)樯婕暗胶芏嘤脩趔w驗(yàn)、數(shù)據(jù)收集和分析的相關(guān)工作,對(duì)前端的意義也顯得格外重要。正是這一部分,使得前端 工程師同其他工程師區(qū)別開來,也是前端工程師最能體現(xiàn)自己價(jià)值的地方——距離用戶更近,能從不同的視角來思考和解決問題。而如何將所有終端都統(tǒng)一的內(nèi)容抽 象出來,結(jié)合產(chǎn)品形成前端統(tǒng)一的價(jià)值觀和方法論,就是需要進(jìn)一步探索的內(nèi)容了。

最后,推薦一些開源項(xiàng)目和第三方服務(wù),可以直接用來打造自己的前端研發(fā)生態(tài)環(huán)境:

  • JSHint,JavaScript代碼檢查工具;
  • Yeoman,工程初始化工具;
  • Grunt,任務(wù)調(diào)度和驅(qū)動(dòng)工具;
  • Karma Runner,測(cè)試驅(qū)動(dòng)工具;
  • Mocha,測(cè)試框架;
  • GitHub,著名的Git工程托管服務(wù);
  • Travis CI,和GitHub整合的CI服務(wù);
  • Circle CI,可以和GitHub或Jenkins整合的CI服務(wù);
  • Codeship,能和GitHub或Jenkins整合的CI服務(wù);
  • Google Analytics,數(shù)據(jù)收集和分析服務(wù);
  • Speed Curve,網(wǎng)站性能統(tǒng)計(jì)和分析服務(wù);
  • Roolba、Appfail,網(wǎng)站運(yùn)行期異常收集和分析服務(wù)。
  • 基于用戶創(chuàng)新

    界面設(shè)計(jì)日新月異,夢(mèng)創(chuàng)義堅(jiān)持基于用戶需求的界面創(chuàng)新設(shè)計(jì)……

  • 服務(wù)設(shè)計(jì)思維

    互聯(lián)網(wǎng)的格局發(fā)生的改變,在我們進(jìn)行設(shè)計(jì)服務(wù)時(shí)更是考慮不同用戶、不同……

  • 洞察用戶心理

    洞察用戶有意識(shí)和無意識(shí)的行為以及心理特征通過構(gòu)造一系列的服務(wù)來促進(jìn)……

  • 查看更多 >>

最新新聞Latest News

中小型企業(yè)網(wǎng)站建設(shè)完應(yīng)該如何營(yíng)銷
很多中小型企業(yè)往往糾結(jié)于以下10個(gè)問題:一、我們起步比別人晚,我們的……
做企業(yè)網(wǎng)站到底做給誰看?
設(shè)計(jì)經(jīng)常時(shí)不時(shí)的遇到一些企業(yè)客戶,常常搞不清楚誰會(huì)真正看你的企業(yè)網(wǎng)……
傳統(tǒng)企業(yè)進(jìn)軍移動(dòng)互聯(lián)網(wǎng),從移動(dòng)云網(wǎng)站開始
移動(dòng)互聯(lián)網(wǎng)是移動(dòng)通信和互聯(lián)網(wǎng)融合的產(chǎn)物,其發(fā)展的重要基礎(chǔ)便是智能手……
網(wǎng)站建設(shè)和運(yùn)營(yíng)五大細(xì)節(jié)決定用戶黏性
網(wǎng)站的成功離不開搜索引擎優(yōu)化,更離不開最基礎(chǔ)最根本的用戶群體,如何……
2015年值得關(guān)注的電子商務(wù)5大趨勢(shì)
線上線下銷售的界線正在變得越來越模糊。在2015年,這一趨勢(shì)仍將繼續(xù)!

本站搜索關(guān)鍵詞:前端研發(fā)生態(tài)環(huán)境構(gòu)建經(jīng)驗(yàn)談 | 北京網(wǎng)站建設(shè) | 北京網(wǎng)站建設(shè)公司 | 北京網(wǎng)站建設(shè)中心 | 高端網(wǎng)站建設(shè) | 電商網(wǎng)站建設(shè) | 企業(yè)網(wǎng)站建設(shè) | 手機(jī)網(wǎng)站建設(shè) | 微站官網(wǎng)建設(shè) | APP開發(fā)

銷售熱線

7x24小時(shí)全國(guó)售前咨詢熱線:010-57281389

7x24小時(shí)全國(guó)售后服務(wù)熱線:13020085953 15313016798

手機(jī) | 微信同號(hào):18600846206   QQ:523313456

立即咨詢 網(wǎng)站建設(shè)業(yè)務(wù)咨詢|客服熱線:010-57281389 13020085953

點(diǎn)這里給我發(fā)消息 電子郵箱:cnet99@cnet99.com

營(yíng)業(yè)地址(東部):北京市朝陽區(qū)伊莎文心廣場(chǎng)A座3層B-22

位置分享

營(yíng)業(yè)地址(西部):北京市豐臺(tái)區(qū)汽車博物館東路1號(hào)諾德中心9-605

標(biāo)準(zhǔn)網(wǎng)站,網(wǎng)站建設(shè),域名注冊(cè),虛擬主機(jī),獨(dú)享主機(jī),企業(yè)云郵箱,網(wǎng)站維護(hù)一條龍,北京網(wǎng)站建設(shè)中心


  掃一掃 加微信
  微信號(hào):cnet99com

  掃一掃 加關(guān)注
  微信平臺(tái)

天潤(rùn)智力-專注于互聯(lián)網(wǎng)平臺(tái)建設(shè)與服務(wù)領(lǐng)域 中國(guó)互聯(lián)網(wǎng)平臺(tái)建設(shè)服務(wù)提供商

萬網(wǎng)阿里云金牌首席合作伙伴站點(diǎn) 全線代理萬網(wǎng)阿里云產(chǎn)品及服務(wù)

中國(guó)萬網(wǎng)正式通過ISO9001國(guó)際標(biāo)準(zhǔn)質(zhì)量體系認(rèn)證

Copyright©1999-2024 天潤(rùn)智力 備案/許可證編號(hào) 京ICP備2020040216號(hào)-3

公安部備案號(hào) 11010502032413