VUEå ¥é¨å°å®æ--Vueå®ä¾å模æ¿è¯æ³
1ãVueå®ä¾
1ãæ¯ä¸ª Vue åºç¨é½æ¯éè¿ç¨ Vue
彿°å建ä¸ä¸ªæ°ç Vue å®ä¾å¼å§çï¼æ¯å¦æä»¬å¨ä¸é¢è¿ä¸ªä¾åä¸å¦æä½¿ç¨æµè§å¨æå¼ï¼æä»¬å¨æ§å¶å°è¾å
¥vm.$dataãvm.$elé½è½æå°åºååºçå
容ãå¨ä¸ä¸ªVueå®ä¾ä¸ï¼åelï¼dataï¼methods....è¿æå¾å¤ï¼é½å«åVueçå®ä¾å±æ§ãè¿äºå®ä¾å±æ§é½è½éè¿ { å®ä¾å.$å®ä¾å±æ§å }è¿ç§æ¹å¼å¾å°ã
2ãå®é 䏿¯ä¸ªç»ä»¶é½æ¯ä¸ä¸ªVueçå®ä¾ï¼æè 说ä¸ä¸ªVueç项ç®é½æ¯ç±ä¸ä¸ªä¸ªçVueçå®ä¾æ¨¡åç»æã
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="root">
<div @click="handleBtnClick">
{{message}}
</div>
<item></item>
</div>
<script>
Vue.component("item", {
template: "<div> hello world </div>",
})
var vm = new Vue({
el: '#root',
data: {
message:'hello world',
},
methods: {
handleBtnClick: function() {
alert('hello');
}
}
})
</script>
</body>
</html>
2ãVueççå½å¨æåçå½å¨æé©å
1ãä»ä¹æ¯çå½å¨æå½æ°ï¼Vueå®ä¾å¨æä¸ä¸ªæ¶é´ç¹ä¼èªå¨æ§è¡ç彿°ã
2ã彿们å建ä¸ä¸ªVueçå®ä¾çæ¶åï¼ä¹å°±æ¯ä½¿ç¨new Vueçæ¶åï¼Vueä¼èªå¨çå»åå§åäºä»¶åçå½å¨æãå¨è¿ä¸ªæ¶é´æ®µä¼æ§è¡ççå½å¨æå½æ°æ¯beforeCreateã
3ãæ¥çä¼è¿è¡ä¸äºå¤é¨æ³¨å ¥åååç»å®çä¸äºæä½åï¼åºæ¬Vueå®ä¾çåå§åé½å®æäºï¼è¿ä¸ªæ¶é´ç¹ä¸ä¼æä¸ªçå½å¨æå½æ°ä¼èªå¨æ§è¡ createdã
4ãæ¥çä¼è¯¢é®ä¸ä¸ªæ¡ä»¶è¯´ï¼ææ²¡æelè¿ä¸ªé项ï¼ç¶ååé®ä½ ææ²¡ætemplateè¿ä¸ªé项ãå¦ææ²¡æçè¯ï¼Complie elâs outerHTML as templateï¼æelå¤å±çhtmlä½ä¸ºæ¨¡æ¿ï¼ä»ä¹ææï¼å°±æ¯è¯´ä»el䏿¾å°é£ä¸ªVueæ¥ç®¡çDOMï¼æé£é¨åå é¨æè æ´ä½ä½ä¸ºå½å模æ¿,ä¸é¢è¿ä¸ªä¾åä¸å°±æ¾å°id为appçdivï¼å°<div id="app">hello world</div>æ´ä¸ªä½ä¸ºæ¨¡æ¿æ¥è¿è¡æ¸²æãæä»¥è¯´ï¼ç°å¨å°±å¯ä»¥ç¨å¾®çè§£ä¸ä¸ä¸ºä»ä¹æ¯ç±ä¸ä¸ªä¸ªVueçç»ä»¶ææï¼åçDOMä¹ä¸è¿æ¯æVueä¸ç模æ¿å±æ§æ¿å°äºå¤é¢èå·²ï¼ãæ»ç»ä¸ä¸ï¼ætemplate就渲ætemplateï¼æ²¡æå°±æ¸²æå¤é¨ç管çDOMã
<div id="app">hello world</div>
...
var app=new Vue({
el:'#app',
})
ä¸ä¸é¢æ¯çä»·çï¼
<div id="app"></div>
...
var app=new Vue({
el:'#app',
template:"<div>hello world</div>"
})
5ãå¨é¡µé¢æ¸²æä¹åï¼ä¹å°±æ¯æ°æ®åæ¨¡æ¿æ³ç»åå³å°æè½½å¨é¡µé¢çä¹åçä¸ç¬é´ï¼ä¼èªå¨æ§è¡ä¸ä¸ªçå½å¨æå½æ° beforeMountã
6ãå¨beforeMountæ§è¡åï¼æ°æ®å模æ¿ç»åçæçVueå®ä¾ä¸çDOMå ç´ å°±ä¼æè½½å°é¡µé¢ä¸ï¼å¨ä¸é¢çä¾åä¸å°±æ¯hello world被æ¾ç¤ºå¨é¡µé¢ä¸é¢åï¼åä¼èªå¨æ§è¡ä¸ä¸ªçå½å¨æå½æ° mountedãä½ è½å¨ä¸é¢çä¾åä¸çå°å¨beforeMountæ§è¡çæ¶åï¼id为appçDOMå ç´ è¿ä»ä¹é½æ²¡æï¼æ§è¡mountedçä¹åï¼hello worldå·²ç»åºæ¥äºã
7ãèæ°æ®æ´æ°å鿝ç4个çå½å¨æå½æ°å¿ 须卿°æ®æ´æ°åæ§è¡éæ¯å½æ°xx.destroy()æä¼æ§è¡ãæä»¬ä¸é¢çä¾å䏿æµè¯ç¨ä¾ã
8ãå¦å¤é¤äºæä»¬å°ç8个çå½å¨æå½æ°å¤ï¼è¿æ3个çå½å¨æå½æ°ï¼æä»¬å¨åé¢ä¼è®²å°ã
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Vueçå½å¨æé©å</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="app"></div>
<script>
var vm=new Vue({
el:'#app',
template:"<div @click='handleBtnDestory'>{{content}}</div>",
data:{
content:'hello world',
},
methods:{
handleBtnDestory:function() {
//this.$destroy(); //ç¨æ¥æµè¯éæ¯destroyççå½å¨æå½æ°
this.content="I'm changed";//ç¨æ¥æµè¯updataççå½å¨æå½æ°
}
},
beforeCreate:function() {
console.log("beforeCreate");
},
created:function() {
console.log("created");
},
beforeMount:function() {
console.log(this.$el); //è¾åºç»ææ¯<div id="app"></div>
console.log("beforeMount");
},
mounted:function() {
console.log(this.$el); //è¾åºç»ææ¯<div id="app">hello world</div>
console.log("mounted");
},
beforeDestroy:function() {
console.log("beforeDestroy");
},
destroyed:function() {
console.log("destroyed");
},
beforeUpdate:function() {
console.log("beforeUpdate");
},
updated:function() {
console.log("updated");
}
})
</script>
</body>
</html>
3ãæ¨¡æ¿è¯æ³
1ãé¦å è¦æç¡®çå°±æ¯æä»¬å¨æä»¤åé¢è·ç䏿¯å符串ï¼è½ç¶æ¯ç¨å¼å·å 裹çï¼ä½æä»¤åé¢è·ççæ¯ä¸ªJS表达å¼ã
2ãæå¼è¡¨è¾¾å¼ãv-textãv-htmlä¹é´çåºå«ï¼æå¼è¡¨è¾¾å¼åv-textå ¶å®ä¸æ ·ï¼å¯¹å 容齿¯è¿è¡è½¬ä¹ï¼æ¾ç¤ºåæ¬çå符串å 容ï¼èv-htmlæ¯å¯¹å 容è¿è¡è§£æï¼å¦æå 容æ¯html表达å¼ï¼æç §htmlçæ¹æ³å±ç¤ºã
3ãå¯¹äºæå¼è¡¨è¾¾å¼åv-text齿¯ä¸ä¸ªJS表达å¼ï¼æä»¥å¯ä»¥åæä¸é¢è¿æ ·ãèv-htmlå°±è¦åæ åµï¼å¦ææ¯å 容æ¯html表达å¼ï¼å°±ä¸è½åv-htmlåé¢çå¼å·ä¸åæJS表达å¼äºï¼åäºä¹æ²¡æææï¼å¦ä¸ä¾åï¼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="app"> <!--æå¼è¡¨è¾¾å¼-->
{{name + 'Lee'}}
<div v-text="name + 'Lee'"></div><!--Vueæä»¤æå¼ï¼è®©divä¸çinnerHtmlçå
容åænameçå
容ï¼ä¼æ¾ç¤º<h1>dell</h1>è¿ä¸ªå符串-->
<div v-html="name + 'Lee'"></div><!--Vueæä»¤æå¼ï¼è§£ænameä¸çå
容,å¦ä¸æç¤ºä¼æ¾ç¤ºh1æ ç¾ç±»åçdell-->
</div>
<script>
var app = new Vue({
el:'#app',
data:{
name:"<h1>dell</h1>",
},
})
</script>
</body>
</html>
å¯ä»¥å¨æµè§å¨ä¸çå°ææï¼å嫿¯æå¼ï¼v-textï¼v-htmlï¼