搜尋
首頁php教程php手册Django的模板实现方式和PHP模板以及前端模板的区别

在学习Django模板之前我以为也和很多php模板引擎一样,是通过缓存文件输出,执行模板中的python代码来实现的。读完发现居然和前端模板相似,用了正则。 为了更好的体会设计的哲学,我同时参考了tornato、drupal、codeigniter、aceTemplate、underscore中的模

在学习Django模板之前我以为也和很多php模板引擎一样,是通过缓存文件输出,执行模板中的python代码来实现的。读完发现居然和前端模板相似,用了正则。

为了更好的体会设计的哲学,我同时参考了tornato、drupal、codeigniter、aceTemplate、underscore中的模板设计。

Django模板特点

  Django的模板设计时有个重要的假设是:“写模板的不懂python”。因此你只要搞告诉他基本的逻辑结构(判断、循环、输出变量等)的写法就行了。同时也避免了程序员将业务逻辑写道模板里。解析模板的时候和前端模板非常类似,也是用正则提取除所有的代码部分,然后顺序解析(解析的时候根据实际情况构造作用域)成html。

  php中模板实现得比较简单,主要是通过缓冲输出流来实现的。模板中使用的就是正常的php代码。这主要也是因为php文件把不在php标记中的文本都直接输出的特性。所以php的模板就本上都是能直接执行php代码的。

  这里可以看出两种完全不同的设计思路,Django是主动对模板使用者设限,想当于自己实现了一个小的模板语言。而tornato、php模板和前端模板则是让尽量让开发者减少学习成本,同时获得极大的自由。不过前端模板让开发者获得极大自由的主要原因是html和前端逻辑几乎都是统一个人写的。

2.支持模板嵌套

3.支持模板继承

 

总结

以下几点是我觉得有意思的:

1. 无论哪种模板实现,其实本身和html没有一毛钱关系。

2. 要论速度,肯定是像php这种直接缓存输出流的最快。毕竟省了模板编译这一步。tornato生成python语句之后如果也是封装成函数,那么应该是可以缓存的,没有考证。

3. Django模板实现的方式也许和整个框架的设计理念是相关的,我还没有看完,不妄下评论。不过至少在书里面说起清楚了为什么这么做。

刚开始学python和Django,有写的不对的地方感谢读者指正。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境