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. mysql - 表名稱前綴到底有啥用?2. 致命錯(cuò)誤: Class ’appfacadeTest’ not found3. 老師們php,插入數(shù)據(jù)庫mysql,都是空的,要怎么解決4. 求大神支招,php怎么操作在一個(gè)html文件的<head>標(biāo)記內(nèi)添加內(nèi)容?5. php點(diǎn)贊一天一次怎么實(shí)現(xiàn)6. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。7. PHP類屬性聲明?8. sql語句 - 如何在mysql中批量添加用戶?9. phpstady在win10上運(yùn)行10. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)
