探討Vue.js的組件和模板
摘要:
指令是Vue.js中一個重要的特性, 主要提供了一種機制將數(shù)據(jù)的變化映射為DOM行為。 那什么交數(shù)據(jù)的變化映射為DOM行為, Vue.js是通過數(shù)據(jù)驅(qū)動的, 所以我們不會直接去修改DOM結(jié)構(gòu), 不會出現(xiàn)類似$('ul').append('<li>one</li>')這樣的操作, 當(dāng)數(shù)據(jù)變化時,指令會一句設(shè)定好的操作對DOM進行修改, 這樣就可以只關(guān)注數(shù)據(jù)的變化, 而不用去管理DOM的變化和狀態(tài),
Vue的內(nèi)置指令
1. v-bind
v-bind主要用于綁定DOM元素屬性(attribute),
即元素屬性實際的值是有vm實例中的data屬性提供的。
例如:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <div id="demo"> <span v-bind:cutomId="id">{{message}}</span> </div> <script> //數(shù)據(jù) let obj ={ message:"Hello World", id:'123' }; //聲明式渲染 var vm = new Vue({ el:'#demo', data:obj }); </script> </body> </html>
v-bind可以簡寫為“:”,
上述例子可以簡寫為<span :cotomId="id">
實現(xiàn)效果如下:
2. v-on
綁定事件監(jiān)聽器,簡寫為@。
昨天我們也用過,我們簡寫一下看一下效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <div id="demo"> <span @click="clickHandle">{{message}}</span> </div> <script> //數(shù)據(jù) let obj = { message:"hello Vue" }; //聲明式渲染 var vm = new Vue({ el:"#demo", data:obj, methods:{ clickHandle(){ alert("click") } } }); </script> </body> </html>
效果如下:
3.v-html
v-html,參數(shù)類型為string,
作用為更新innerHTML,
接受的字符串不會進行編譯等操作,
按普通HTML處理
代碼如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <div id="demo" v-html="HTML"></div> <script> //數(shù)據(jù) let obj = { HTML:"<div>Hello World</div>" }; var vm = new Vue({ el:"#demo", data:obj }) </script> </body> </html>
實現(xiàn)效果如下
更多內(nèi)置指令請查詢官網(wǎng):Vue.js指令
模板
html模板
基于DOM的模板,模板都是可解析有效的html
插值
文本:使用“Mustache”語法(雙大括號){{value}}
作用:替換實例上的屬性值,
當(dāng)值改變時,插值內(nèi)容就會自動更新
原生的html:雙大括號輸出的是文本,不會解析html
屬性:使用v-bind進行綁定,可以響應(yīng)變化
使用JavaScript表達式:可以寫簡單的表達式
字符串模板
template字符串
template選項對象的屬性
模板將會替換掛在元素。掛在元素的內(nèi)容都將被忽略。
代碼如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>template模板</title> <script src="../vue.js"></script> </head> <body> <!--HTML模板--> <div id="demo"></div> <script> //數(shù)據(jù) let obj = { html:"<div>String</div>", abc:1 }; var str = "<div>Hello</div>"; var vm = new Vue({ el:"#demo", data:obj, template:str }) </script> </body> </html>
有木有發(fā)現(xiàn)什么驚奇的變化
根節(jié)點只能有一個
將html結(jié)構(gòu)寫在一對script標(biāo)簽中,設(shè)置type="X-template"
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>template模板</title> <script src="../vue.js"></script> </head> <body> <!--HTML模板--> <div id="demo"> <span>vue</span> </div> <script type="x-template" id="temp"> <div> Hello,{{abc}}, <span>sunday</span> </div> </script> <script> //數(shù)據(jù) let obj = { html:"<div>String</div>", abc:1 }; var vm = new Vue({ el:"#demo", data:obj, template:"#temp" }); </script> </body> </html>
實現(xiàn)效果如下:
寫在script標(biāo)簽中,還是比較局限,
如果別的文件也是這個結(jié)構(gòu)的時候,
這個就不能重復(fù)使用。
模板render函數(shù)
render函數(shù)
render 選項對象的屬性
createElement(標(biāo)簽名,{數(shù)據(jù)對象},[子元素]);
子元素為文本或者數(shù)組
我們還是來一段代碼演示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>render函數(shù)</title> <script src="../vue.js"></script> <style type="text/css"> .bg{ background: #ee0000; } </style> </head> <body> <div id="demo"></div> <script> //數(shù)據(jù) let obj = { }; var vm = new Vue({ el:"#demo", data:obj, render(createElement){ return createElement( //元素名 "ul", //數(shù)據(jù)對象 { class:{ bg:true } }, //子元素 [ createElement("li",1), createElement("li",2), createElement("li",3) ] ); } }) </script> </body> </html>
實現(xiàn)效果如下
關(guān)于數(shù)據(jù)對象屬性,講情請參考官網(wǎng)的例子。
總結(jié)
以上所述是小編給大家介紹的Vue.js的組件和模板,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Vue組件模板形式實現(xiàn)對象數(shù)組數(shù)據(jù)循環(huán)為樹形結(jié)構(gòu)(實例代碼)
- vue slot 在子組件中顯示父組件傳遞的模板
- Vue.js的動態(tài)組件模板的實現(xiàn)
- Vue單文件組件基礎(chǔ)模板小結(jié)
- 詳解vue為什么要求組件模板只能有一個根元素
- 在vue-cli的組件模板里使用font-awesome的兩種方法
- vue-cli3 項目優(yōu)化之通過 node 自動生成組件模板 generate View、Component
- vue組件定義,全局、局部組件,配合模板及動態(tài)組件功能示例
- 詳解Vue 動態(tài)添加模板的幾種方法
- 簡單談?wù)刅ue 模板各類數(shù)據(jù)綁定
- Vue整合AdminLTE模板的方法
- VUE 自定義組件模板的方法詳解
相關(guān)文章
在vue中使用screenfull?依賴,實現(xiàn)全屏組件方式
這篇文章主要介紹了在vue中使用screenfull?依賴,實現(xiàn)全屏組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Vue?2?如何添加?register-service-worker?實現(xiàn)緩存請求的問題
這篇文章主要介紹了Vue?2?如何添加?register-service-worker?以實現(xiàn)緩存請求的目的,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11vue2 使用@vue/composition-api依賴包 編譯、打包各種報錯問題分析
由于package.json 文件中 vue、vue-template-compiler 版本號前面 多了個 ^ 導(dǎo)致實際導(dǎo)入時,node_module中的 vue 版本可能被升級為 2.7.x,這篇文章主要介紹了vue2 使用@vue/composition-api依賴包 編譯、打包各種報錯問題分析,需要的朋友可以參考下2023-01-01Vue3+Vite項目使用mockjs隨機模擬數(shù)據(jù)
這篇文章主要介紹了Vue3+Vite項目使用mockjs隨機模擬數(shù)據(jù),需要的朋友可以參考下2023-01-01vue.js集成echarts時遇到的一些問題總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于vue.js集成echarts遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04