又想到了模板引擎和前端MVVM框架

2022-09-12 17:51:10 字數 1141 閱讀 2065

最近接手了乙個和報表有關的專案。專案後端的大部分工作都是在運算元據庫,作為乙個後端新手談不上有什麼感覺。但對於看了前端的寫法之後,還是有一點點感想。

專案前端主要使用jquery及其外掛程式,也許這就是大部分後端開發寫前端的方式。比較讓我驚訝的是,前端居然是單頁面的,實現單頁面的方法也很簡單,$.load。前端除了有少量使用underscore template之外,沒有大規模使用模版引擎,但有使用jsp渲染選單,用來控制使用者的訪問許可權。

以前專做前端的時候,前端模板引擎是必不可少的,三大前端mvvm框架也全都提供了模板引擎功能。現在開始寫後端之後,手上又多了後端模板引擎這一選擇。

關於頁面是前端渲染還是後端渲染這個問題網上有很多討論,比如***談談前端渲染 vs 後端渲染。不過作為乙個懶惰的開發,在前後端都寫的情況下,後端模板引擎用順手了,往往就懶得寫js了,於是就有了我之前「爭取不寫一句js」的愚蠢想法。我覺得正常的情況下,對於多頁面應用來說,還是首次輸出頁面後端渲染,之後頁面的改變前端渲染比較好,這樣做實現起來也更方便。

如果是單頁面應用,大量的頁面渲染應該是放在前端的,僅僅為了乙個首頁讓後端去渲染頁面,我覺得會顯得比較囉嗦,倒不如全部給restful的介面來得乾淨直白。至於拿nodejs來專門輸出頁面的做法,我暫時還沒有機會體驗。想來想去,也許,前端的事情全部交給瀏覽器去做才是大勢所趨?不管怎麼說,我覺得接手的專案在模板引擎的使用上有點扭扭捏捏的,即沒有完全拋棄,也沒有充分利用。

至於單頁面應用的實現方式,我覺得使用三大框架比自己拿jquery搭一套不成熟的更好。以前有過自己拿jquery和requirejs搭單頁面框架的經驗,在這個過程中我自己學到了不少,但實際用起來,我覺得並不好用。與其讓專案組同事學習使用我的這套爛框架,不如大家都去學學三大框架對個人和專案組更好。

手頭專案上的這套框架用起來我覺得有這麼幾點不好:首先,它沒有路由管理,跳到了哪個頁面在**裡面是完全沒有辦法知道的。如果僅僅是展示資料還好,一旦需要上傳資料,還需要通過頁面來區分上傳資料**就比較麻煩了。我的解決方法還是使用url的hash來記錄。其次,這套框架沒有使用模組化的寫法,這種情況下我最大的感受就是在開發過程中不知道**的邊界在哪,為了解決某些問題,把本屬於不同的js檔案,應該拆開的邏輯混雜在一起了,這也是之前經歷過的事情。

所以,我覺得,即使是作為乙個後端開發(也許應該說是需要運算元據庫的前端開發),也應該擁抱前端開發框架,現在已經不是10年以前了。

學習模板方法模式,讓我想到了貝爺吃蟲子

改善版 優點 缺點 定義乙個方法,這個方法不能被子類複寫但是可以被子類呼叫。在這個方法裡規定了演算法流程或者方法呼叫順序。按照這種想法實現的就叫模板方法模式。說總是模糊,做給你看更清晰!假設咱們來總結一下貝爺吃昆蟲的節目,然後用模板方法模式做個小案例。我們來分析一下貝爺,吃昆蟲的流程 抓蟲子去頭 去...

tpl模板引擎和使用

tpl.php namespace tpl class tpl class tpl 如果快取檔案不為空,則設定,為空時為預設值 if empty cache dir 如果過期時間不為空,則設定,為空時為預設值 if empty lifetime 對外公開的方法 param string name p...

前向星和鏈式前向星(詳解 模板)

前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了。用len i 來記錄所有以i為起點的邊在陣列中的儲存長度。用head i 記錄以i為邊集在陣列中的第乙個儲...