又想到了模板引擎和前端MVVM框架
最近接手了一個(gè)和報(bào)表有關(guān)的項(xiàng)目。項(xiàng)目后端的大部分工作都是在操作數(shù)據(jù)庫(kù),作為一個(gè)后端新手談不上有什么感覺。但對(duì)于看了前端的寫法之后,還是有一點(diǎn)點(diǎn)感想。
項(xiàng)目前端主要使用jQuery及其插件,也許這就是大部分后端開發(fā)寫前端的方式。比較讓我驚訝的是,前端居然是單頁(yè)面的,實(shí)現(xiàn)單頁(yè)面的方法也很簡(jiǎn)單,$.load。前端除了有少量使用underscore template之外,沒有大規(guī)模使用模版引擎,但有使用JSP渲染菜單,用來控制用戶的訪問權(quán)限。
以前專做前端的時(shí)候,前端模板引擎是必不可少的,三大前端MVVM框架也全都提供了模板引擎功能。現(xiàn)在開始寫后端之后,手上又多了后端模板引擎這一選擇。
關(guān)于頁(yè)面是前端渲染還是后端渲染這個(gè)問題網(wǎng)上有很多討論,比如[轉(zhuǎn)]談?wù)勄岸虽秩?VS 后端渲染。不過作為一個(gè)懶惰的開發(fā),在前后端都寫的情況下,后端模板引擎用順手了,往往就懶得寫JS了,于是就有了我之前“爭(zhēng)取不寫一句JS”的愚蠢想法。我覺得正常的情況下,對(duì)于多頁(yè)面應(yīng)用來說,還是首次輸出頁(yè)面后端渲染,之后頁(yè)面的改變前端渲染比較好,這樣做實(shí)現(xiàn)起來也更方便。
如果是單頁(yè)面應(yīng)用,大量的頁(yè)面渲染應(yīng)該是放在前端的,僅僅為了一個(gè)首頁(yè)讓后端去渲染頁(yè)面,我覺得會(huì)顯得比較啰嗦,倒不如全部給RESTful的接口來得干凈直白。至于拿NodeJS來專門輸出頁(yè)面的做法,我暫時(shí)還沒有機(jī)會(huì)體驗(yàn)。想來想去,也許,前端的事情全部交給瀏覽器去做才是大勢(shì)所趨?不管怎么說,我覺得接手的項(xiàng)目在模板引擎的使用上有點(diǎn)扭扭捏捏的,即沒有完全拋棄,也沒有充分利用。
至于單頁(yè)面應(yīng)用的實(shí)現(xiàn)方式,我覺得使用三大框架比自己拿jQuery搭一套不成熟的更好。以前有過自己拿jQuery和RequireJS搭單頁(yè)面框架的經(jīng)驗(yàn),在這個(gè)過程中我自己學(xué)到了不少,但實(shí)際用起來,我覺得并不好用。與其讓項(xiàng)目組同事學(xué)習(xí)使用我的這套爛框架,不如大家都去學(xué)學(xué)三大框架對(duì)個(gè)人和項(xiàng)目組更好。
手頭項(xiàng)目上的這套框架用起來我覺得有這么幾點(diǎn)不好:首先,它沒有路由管理,跳到了哪個(gè)頁(yè)面在代碼里面是完全沒有辦法知道的。如果僅僅是展示數(shù)據(jù)還好,一旦需要上傳數(shù)據(jù),還需要通過頁(yè)面來區(qū)分上傳數(shù)據(jù)來源就比較麻煩了。我的解決方法還是使用url的hash來記錄。其次,這套框架沒有使用模塊化的寫法,這種情況下我最大的感受就是在開發(fā)過程中不知道代碼的邊界在哪,為了解決某些問題,把本屬于不同的JS文件,應(yīng)該拆開的邏輯混雜在一起了,這也是之前經(jīng)歷過的事情。
所以,我覺得,即使是作為一個(gè)后端開發(fā)(也許應(yīng)該說是需要操作數(shù)據(jù)庫(kù)的前端開發(fā)),也應(yīng)該擁抱前端開發(fā)框架,現(xiàn)在已經(jīng)不是10年以前了。
轉(zhuǎn)載于:https://www.cnblogs.com/linden5/p/7208472.html
總結(jié)
以上是生活随笔為你收集整理的又想到了模板引擎和前端MVVM框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单粗暴地理解js原型链–js面向对象编
- 下一篇: linux iptables扩展,脚本防