1. 程式人生 > >web中程式語言、框架、模板引擎概念梳理

web中程式語言、框架、模板引擎概念梳理

一朝入程式設計,一天三個坑(已經很客氣了)。

軟體工程的複雜性,在於需求的不確定、問題的虛擬化無實體、方法無固定規律可循(大學軟工課所學)。為了降低程式設計的複雜度,使軟體工程儘可能可控,各路大牛創語言、構框架、建模板,努力營造良好的程式設計生態。

兩年前,作為新一代初入程式設計坑的無名小輩,我切實的感到程式設計環境對我滿滿的惡意——不是程式設計本身的邏輯複雜性導致的束手無策,而是可用的工具太多引起的選擇慌亂——且不提語言琳琅滿目,單論一種語言就填塞著密密麻麻的框架、模板等一系列功能需求之外的“技術故事”,以致於我不知道從何學起、如何高效了。迷茫的原因還是對這諸多工具的生疏,僅僅道聽途說了些學長經驗和網路建議,只知其一不知其二。所以這兩年間我不斷通過實踐和理論學習體會眾多程式設計工具的意義,努力給他們分類、定位,如今思路終於清晰,故特此記錄。

程式語言是最為龐大的概念,java、c、c++等等。它們各自有自己的語法,各自形成自己的完整生態環境。理論上每門語言都能編寫一整套軟體系統。但是有的語言適用範圍相對狹小,需要與其他語言配合使用。

既然如此,為什麼我們光學會語法卻只能編寫“helloworld”過家家,無法參與真正的專案開發?因為我們對整套軟體的架構、分工全然不知,後者說思維混亂。我曾從零開始手撕一個小遊戲,從介面到底層邏輯和資料,我的工程結構極為混亂,使用的程式設計語句功能弱小,極其瑣碎,封裝性很差。後來我學習了框架知識,大獲裨益。經過框架的封裝,只需要一條簡單的語句就能完成手撕數行程式碼才能做到的功能。框架把底層的瑣碎程式碼封裝成能具有功能性的全新語句,遮蔽了底層細節,便利開發人員。web中框架分為前端和後端,前端框架比如jQuery、Vue、React、Angular等,功能就是上文所述的程式碼組織封裝;後端框架除了程式碼封裝之外,還有組織專案結構的功能,它們會為你的專案分包分工,讓你更好的組織程式碼,比如java的Spring boot,Nodejs的express等,從功能範圍上說,後端框架更廣闊,直接框定了專案結構。

照理說有了框架支援,專案已經可以著手了,但如果急於開始,過程中便會發現缺少關鍵支撐——前端資料渲染和程式碼複用。模板引擎為此而生。java web的jsp、freemark、thymeleaf,nodejs的jade和ejs等模板都提供了這類功能,如此一來專案的“技術故事”才算基本解決,開發技術才算初步完備。

清楚了上面三個概念,終於萬事俱備,可以正式投入專案開發,去踩更多的坑了。