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è)需求絕對(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. python執(zhí)行cmd命令,怎么讓他執(zhí)行類似Ctrl+C效果將其結(jié)束命令?2. python - Flask寫的注冊(cè)頁面,當(dāng)注冊(cè)時(shí),如果填寫數(shù)據(jù)庫(kù)里有的相同數(shù)據(jù),就報(bào)錯(cuò)3. python - Django有哪些成功項(xiàng)目?4. python - scrapy url去重5. 實(shí)現(xiàn)bing搜索工具urlAPI提交6. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)7. mysql在限制條件下篩選某列數(shù)據(jù)相同的值8. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問題9. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過程真的是個(gè)坑!求助下面的存儲(chǔ)過程哪里錯(cuò)啦,實(shí)在是找不到哪里的問題了。10. Python從URL中提取域名
