回複內容:
確實是少了。我想原因是多方面的:
- smarty是用來拼頁面的,而現在頁面複雜,非同步載入,很多邏輯由js實現,導致php直接拼頁面本身的工作減少
- smarty本身邏輯複雜,cache層次多,而現實網站多少用不到那麼多功能,不用smarty能減少點開銷
- smarty的功能並不複雜,各類開源cms類產品多整合自己研發的替代方案,整合smarty的不多。國外開源架構還會提到如何整合,但是這些產品的國內影響力遠不如本地的現成開源項目二次開發
- smarty預設會使用本地檔案快取,而目前越來越多的部署環境是不允許本地寫檔案的(比如一些雲環境),需要調整才能使用
- php本身並不複雜,沒有複雜到前端工程師學不會的程度,所以也就不必退而求其次學smarty的文法與php層互動
前幾年面試工程師必問smarty,因為那是課本上沒有但是稍微有點行業嗅覺的工程師都會關注的領域,但是這幾年,已經沒有人在簡曆裡提到了,你的感覺是對的。
因為 PHP 本身就是最好的
模板語言Smarty 流行的時候我還沒畢業,當時就覺得無法理解。本來 PHP 已經有一個內嵌文法了,像 ... 這種的,一點也不比 Smarty 難學,而且更加靈活,還不要解析,可讀性好效率也高。至於說當初 Smarty 鼓吹的前後端分離,不就是把視圖單獨抽出一層嗎?原本 PHP 一個 include 語句就能搞定的事情。所以當時覺得 Smarty 這個東西根本沒有存在的意義。
不過現在終於好了,人們的認識迴歸了常識。在PHP中。通過使用smarty來解決前後分離的問題。但是在我看來。還不如不分。因為最後還是PHP來改頁面。到最後前端也不會改你的東西。所以說相當於硬給加了一層。還有就是說產生本機快取了。其實我剛開始說的就是已經產生了。所以就用不到這種了。其實。我們是把簡單的東西給複雜化了。你可以看看wordpress或者CodeIgniter都是使用原生的模板。因為PHP本身就是一種模板引擎的,它支援跟html進行混合嵌套。那麼為什麼非要用smarty呢。你還有一次將模板解析成原生PHP的過程。浪費時間啊。還要寫檔案。還不如直接寫原生呢。。。一。smarty本身過於重量級。內建的一些緩衝機制用起來限制很大。
二。ajax等新興技術引入。很少有頁面採用過去的由php服務端一次性渲染。而是交給用戶端由js多次渲染。
三。mvc架構興起,內建的模板引擎比smarty好用。例如CI的我們公司一個內部項目還在用smarty,而且是在ci裡。。