javascript - vue 寫一個(gè)組件和寫一個(gè)插件有什么區(qū)別?
問題描述
現(xiàn)在想寫一個(gè)分頁的東西,但是拿不定是寫成一個(gè).vue單文件好還是用install寫成一個(gè)插件好,不太清楚2者之間的區(qū)別,感覺.vue就能解決需求,但是為什么要有install這個(gè)方式呢,另外有一個(gè)關(guān)于install寫插件的問題
//pagetion的模版 <template> <p class='paging'><p name='pagingPage'> <li> <span class='paging-first'></span> </li> <li v-for='item in numArr'> <span class='paging-next'>{{item}}</span> </li> <li> <span class='paging-last'></span> </li></p> </p> </template>//這個(gè)是install寫插件 let paging = { install: function(Vue, options) {Vue.component(’pagination’,pagination); } }
我install里面的options配置參數(shù)如何傳遞到pagetion的模版里面去呢?
問題解答
回答1:Vue 的組件是模板和 UI 邏輯的結(jié)合。
如果分頁邏輯在許多組件之間需要復(fù)用,那么最好的方式顯然是通過插件復(fù)用 Vue 文件的 JS 邏輯。
如果分頁邏輯只在一個(gè)組件中用到,那么使用插件和 mixins 會(huì)降低單個(gè) Vue 組件的可讀性。
回答2:一個(gè)Vue插件可以是一堆Vue組件的集合(插件干的事就是把內(nèi)部的組件幫你倒入到vue全局下),也可以是用來擴(kuò)展Vue功能的,比如 Vuex, Vue-Router。你也可以寫一個(gè)插件,在Vue原型上擴(kuò)展方法,要實(shí)現(xiàn)這個(gè)需求絕對沒法寫成組件。
let whatever = { install: function(Vue, options) {Vue.prototype.$whatever = function(){ // do something }; } } // 你這個(gè)用組件咋搞?
另外,你為啥要在install插件的時(shí)候決定插件倒入的組件的數(shù)據(jù)呢?那不是應(yīng)該你在用這個(gè)組件的時(shí)候通過props來控制么?
相關(guān)文章:
1. angular.js - angular內(nèi)容過長展開收起效果2. docker綁定了nginx端口 外部訪問不到3. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?4. css - chrome瀏覽器input記錄上次cookie信息后,有個(gè)黃色背景~如何去除!5. docker容器呢SSH為什么連不通呢?6. nignx - docker內(nèi)nginx 80端口被占用7. debian - docker依賴的aufs-tools源碼哪里可以找到啊?8. 前端 - ng-view不能加載進(jìn)模板9. javascript - 移動(dòng)端css動(dòng)畫播放狀態(tài)暫停在ios不起作用 animation-play-state10. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問題 麻煩幫我看一下
