模板代码复用的三种方式: 宏, 继承, 包含
生活随笔
收集整理的這篇文章主要介紹了
模板代码复用的三种方式: 宏, 继承, 包含
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模板代碼復用
在模板中,可能會遇到以下情況:
- 多個模板具有完全相同的頂部和底部內容
- 多個模板中具有相同的模板代碼內容,但是內容中部分值不一樣
- 多個模板中具有完全相同的 html 代碼塊內容
宏
對宏(macro)的理解:
- 可以把宏理解為一個函數,它會返回一個模板或者 HTML 字符串
- 為了避免反復地編寫同樣的模板代碼,出現代碼冗余,可以把他們寫成函數以進行重用
- 需要在多處重復使用的模板代碼片段可以寫入單獨的文件,再包含在所有模板中,以避免重復
使用
- 定義宏
- 調用宏
- 這會輸出
- 把宏單獨抽取出來,封裝成html文件,其它模板中導入使用,文件名可以自定義macro.html
- 在其它模板文件中先導入,再調用
-
繼承
模板繼承是為了重用模板中的公共內容。一般Web開發中,繼承主要使用在網站的頂部菜單、底部。這些內容可以定義在父模板中,子模板直接繼承,而不需要重復書寫。
- 相當于在父模板中挖個坑,當子模板繼承父模板時,可以進行填充。
- 子模板使用 extends 指令聲明這個模板繼承自哪個模板
- 父模板中定義的塊在子模板中被重新定義,在子模板中調用父模板的內容可以使用super()
父模板
- base.html
子模板
- extends指令聲明這個模板繼承自哪
- 模板繼承使用時注意點:
- 不支持多繼承
- 為了便于閱讀,在子模板中使用extends時,盡量寫在模板的第一行。
- 不能在一個模板文件中定義多個相同名字的block標簽。
- 當在頁面中使用多個block標簽時,建議給結束標簽起個名字,當多個block嵌套時,閱讀性更好。
包含
Jinja2模板中,除了宏和繼承,還支持一種代碼重用的功能,叫包含(Include)。它的功能是將另一個模板整個加載到當前模板中,并直接渲染。
- include的使用
包含在使用時,如果包含的模板文件不存在時,程序會拋出TemplateNotFound異常,可以加上?ignore missing?關鍵字。如果包含的模板文件不存在,會忽略這條include語句。
- include 的使用加上關鍵字ignore missing
小結
- 宏(Macro)、繼承(Block)、包含(include)均能實現代碼的復用。
- 繼承(Block)的本質是代碼替換,一般用來實現多個頁面中重復不變的區域。
- 宏(Macro)的功能類似函數,可以傳入參數,需要定義、調用。
- 包含(include)是直接將目標模板文件整個渲染出來。
轉載于:https://www.cnblogs.com/skaarl/p/9399593.html
總結
以上是生活随笔為你收集整理的模板代码复用的三种方式: 宏, 继承, 包含的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Service 深度解析
- 下一篇: spring容器的设值注入和构造注入