其實在內部咱們叫大前端,公司名也不報了,媽媽說要低調,嗯嗯!php
不一樣公司對邊界的定義都不同。咱們對界線的劃分主要分爲,是否影響了用戶可交互,可操做的體驗,效率須要高(ps:窮!)css
在咱們這面對前端的定義是高效率的實現可交互而且高質量的產品。因此咱們總體的支撐體系以下:前端
最終前端這塊主要負責前端開發(本職工做)和服務端開發(應用邏輯)。vue
爲了保證服務的高可用,而且能提供靠譜的用戶體驗,在整個應用這塊咱們主要作了4件事:python
體驗這塊主要和設計團隊的溝通比較多。設計團隊主要負責:視覺規範、交互規範、界面設計。前端團隊主要負責:組件抽象、視覺還原、交互還原 。react
組件化這塊,咱們調研了多種方案(其實業內成熟方案真的不少)最終結合各類調研以及咱們本身的業務場景咱們獲得如下結論:nginx
基於以上的結論,咱們先封裝了第一批組件,可是發現總體粒度仍是比較粗,UI一致性很難保證,因此咱們在這一層的基礎上抽離了一層UI組件,用來保障UI的一致性。數據庫
命名空間是經過文件夾的方式去管理,每一個組件經過index.js來作爲出入口。express
每一個組件內部存在於一個狀態組,來對內部邏輯進行控制。後端
先後端分離分爲2塊,因爲咱們的業務數據量比較大,單個接口的速度會很是慢,若是採用後端直出的方案去渲染頁面的話,頁面白屏的時間會很是長。因此咱們採用前端spa,後端自建服務(基於Node.js)。
spa
框架選擇這塊我主要針對幾個方面進行調研,社區、是否數據驅動,是否大廠出品,是否支持ie8(或者經過改造能夠比較容易適配),團隊總體的學習和上手成本(部分同窗比較弱),圈定出來的範圍其實比較明顯angular1.x,react,團隊同窗一致對大而全的框架比較感興趣,react在構建大型應用上須要引入太多第三方的包來管理狀態,因此最終的決定是angular1.4.7(改動的成本最小)
vue是團隊內部比較喜歡的框架(不兼容ie8/(ㄒoㄒ)/~~),因此咱們在移動中嘗試使用,相比於react的jsx,咱們更加喜歡vue的簡潔
在pc端咱們的產品是很是重的數據型產品,因此前端的單個文件會比較大,經過構建工具合併後文件會很是大。因此咱們引入了code split的方式,經過路由來切分文件,而且在會在主頁面渲染完成後,預加載部分腳本(js、css咱們是壓縮在一個文件中的),來優化總體的體驗。
服務端
監控這塊分了3部分:
前端監控
因爲咱們的主要客戶是酒店,遇到問題後,他們內部在遠程調試上很難辦到,可是有時候會出現用戶有問題,咱們本身經過帳號去復現就很難發現問題,根據上面的狀況,咱們實現了一套前端監控的體系,用來捕獲用戶的操做路徑和js層面的異常。
主要實現了2部分功能:
服務監控
預警
經過api來接收使用方的預警信息,目前也用在給客戶發送相應的報表
工程方面,在項目的評審,開發,聯調,測試,上線,運營各個環節,咱們提供相應的工具支持,以及標準操做流程和文檔,從而保證各個環節的產出質量和效率,以及各個環節之間過渡的平滑性。
規範化主要是eslint、csslint這類工具保證代碼的風格,結合咱們的團隊特性咱們也產出了本身的代碼規範(每一個團隊應該不同,因此不獻醜了)。 總體質量的保證是各個組的leader,會按期review項目的代碼(主要是忙,2週一次迭代,只能抽時間作)。
框架都是經過業內比較熟知的框架來封裝的(前端angular,後端express),
自動化工具除了你們常規的工具如壓縮、合併這類的,基於咱們的項目咱們自研了項目自動構建,配置自動構建等
分享
調研/自研
總結
ps:招人啦?liuqing@liluo.me
前端、大數據、爬蟲~~