javascript - vue 寫一個(gè)組件和寫一個(gè)插件有什么區(qū)別?
問題描述
現(xiàn)在想寫一個(gè)分頁(yè)的東西,但是拿不定是寫成一個(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é)合。
如果分頁(yè)邏輯在許多組件之間需要復(fù)用,那么最好的方式顯然是通過插件復(fù)用 Vue 文件的 JS 邏輯。
如果分頁(yè)邏輯只在一個(gè)組件中用到,那么使用插件和 mixins 會(huì)降低單個(gè) Vue 組件的可讀性。
回答2:一個(gè)Vue插件可以是一堆Vue組件的集合(插件干的事就是把內(nèi)部的組件幫你倒入到vue全局下),也可以是用來擴(kuò)展Vue功能的,比如 Vuex, Vue-Router。你也可以寫一個(gè)插件,在Vue原型上擴(kuò)展方法,要實(shí)現(xiàn)這個(gè)需求絕對(duì)沒法寫成組件。
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. html5 - ElementUI table中el-table-column怎么設(shè)置百分比顯示。2. python - 使用readlines()方法讀取文件內(nèi)容后,再用for循環(huán)遍歷文件與變量匹配時(shí)出現(xiàn)疑難?3. 對(duì)mysql某個(gè)字段監(jiān)控的功能4. css3 - less或者scss 顏色計(jì)算的知識(shí)應(yīng)該怎么學(xué)?或者在哪里學(xué)?5. 注冊(cè)賬戶文字不能左右分離6. javascript - table列過多,有什么插件可以提供列排序和選擇顯示列的功能7. css - 網(wǎng)頁(yè)div區(qū)塊 像蘋果一樣可左右滑動(dòng) 手機(jī)與電腦8. javascript - 數(shù)組的過濾和渲染9. html - vue項(xiàng)目中用到了elementUI問題10. JavaScript事件
