今天分享的是Feflow在雲工程化的探索和實踐,接下來將從如下四個方面展開。前端
首先咱們看下爲何須要作前端工程化,第一個場景是團隊有大量新項目開發,尤爲是不少同類項目,好比運營活動。此時必定存在大量可複用的模塊,若是沒有工程化,每次都會有不少重複工做,總體的研發效率是極低的。隨着團隊的發展擴大,團隊裏的成員技術水平良莠不齊,在開發中就會產生一些差別;此外就是項目交接的時候每每依賴於完善的文檔,但這個是不可控的,曾經遇到一個項目,弄了半天才啓動起來,這個開發體驗就不好。所以,咱們須要工程化來幫咱們解決這些問題。git
對於工程化的定義,咱們能夠理解爲提升效率、下降成本的事情,在開發中咱們能夠從質量、效率、性能三方面來着手。github
那麼在IVWEB團隊如何作工程化呢?首先在質量方面咱們經過定義開發規範、實用工具進行代碼檢查以及發佈檢查;而且經過對項目作通用基礎優化以及SSR、PWA默認支持等方式來提升性能;效率方面經過制定腳手架、封裝業務組件以及經常使用工具的支持來提高研發效率。web
以上的這些都經過Feflow來支撐,Feflow貫穿整個研發流程,提供建立項目、開發項目能力,而且支持自定義插件來集成各類能力,同時打通各個基礎平臺更好的支持研發。docker
最近幾年雲的發展日新月異,說到雲咱們會想到k8s、docker、serverless等等。隨着雲的發展,咱們的平常開發也逐步受到雲的影響。npm
好比在本地開發時,之前咱們須要爲各類項目準備不一樣的開發環境,並且還會有包之間互相影響,如今咱們就能夠經過使用docker來準備各類環境;以前項目部署時基本都是須要手動操做,並且每每都依賴同一臺發佈機,環境雜亂,如今咱們一樣經過docker就能夠作到環境隔離,同時配合git hooks能夠自動觸發部署;咱們在以往應對突發流量時,都是申請機器擴容,而流量恢復正常咱們又須要退還(成本問題),有了k8s和docker能夠實現自動擴縮容,大大減小了人工運維成本。編程
同時還有小程序雲開發,幫助咱們快速啓動一個服務,並提供了免費的存儲;還有云函數的出現,一個簡單的服務就能夠快速上線,同時還提供自動擴所容,十分便利。此外,近幾年WebIDE也逐步火熱起來,被稱爲下一代開發方式,目前主流的好比騰訊CODING、華爲雲IDE、Monaco等,那麼工程化在雲時代能夠作什麼呢?小程序
首先咱們來回憶如下年初疫情剛出現時的場景,你們被封鎖在家裏,最大的問題就是如何正常參加工做。若是有帶本身電腦,那天然是隨時開工,固然也有一些企業「福利」比較好,有人給你們郵寄電腦,還有一些同窗沒有帶電腦或者臨時被封閉了,找電腦、準備環境一大堆準備作完,發現電腦卡的不行,很痛苦。那麼如今有云、WebIDE,是否能夠作一套遠程開發環境呢?咱們利用雲服務器以及CODING的CS集羣搭建服務,開發同窗只須要經過身份校驗就能夠在瀏覽器中進行開發,幾乎不用作環境配置,也不受電腦性能影響。前端工程化
在這種開發方式如何使用工程化呢?首先WebIDE也是支持命令行操做的,所以咱們會在建立開發空間時默認集成Feflow,而且將基本配置初始化,用戶能夠像在本地命令行同樣使用Feflow提供的工程化能力。瀏覽器
同時提供可視化的方式,輸入輸出更加便捷,而且在調用工具更加方便,大大提高了使用體驗。
在這其中咱們也遇到了一系列問題,首先就是腳手架在作可視化時,須要把命令行的輸入輸出轉成表單形式,而且還有數據校驗等。當前業界較爲通用的數據轉爲表單就是JSON Schema,它提供豐富的表單展現以及數據校驗能力,通用性強,學習成本低。
隨着使用者愈來愈多,終端、後臺的一些同窗也有訴求統一工具鏈,可是語言的多樣性成爲了最大的障礙,所以如何支持不一樣語言的工具成爲當務之急,而且還要作到通用可擴展。
首先是關於命令的調用,幾乎任何工具均可以經過命令行去調用,所以經過配置該工具在不一樣操做系統中的調用語句,Feflow就能夠經過命令行調用方式調用該工具。
而後就是關於工具的語言依賴,每種語言的工具都須要語言環境的支持,所以仿照npm包的依賴模式,在安裝工具的時候將其依賴的語言也經過Feflow插件的方式來安裝,同時還能夠安裝其餘依賴工具。一樣借鑑npm包管理的方式,工具版本同步git tag。
最終造成了一套全新的開發模式,從git打開項目到WebIDE,Feflow提供研發流程的工程化能力,再經過docker等雲端工具發佈到線網。開發者無需準備開發環境、也無需擔憂平臺差別性和語言差別。
簡單總結如下三點
工程化能夠囊括整個研發流程,包括工具建設、規範制定、流程標準等。
工程化作的好,一樣能夠應用到其餘端。
面對雲的到來,工程化能夠經過種種方式上雲,而將來有更多的新事物出現,工程化一樣能夠有效結合。
最後是對將來開發的一個期冀,咱們只要擁有電子設備,好比手機、平板、電腦,就能夠隨時隨地開始coding,不用再爲那些「身外之物」煩惱。
本文做者所在團隊騰訊看點IVWEB正在招聘前端工程師
IVWEB團隊是騰訊專業的前端團隊, 以「卓越Web, 全棧研發"爲旨, 負責騰訊移動直播產品NOW直播, 騰訊直播, QQ課堂, 語音交友, 手Q附近等騰訊直播平臺的研發工做.
團隊組織舉辦了四屆TLC大會. 團隊成員屢次參與包括Qcon, ArchSummit, JsConf, GMTC, 開源中國等行業技術分享大會. 此外, 團隊也培養了多名StuQ講師.
Feflow是一個用於提高開發效率的前端工做流和規範工具,最新版本是v0.22.3,目前在 alpha 階段,託管在Github上:Tencent/feflow。目前已經在騰訊內部已有超過100個團隊接入使用, 內部用戶量達到1500+, 爲前端的開發效率添磚加瓦.
Aegis
Aegis是一站式前端監控解決方案,涵蓋了日誌上報,錯誤監控,性能監控,資源測速等功能。 Aegis以每日千億數據流承載量, 最高每分鐘千萬數據的吞吐量, 致力於全方面守護您的項目健康,保障您的項目性能。
至今已舉辦了四屆的騰訊直播大會, 是由騰訊看點團隊精心打造,由IVWEB團隊主辦的面向全球大前端領域的技術大會,致力於提高和促進全行業大前端、信息流、音視頻、直播、圖像處理等領域的交流和技術創新,旨在打造一個高品質、高標準的行業交流會議。
團隊內的技術分享
時不時地聚餐團建
烤肉, 燒烤, 海鮮, 日料啥都有
996? 不存在的, 週末加班也必然是有調休的
咱們但願你:
若是有小夥伴有意向加入咱們, 歡迎準備好簡歷並投遞到郵箱:
標題請註明 應聘字樣與姓名, 萬分感謝你的配合~~~(簡歷記得用PDF格式~~)