中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue組件的示例分析

發布時間:2021-08-13 10:15:41 來源:億速云 閱讀:133 作者:小新 欄目:web開發

這篇文章主要介紹了Vue組件的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Vue實例

項目啟動過程

看一下現在我們的項目,想想整個項目的啟動過程是什么(以直接打開index.html的方法訪問為例來說明)?

你首先打開了index.html,里面只有一個寫了一個id='root'的div,還有你引入了打包之后的代碼,然后Vue自己肯定運行了一下(可以認為是Vue初始化)。

接著,應該是執行了entry.js(因為打包是webpack打包的,你配置的入口文件就這一個)。

entry.js干了什么,是的,創建了一個Vue實例對象,然后這個對象管理的區域根據el屬性知道,應該是index.html中id='root'的那個div,因此余下的事情就只有明白這個Vue實例對象是如何管理這片區域的就可以了,這就是接下來的內容了。

什么是Vue實例對象?

根據官方文檔的說明:每個Vue應用都是通過用Vue函數創建一個新的Vue實例開始的。

你可以簡單的理解,他就是一個普普通通的對象罷了,只不過這個對象被賦予了一些特殊的功能,讓我們來了解一下他吧!

【我們接下來都是在entry.js里面創建的那個Vue對象上面進行實驗的】

一個Vue實例對象創建的方法如下:

var vm=new Vue({
  //一堆配置
});

因此,接下來要說的就是一些常用的配置(不是全部,比較特殊的以后應該會說,畢竟開始就全部,我怕彼此心都太累了)。

Vue實例對象基本配置

【1】el:選擇器| DOM結點

在我們的項目中,我們配置的是:

el:'#root'

這是一個字符串,有點類似CSS選擇器,它會使用查找到的結點作為管理區域(當然還有別的CSS選擇器也可以)。

除此之外,你還可以直接傳遞一個結點,比如現在我們修改一下代碼:

el: document.getElementById('root')

這樣也是可以了,你可以試試。

【2】render:(createElement:()=>VNode)=>VNode

上面的是ES6的箭頭函數寫法,舉個栗子:

((x,y)=>x+y)(1,2)

上面ES6的寫法等同于下面ES5的寫法:

(function(x,y){
  return x+y;
})(1,2);

簡單的說就是:(x,y)=>x+y就表示一個有二個參數x和y,返回x+y的函數,因此上面的函數用ES5的寫法就是:

function(createElement){
  //createElement是一個函數,返回類型為VNode
  //這個函數的返回類型也應該是VNode
  return VNode;
}

備注:VNode是Vue編譯生成的虛擬節點,想一下Jquery節點,還有Node節點,是不是味道很像。

因此,我把項目中的render稍微改一下:

render: function (createElement) {
  return createElement(App);
}

是不是很清晰了,說白了,就是一個最后返回值是VNode的函數。

因此看見節點這二個字,應該可以理解頁面為什么顯示的是App里面的模板了吧,如何路由調整為什么配置的是.vue文件大概也有點感覺了吧。

【3】router:VueRouter

這個比較容易理解,就是知道使用的路由配置是什么,由于項目中是:

router:router

看著很奇怪,我們稍微修改一下:

//上面的import routerObj from './router';這一句要跟著修改一下
router: routerObj

基本的就到這里,就三個,別的屬性因為還關聯很多東西,會一點點來說明。

Vue對象生命周期

官方的圖我就不放了,感覺意義不大,推薦入門了以后可以去看看,因此后面的文章可能會說。

下面我們來先在entry.js里面修改一下代碼,看看運行結果,下面是代碼:

//根對象
var vm = new Vue({
  //掛載點
  el: document.getElementById('root'),
  //2.使用剛剛的路由配置
  router: routerObj,
  //啟動組件
  render: function (createElement) {
    return createElement(App);
  },
  //下面是Vue對象的幾種狀態
  beforeCreate: function () {
    console.debug('Vue對象目前狀態:beforeCreate');
  },
  created: function () {
    console.debug('Vue對象目前狀態:created');
  },
  beforeMount: function () {
    console.debug('Vue對象目前狀態:beforeMount');
  },
  mounted: function () {
    console.debug('Vue對象目前狀態:mounted');
  },
  beforeUpdate: function () {
    console.debug('Vue對象目前狀態:beforeUpdate');
  },
  updated: function () {
    console.debug('Vue對象目前狀態:updated');
  },
  beforeDestroy: function () {
    console.debug('Vue對象目前狀態:beforeDestroy');
  },
  destroyed: function () {
    console.debug('Vue對象目前狀態:destroyed');
  }
});

運行一下看看控制臺。

因此,就是說,Vue對象從創建前到最后死亡,在各個階段狀態改變的時候,都提供了一個鉤子方法,你可以注冊一下,如果你希望在特定狀態改變的時候干點什么的話。

到這里,基本上Vue對象實例應該比較清楚了吧?看看我們的代碼,應該只有那幾個.vue的文件里面的東西沒有說清楚了(本文就是把前面寫過的代碼都說清楚,后面就可以一個新知識點接著一個的來豐富項目,因為都沒有疑惑了,學習起來應該不會痛苦了吧!)。

Vue組件實例

說明

Vue組件的定義方法不是只有我們之前寫的建立.vue文件那一種,比如你還可以通過Vue.component()的方法來創建,不過這些都以后吧,我們這里就只說明.vue文件這一種(不喜歡一下子說太多,而且仔細想想,不就是API嗎)。

【下面都是在PageTwo.vue里面進行修改,菜單名稱修改為:Vue組件實例】

.vue文件的基本模板如下(下面都會是ES5的寫法,本人還是不太喜歡ES6或者TS,原諒我,反正本質一樣):

<template>
  
</template>

<script>
export default {
 //一些配置,和前面說的Vue實例類似
}
</script>

<style>

</style>

三個地方,分工明確:模板 + 控制 + 樣式

接下來我們說明配置中常用的選項(很多具體的就留到后面一點點品位,好吧,留的有點多):

常用配置
【1】data

先看看PageTwo.vue現在的代碼:

<template>
  <section>
    <input type="text" v-model="justDoIt">
    <div>
      輸入的數據:{{justDoIt}}
    </div>
  </section>
</template>
<script>
export default {
 //一些配置
 data() {
  return {
   justDoIt: "初始化數據"
  };
 }
};
</script>
<style>

</style>

模板中的代碼應該不用說了吧,前面一篇文章說的很清楚了,直接看看data。

其返回了一個鍵值對(還有別的寫法,推薦你這樣寫,因為這里如果"初始化數據"這幾個字是變量,這種寫法形成了閉包,是安全的),在這里就是給當前組件對象是data里面添加了一個justDoIt的數據,然后上面或者別的地方才可以用,他就是干了這事情。

【2】methods

接著,我們添加一下methods屬性:

methods: {
  doIt() {
   alert(this.justDoIt);
  }
}

其實methods和data類似,只不過是用來添加的不是數據,而是方法,因此,你現在可以在模板里面添加下面代碼來調用這個方法(記住,添加的全部代碼必須由一個標簽包裹):

<input type="button" value="DoIt" v-on:click="doIt()">

v-on:click就是類似原生的onClick,不過因為是vue的方法,你應該用他的。

現在,你可以點擊一下頁面的按鈕試一下,是不是很舒服。

【3】watch

這個屬性是專門用來注冊監聽前面data里面注冊的值改變的時候觸發的方法集合,比如你添加下面的代碼:

watch: {
  justDoIt: function(newval, oldval) {
   console.log("justDoIt改變了,新值為:" + newval + ",舊值為:" + oldval);
  }
 }

如何你運行一下,打開控制臺,修改輸入框的值的時候,是不是控制臺時刻打印了這句話。

【4】computed

這個叫做計算屬性,前面一篇文章說過了,不清楚的看看PageOne.vue,應該可以明白。

簡單的說就是,它用到的data里面的值改變的時候,自己會重新計算。

生命周期
和Vue對象一樣,也有類似的生命周期鉤子,你可以試試,這里就隨便提一下。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Vue組件的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

中牟县| 敖汉旗| 张北县| 大足县| 芜湖市| 湘西| 长沙县| 高邮市| 始兴县| 乐都县| 台州市| 田林县| 水城县| 民勤县| 甘南县| 怀仁县| 郓城县| 蒙阴县| 开封县| 赣州市| 安义县| 肃宁县| 奇台县| 江北区| 东乡族自治县| 松原市| 左权县| 伊宁市| 边坝县| 铅山县| 呼图壁县| 沐川县| 汾阳市| 乌拉特中旗| 双江| 上高县| 宽甸| 安新县| 九江市| 凭祥市| 银川市|