javascript - vue 写一个组件和写一个插件有什么区别?
问题描述
现在想写一个分页的东西,但是拿不定是写成一个.vue单文件好还是用install写成一个插件好,不太清楚2者之间的区别,感觉.vue就能解决需求,但是为什么要有install这个方式呢,另外有一个关于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>//这个是install写插件 let paging = { install: function(Vue, options) {Vue.component(’pagination’,pagination); } }
我install里面的options配置参数如何传递到pagetion的模版里面去呢?
问题解答
回答1:Vue 的组件是模板和 UI 逻辑的结合。
如果分页逻辑在许多组件之间需要复用,那么最好的方式显然是通过插件复用 Vue 文件的 JS 逻辑。
如果分页逻辑只在一个组件中用到,那么使用插件和 mixins 会降低单个 Vue 组件的可读性。
回答2:一个Vue插件可以是一堆Vue组件的集合(插件干的事就是把内部的组件帮你倒入到vue全局下),也可以是用来扩展Vue功能的,比如 Vuex, Vue-Router。你也可以写一个插件,在Vue原型上扩展方法,要实现这个需求绝对没法写成组件。
let whatever = { install: function(Vue, options) {Vue.prototype.$whatever = function(){ // do something }; } } // 你这个用组件咋搞?
另外,你为啥要在install插件的时候决定插件倒入的组件的数据呢?那不是应该你在用这个组件的时候通过props来控制么?
相关文章:
1. android - 安卓做前端,PHP做后台服务器 有什么需要注意的?2. mysql - SQL语句可以提供“查询表,并至第100条结果为止”吗?3. python - xpath提取网页路径没问题,但是缺失内容?4. javascript - 大家都在用vue来做单页项目,那vue是否可以在传统多页项目上?5. python - 子进程执行完成为僵尸进程,怎么解决6. java中返回一个对象,和输出对像的值,意义在哪儿7. javascript - 给某个类添加一个伪类,这个类有click事件,现在我点击伪类也触发了click事件8. docker不显示端口映射呢?9. node.js - JavaScript的一个不能理解的地方10. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?
