VueJS 的模板引擎

2021-09-11 09:11:17 字數 1796 閱讀 7257

vuejs作為乙個前端框架,少不了模板引擎的功能,為了優化模板引擎,vue會在編譯階段把template轉化為render函式,在編譯階段之前(預編譯階段)我們可以定製一些模板引擎的行為,比如文字插入分隔符指令過濾器

通過vue的官方文件,我們知道vue提供的模板引擎的語法有:

插值 1.1. html標籤的文字內容 1.2. html標籤的純html內容 1.3. html標籤的屬性內容

指令 2.1. 內建的指令有: 2.2. 指令可以帶上修飾符

過濾器 vue給了我們很大的靈活性,比如我們可以定義文字插入分隔符指令過濾器

定義文字插入分隔符很簡單,只需要在例項化vue的時候,在options.delimiters設定自定義的分隔符就行了:

new vue(']

})複製**

自定義指令的方式如下:

directives: 

}複製**

vue為指令定義函式提供了幾個鉤子函式:

bind: 只呼叫一次,指令第一次繫結到元素時呼叫,用這個鉤子函式可以定義乙個在繫結時執行一次的初始化動作。

inserted: 被繫結元素插入父節點時呼叫(父節點存在即可呼叫,不必存在於 document 中)。

update: 被繫結元素所在的模板更新時呼叫,而不論繫結值是否變化。通過比較更新前後的繫結值,可以忽略不必要的模板更新(詳細的鉤子函式引數見下)。

componentupdated: 被繫結元素所在模板完成一次更新週期時呼叫。

unbind: 只呼叫一次, 指令與元素解綁時呼叫。

鉤子函式的引數:

el: 指令所繫結的元素,可以用來直接操作 dom 。

binding: 乙個物件,包含以下屬性: 2.1. name: 指令名,不包括 v- 字首。 2.2. value: 指令的繫結值, 例如: v-my-directive="1 + 1", value 的值是 2。 2.3. oldvalue: 指令繫結的前乙個值,僅在 update 和 componentupdated 鉤子中可用。無論值是否改變都可用。 2.4. expression: 繫結值的字串形式。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"。 2.5. arg: 傳給指令的引數。例如 v-my-directive:foo, arg 的值是 "foo"。 2.6. modifiers: 乙個包含修飾符的物件。 例如: v-my-directive.foo.bar, 修飾符物件 modifiers 的值是 。

oldvnode: 上乙個虛擬節點,僅在 update 和 componentupdated 鉤子中可用。

過濾器可以用在兩個地方:mustache 插值v-bind 表示式

自定義過濾器的乙個案例:

new vue(

}})複製**

可以看出,過濾器函式的第乙個引數是「管道符"前面的數值,並返回經過處理的數值,可以作為下乙個過濾器的入參。

通過render函式生成的vnode,會帶有跟模板引擎執行相關的配置,比如directives等。

所以在掛載階段執行patch函式的時候,會把vnode轉換為真實dom,這時模板引擎將會讀取相關配置並執行。

自定義指令

過濾器

PHP原生模板引擎 最簡單的模板引擎

複製 如下 php a array a b c require template demo.php 引用模板 程式設計客棧 模板檔案 複製代gkugmrgq碼 如下 程式設計客棧ype html 模板測試 a 程式設計客棧1 複製 如下 陣列的迭代 smarty 鍵值 對於php程式設計師那個更好理...

模板引擎的存在

以前學習php的時候不清楚模板引擎的作用,看別人使用了,呢麼自己也用了。後來我做了幾個專案覺得模板引擎存在的意義沒有啊,我經常都是直接使用原生的php自己做。我一度不明白,模板引擎存在的意義是什麼。最近,我想了想,以前程式和前台都是乙個人做的,所以使用引擎沒什麼用。但是如果程式在後期維護的時候,還是...

vuejs掛載點,模板與例項的關係

body div id root h1 h1 div script newvue script body 掛載點 element對應的標籤 上面的html中 去掉 div id root div 這個標籤就稱之為vue例項的掛載點,因為下面的el,也就是element正好與上面的標籤的id對應的上 ...