這麼定義Vue組件你就贏了
- 2020 年 1 月 2 日
- 筆記
本文標識 : V00011
本文編輯 : Jack 風 編程工具 : Vscode 閱讀時長 : 4分鐘
定義Vue組件
什麼是組件:組件的出現,就是為了拆分Vue實例的程式碼量的,能夠讓我們以不同的組件,來劃分不同的功能模組,將來我們需要什麼樣的功能,就可以去調用對應的組件即可;組件化和模組化的不同:
組件解析:
- 模組化:是從程式碼邏輯的角度進行劃分的;方便程式碼分層開發,保證每個功能模組的職能單一;
- 組件化:是從UI介面的角度進行劃分的;前端的組件化,方便UI組件的重用;
全局組件定義的三種方式
1、使用 Vue.extend 配合 Vue.component 方法:
var login = Vue.extend({ template: '<h1>登錄</h1>' }); Vue.component('login', login);2、直接使用 Vue.component 方法:
Vue.component('register', { template: '<h1>註冊</h1>' });3、將模板字元串,定義到script標籤種:
<script id="tmpl" type="x-template"> <div><a href="#">登錄</a> | <a href="#">註冊</a></div> </script>
同時,需要使用 Vue.component 來定義組件:
Vue.component('account', { template: '#tmpl' });注意:組件中的DOM結構,有且只能有唯一的根元素(Root Element)來進行包裹!
組件中展示數據和響應事件
1、在組件中,data需要被定義為一個方法,例如:
Vue.component('account', { template: '#tmpl', data() { return { msg: '大家好,感謝大家關注A2Data!' } }, methods:{ login(){ alert('點擊了登錄按鈕'); } } });2、在子組件中,如果將模板字元串,定義到了script標籤中,那麼,要訪問子組件身上的data屬性中的值,需要使用this來訪問
【重點】為什麼組件中的data屬性必須定義為一個方法並返回一個對象通過計數器案例演示
1、使用components屬性定義局部子組件組件實例定義方式:
<script> // 創建 Vue 實例,得到 ViewModel// 感謝關注本公號,我們一直在努力。 var vm = new Vue({ el: '#app', data: {}, methods: {}, components: { // 定義子組件 account: { // account 組件 template: '<div><h1>這是Account組件{{name}}</h1><login></login></div>', // 在這裡使用定義的子組件 components: { // 定義子組件的子組件 login: { // login 組件 template: "<h3>這是登錄組件</h3>" } } } } }); </script>2、引用組件:
<div id="app"> <account></account> </div>

