vue-cli腳手架使用

new Vue({

????????el:'#app',//要控制的容器

????????template:'',//組件調(diào)用標(biāo)簽

????????components:{App}//注冊(cè)的組件 名稱(chēng)來(lái)自import引入時(shí)的名字

})


組件嵌套方式

1,全局注冊(cè)

????????(1).在main.js中import引入

????????(2).在new Vue 的上方

????????????????Vue.component("組件的name",引入時(shí)定義的名字);

????????(3).在需要的位置用組件中name的名字做標(biāo)簽使用

2,局部注冊(cè)

????????(1).在需要的父級(jí)組件的script內(nèi)export外,import引入

????????(2).在其export的components對(duì)象中添加注冊(cè),名字是引入時(shí)定義的名字

????????(3).在需要的位置用組件中name的名字做標(biāo)簽使用


組件的style上加scoped表示樣式作用域


傳值:string number boolean ???????傳值僅僅會(huì)在單一操作的組件上發(fā)生變化

引用:array object ???????????????????????????傳引用會(huì)導(dǎo)致全部的數(shù)據(jù)變化

父子屬性傳值:

父向子傳值:

1.在子組件的標(biāo)簽上v-bind:自定義屬性名=“傳值名”,

2.在子組件內(nèi)sxport中props:[“自定義屬性名”]

props應(yīng)寫(xiě)成標(biāo)準(zhǔn)寫(xiě)法:

props:{

自定義屬性名:{

type: Array,//數(shù)據(jù)類(lèi)型

required:true, //

}

}

事件傳值(子向父?jìng)髦担?/p>

1.在子組件中定義事件,用this.$emit("自定義的事件名", "傳遞的內(nèi)容");

2.在父級(jí)組件中的調(diào)用標(biāo)簽上綁定事件v-on:子組件中定義的事件名="父組件中要執(zhí)行的事件($event)"進(jìn)行接收;

3.在父級(jí)的methods中定義事件接收

父級(jí)事件名(形參){

this.要改變的參數(shù)名=形參;

}

生命周期

????new Vue()實(shí)例化vue對(duì)象;


在完成之前會(huì)有一個(gè)beforeCreate,它僅對(duì)事件進(jìn)行一個(gè)配置,這時(shí)可以進(jìn)行一個(gè)加載的動(dòng)畫(huà);用此鉤子函數(shù);


之后進(jìn)入到created,這時(shí)候?qū)嵗瓿?,組件創(chuàng)建完成,屬性成功綁定,但Dom并沒(méi)有生成,頁(yè)面并沒(méi)有展示出來(lái);這里可以獲取對(duì)應(yīng)的一些數(shù)據(jù),結(jié)束上邊鉤子的例子;如停止加載動(dòng)畫(huà),準(zhǔn)備渲染DOM;



之后會(huì)查看當(dāng)前有沒(méi)有el(element)屬性,

有,往下;

沒(méi)有,查看有沒(méi)有$mount(),

有,往下,

沒(méi)有,生命周期結(jié)束。



之后會(huì)檢查有沒(méi)有template屬性

有,template中執(zhí)行一個(gè)具體的組件,執(zhí)行render方法渲染template里對(duì)應(yīng)的內(nèi)容

沒(méi)有,生命周期結(jié)束;


之后beforeMount,編譯template方法,在虛擬DOM中執(zhí)行,頁(yè)面還是看不到內(nèi)容


之后是mounted,beforeMount之后編譯的模板放入頁(yè)面,mounted時(shí)模板編譯完成,開(kāi)始掛載;mounted結(jié)束頁(yè)面就會(huì)顯示出來(lái);如有頁(yè)面顯示出來(lái)之后需要做的,放在此方法里


頁(yè)面顯示完成了,組件也掛載了,此時(shí)對(duì)項(xiàng)目做一些更改(增刪改查);會(huì)觸發(fā)下一個(gè)鉤子函數(shù)Update


????beforeUpdate:當(dāng)前組件在更新之前的鉤子

????updated:組件在更新之后的鉤子;此鉤子執(zhí)行之后,頁(yè)面就是更新之后的樣子




beforeDestroy:組件實(shí)例銷(xiāo)毀之前;

distroyed:組件實(shí)例銷(xiāo)毀之后;



??methods: {},

??beforeCreate: function() {

????alert("組件實(shí)例化之前執(zhí)行的函數(shù)");

??},

??created: function() {

????alert("組件實(shí)例化完畢,但頁(yè)面還未顯示");

??},

??beforeMount: function() {

????alert("組件掛載前,頁(yè)面仍未展示,但虛擬Dom已經(jīng)配置");

??},

??mounted: function() {

????alert("組件掛載后,此方法執(zhí)行后頁(yè)面顯示");

??},

??beforeUpdate:function(){

????alert("組件更新前,頁(yè)面仍未更新,但虛擬Dom已經(jīng)配置");

??},

??updated:function(){

????alert("組件更新后,頁(yè)面顯示更新后的組件");

??},

??beforeDestroy:function(){

????alert("組件銷(xiāo)毀前");

??},

??destroyed:function(){

????alert("組件銷(xiāo)毀");

??}


路由和http

共享網(wǎng)絡(luò)接口:http://jsonplaceholder.typicode.com/


安裝resource模塊 指令:npm install vue-resource --save-dev


router下的index.js中配置


引入:

import Router from 'vue-router'

import VueResource from 'vue-resource'


Vue.use(Router)

Vue.use(VueResource)


mode: "history", //在router上邊使用這個(gè)是去除鏈接上初始的#

routes: [

????{

??????path: '/', ?????//根路徑

??????name: 'HelloWorld',

??????component: HelloWorld,//此處是引入時(shí)的起的名字

??????children:[

??????{

??????????????path: '/home', ?????//路徑 ?嵌套字路由

??????????????name: 'HelloWorld',

??????????????component: HelloWorld,//此處是引入時(shí)的起的名字

??????}

??????]

????}

??]



在組件中的鉤子函數(shù)中請(qǐng)求

??created(){

????this.$http.get("http://jsonplaceholder.typicode.com/users")

????????.then((data)=>{

??????????console.log(data);

??????????this.users=data.body;


????????})

??}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容