最近接手了一個和報表有關的項目。項目后端的大部分工作都是在操作數據庫,作為一個后端新手談不上有什么感覺。但對於看了前端的寫法之后,還是有一點點感想。
項目前端主要使用jQuery及其插件,也許這就是大部分后端開發寫前端的方式。比較讓我驚訝的是,前端居然是單頁面的,實現單頁面的方法也很簡單,$.load。前端除了有少量使用underscore template之外,沒有大規模使用模版引擎,但有使用JSP渲染菜單,用來控制用戶的訪問權限。
以前專做前端的時候,前端模板引擎是必不可少的,三大前端MVVM框架也全都提供了模板引擎功能。現在開始寫后端之后,手上又多了后端模板引擎這一選擇。
關於頁面是前端渲染還是后端渲染這個問題網上有很多討論,比如[轉]談談前端渲染 VS 后端渲染。不過作為一個懶惰的開發,在前后端都寫的情況下,后端模板引擎用順手了,往往就懶得寫JS了,於是就有了我之前“爭取不寫一句JS”的愚蠢想法。我覺得正常的情況下,對於多頁面應用來說,還是首次輸出頁面后端渲染,之后頁面的改變前端渲染比較好,這樣做實現起來也更方便。
如果是單頁面應用,大量的頁面渲染應該是放在前端的,僅僅為了一個首頁讓后端去渲染頁面,我覺得會顯得比較啰嗦,倒不如全部給RESTful的接口來得干凈直白。至於拿NodeJS來專門輸出頁面的做法,我暫時還沒有機會體驗。想來想去,也許,前端的事情全部交給瀏覽器去做才是大勢所趨?不管怎么說,我覺得接手的項目在模板引擎的使用上有點扭扭捏捏的,即沒有完全拋棄,也沒有充分利用。
至於單頁面應用的實現方式,我覺得使用三大框架比自己拿jQuery搭一套不成熟的更好。以前有過自己拿jQuery和RequireJS搭單頁面框架的經驗,在這個過程中我自己學到了不少,但實際用起來,我覺得並不好用。與其讓項目組同事學習使用我的這套爛框架,不如大家都去學學三大框架對個人和項目組更好。
手頭項目上的這套框架用起來我覺得有這么幾點不好:首先,它沒有路由管理,跳到了哪個頁面在代碼里面是完全沒有辦法知道的。如果僅僅是展示數據還好,一旦需要上傳數據,還需要通過頁面來區分上傳數據來源就比較麻煩了。我的解決方法還是使用url的hash來記錄。其次,這套框架沒有使用模塊化的寫法,這種情況下我最大的感受就是在開發過程中不知道代碼的邊界在哪,為了解決某些問題,把本屬於不同的JS文件,應該拆開的邏輯混雜在一起了,這也是之前經歷過的事情。
所以,我覺得,即使是作為一個后端開發(也許應該說是需要操作數據庫的前端開發),也應該擁抱前端開發框架,現在已經不是10年以前了。