寫博客的好處是給自己留下些痕跡,多年以后回頭看看,除了瑣碎之外還有些沉淀。
前端團隊從無到有,雖工作內容不值一提,倒也是麻雀雖小五臟俱全,自己也是思考了一些東西,簡略紀錄如下:
人員任務分配:
前端本身的組成內容分為CSS3,HTML,Javascript三塊。前兩者相對聯系緊密,往往HTML結構與CSS選擇符是強耦合,修改樣式必定要修改DOM結構,所以前兩者(CSS,HTML)由一個人統一負責,這個人我們可以叫CSSer。Javascript負責業務邏輯實現和無法單純使用css實現的顯示效果,后面簡稱為JSer。
工作流程:
產品需求定稿 --》UI設計提供視覺稿--》前端(包括Csser,JSer)分析可行性,工作量評估--》Csser根據產品描述和UI設計撰寫靜態網頁,實現UI效果;JSer與后台討論約定接口契約--》UI設計復核靜態頁面實現效果 --》JSer基於靜態頁面實現業務邏輯和需要JSer配合的動態效果 --》UI設計復核頁面實現效果 --》產品復核業務邏輯實現效果--》提交SIT測試--》提交UAT測試--》提交預生產測試--》發布生產
采用這種工作方式可能存在的問題是:
1. JSer需要實現的靜態頁面才能開始工作。解決方法:CSSer配合UI設計盡早開始參與下一版本的靜態頁面開發;
2. 靜態頁面的更新導致JSer返工。JSer使用JS模版(http://underscorejs.org/#template)來轉換靜態頁面。由於CSSer后期可能對靜態頁面進行修改,JSer這時候就需要對比靜態文件來更新模板,而這種對比往往很費時。由於Javascript使用的模板是有Javascript邏輯嵌入其中,跟Javascript實現邏輯是強相關的,而CSSer又無法take模版的任務。解決方法:CSSer在將靜態文件給JSer以后如果再有改變,盡量少改變HTML結構,如果HTML結構需要改變可以郵件通知改動了哪里;
3. 復雜的樣式問題仍然可能涉及CSS和Javascript的協同;
4. 前端人員比較少的話,很難分這么細;
5. 契約接口變更考慮不全可能導致契約變更,導致前端重復工作;
6. 每個項目的參與者包括CSSer和JSer兩個人參與,可能存在交流溝通的消耗;
7.單純的css和js的分離開發方式導致每個人的技術成長存在限制,不適合全棧方向的發展。
框架技術:
underscorejs.org(工具類,操作后台的JSO數據,提供前端模版實現JS和HTML分離(http://underscorejs.org/#template))
zeptojs.com(移動端Jquery的輕量級替代,用於DOM操作)
jquery.com (pc端操作DOM)
backbonejs.org(提供單頁應用的MVC結構和頁面路由)
dojo(http://dojotoolkit.org/)提供后台管理系統的復雜插件
grunt(http://gruntjs.com/)對前端代碼進行打包混謠合並
requirejs(http://requirejs.org/) AMD加載器組織JS代碼
nightWatchjs(http://nightwatchjs.org/) JS單元和功能測試
JSDoc(http://usejsdoc.org/)代碼注釋和API文檔生成
expressjs(http://expressjs.com/)前后端並行開發時候的數據模擬
mongodb(https://www.mongodb.org/)測試和模擬數據的存儲
編碼規范:
1. 優先使用CSS3特性,在一些低端版本的機器上實現基本顯示,向下兼容。CSS文件單獨存放目錄。頁面中不寫死style樣式,CSS提供類(class屬性)嵌入頁面實現顯示效果;
2. 所有ajax請求在錯誤狀態需要顯示錯誤信息,可以使用封裝的同一方法處理;
3. 頁面中不允許引用不需要(或間接引用)的AMD資源模塊;
4. 變量、函數、文件命名使用英文駝峰命名,不在頁面中使用無語義的命名;
5. 在使用對象的屬性時候要判斷對象本身是否是object or domNode;
6. 存在if需要同時存在else分支
