PHP 模板引擎有多大意義?

來源:互聯網
上載者:User
現在有很多 PHP 模板引擎,並且有不同的範本語言,我一直想不通這樣能帶來多大的好處,所以我想聽聽大家的意見。

回複內容:

以前 PHP 的 OO 特性不太好,沒有一些優雅的技術手段來將應用邏輯和展示分開,所以發展出了很多模板技術。但現在得益於對 OO 特性的支援,MVC 架構的流行,已經可以丟掉模板引擎了(基於曆史原因除外)。Zend Framework 更是直接推薦使用原生 PHP 指令碼作為模板引擎,因為 PHP 本來就支援代碼與 HTML 的混合書寫,同時開發人員也更不需要學習新的模板文法。 以前對模版引擎,我也覺得沒多大意義,畢竟這事php自己也可以做的很好
但看了twig這款模版引擎之後,我的觀點有了些許變化
這款模版引擎在我看來最大的好處就是可以提高套模板的效率
簡潔的文法,常用的標籤、過濾器、函數,又方便擴充。總之,套模板再也不用寫那冗長的php代碼了。
要是php也能出個coffeescript就好了。 MVC分開的話,V已經沒有意義跑模版引擎了,原生最好。
以前主要是代碼分離,方便前端開發。 個人認為模版引擎對於php還是有必要的。
  1. 安全,比如預設轉義輸出
  2. 規範,防止團隊中有人在視圖中寫大量的邏輯代碼
  3. 效能,據說可以提高效能
  4. 可讀,個人認為twig或者laravel的blade引擎比php可讀性好
個人一直持反對模板引擎的觀點。
主要是PHP本身已經可以實現模板引擎的功能了。或者說PHP本身就是一個模板引擎。至於給非後端人員使用,其實這事也有點牽強。確實直接使用PHP書寫模板容易引起一些不規範的操作,但是這事其實是靠規範約束的,不是靠技術架構約束的,幾乎所有的模板引擎都提供了運行原生代碼的能力,頁面開發人員遇到繞不過去的點仍然會使用原生的PHP代碼,然後一樣可以埋雷。
良好的規範、共識和review機制來解決這類問題更有效。PHP本身就是一個非常隨意的語言,你可以在任何地方取得很多模組本不應該做的事。MVC為瞭解耦,但是仍然很多人在model和view裡讀$_GET,在controller甚至view裡寫sql。在controller和model裡寫html。這種事一個MVC根本搞不定,否則這個MVC就是一個不具有普適性的MVC了。

綜其原因,原生解決不了的問題,模板一樣解決不了,而且還要增加學習成本和開發成本,承擔不易調試的麻煩,模板引擎本身有bug的風險,多解決一個依賴的成本等等。 模板設計的意義也是目的就是為了程式邏輯與頁面展現分離,便於程式員和美工分工協作而又不會互相干擾。

然而早期的PHP模板實際上是按照程式員的思維邏輯產生的一套機制,在這種機制下,包括在現在所謂的“原生”機制下,頁面美工仍然需要面對包含著大量代表程式邏輯的html。不能算作是徹底的分離。

要說意義有多大,相對於曾經的ASP社區,PHP社區至少一直在努力探索著這一Web開發的核心問題,推動著這一問題的不斷思考和挖掘。

要真正搞好Web開發的MVC分離,不能只站在程式員的角度思考問題,必須考慮Web開發的全程工作分工,分工清晰了,分離的方案就容易確定。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.