探討Vue.js的組件和模板
摘要:
指令是Vue.js中一個(gè)重要的特性, 主要提供了一種機(jī)制將數(shù)據(jù)的變化映射為DOM行為。 那什么交數(shù)據(jù)的變化映射為DOM行為, Vue.js是通過數(shù)據(jù)驅(qū)動(dòng)的, 所以我們不會(huì)直接去修改DOM結(jié)構(gòu), 不會(huì)出現(xiàn)類似$('ul').append('<li>one</li>')這樣的操作, 當(dāng)數(shù)據(jù)變化時(shí),指令會(huì)一句設(shè)定好的操作對(duì)DOM進(jìn)行修改, 這樣就可以只關(guān)注數(shù)據(jù)的變化, 而不用去管理DOM的變化和狀態(tài),
Vue的內(nèi)置指令
1. v-bind
v-bind主要用于綁定DOM元素屬性(attribute),
即元素屬性實(shí)際的值是有vm實(shí)例中的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">
實(shí)現(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,
接受的字符串不會(huì)進(jìn)行編譯等操作,
按普通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>
實(shí)現(xiàn)效果如下

更多內(nèi)置指令請(qǐng)查詢官網(wǎng):Vue.js指令
模板
html模板
基于DOM的模板,模板都是可解析有效的html
插值
文本:使用“Mustache”語法(雙大括號(hào)){{value}}
作用:替換實(shí)例上的屬性值,
當(dāng)值改變時(shí),插值內(nèi)容就會(huì)自動(dòng)更新
原生的html:雙大括號(hào)輸出的是文本,不會(huì)解析html
屬性:使用v-bind進(jìn)行綁定,可以響應(yīng)變化
使用JavaScript表達(dá)式:可以寫簡單的表達(dá)式
字符串模板
template字符串
template選項(xiàng)對(duì)象的屬性
模板將會(huì)替換掛在元素。掛在元素的內(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é)點(diǎn)只能有一個(gè)
將html結(jié)構(gòu)寫在一對(duì)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>
實(shí)現(xiàn)效果如下:

寫在script標(biāo)簽中,還是比較局限,
如果別的文件也是這個(gè)結(jié)構(gòu)的時(shí)候,
這個(gè)就不能重復(fù)使用。
模板render函數(shù)
render函數(shù)
render 選項(xiàng)對(duì)象的屬性
createElement(標(biāo)簽名,{數(shù)據(jù)對(duì)象},[子元素]);
子元素為文本或者數(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ù)對(duì)象
{
class:{
bg:true
}
},
//子元素
[
createElement("li",1),
createElement("li",2),
createElement("li",3)
]
);
}
})
</script>
</body>
</html>
實(shí)現(xiàn)效果如下

關(guān)于數(shù)據(jù)對(duì)象屬性,講情請(qǐng)參考官網(wǎng)的例子。
總結(jié)
以上所述是小編給大家介紹的Vue.js的組件和模板,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Vue組件模板形式實(shí)現(xiàn)對(duì)象數(shù)組數(shù)據(jù)循環(huán)為樹形結(jié)構(gòu)(實(shí)例代碼)
- vue slot 在子組件中顯示父組件傳遞的模板
- Vue.js的動(dòng)態(tài)組件模板的實(shí)現(xiàn)
- Vue單文件組件基礎(chǔ)模板小結(jié)
- 詳解vue為什么要求組件模板只能有一個(gè)根元素
- 在vue-cli的組件模板里使用font-awesome的兩種方法
- vue-cli3 項(xiàng)目優(yōu)化之通過 node 自動(dòng)生成組件模板 generate View、Component
- vue組件定義,全局、局部組件,配合模板及動(dòng)態(tài)組件功能示例
- 詳解Vue 動(dòng)態(tài)添加模板的幾種方法
- 簡單談?wù)刅ue 模板各類數(shù)據(jù)綁定
- Vue整合AdminLTE模板的方法
- VUE 自定義組件模板的方法詳解
相關(guān)文章
vue2和vue3的v-if與v-for優(yōu)先級(jí)對(duì)比學(xué)習(xí)
這篇文章主要介紹了vue2和vue3的v-if與v-for優(yōu)先級(jí)對(duì)比學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
vue-cli項(xiàng)目使用vue-picture-preview圖片預(yù)覽組件方式
這篇文章主要介紹了vue-cli項(xiàng)目使用vue-picture-preview圖片預(yù)覽組件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
nuxt.js添加環(huán)境變量,區(qū)分項(xiàng)目打包環(huán)境操作
這篇文章主要介紹了nuxt.js添加環(huán)境變量,區(qū)分項(xiàng)目打包環(huán)境操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
elementUI el-input 只能輸入正整數(shù)驗(yàn)證的操作方法
這篇文章主要介紹了elementUI el-input 只能輸入正整數(shù)驗(yàn)證,本文給大家詳細(xì)講解對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
基于Vue實(shí)現(xiàn)本地消息隊(duì)列MQ的示例詳解
這篇文章為大家詳細(xì)主要介紹了如何基于Vue實(shí)現(xiàn)本地消息隊(duì)列MQ, 讓消息延遲消費(fèi)或者做緩存,文中的示例代碼講解詳細(xì),需要的可以參考一下2024-02-02
vue中用js如何實(shí)現(xiàn)循環(huán)可編輯表格
這篇文章主要介紹了vue中用js如何實(shí)現(xiàn)循環(huán)可編輯表格,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

