如何抽象一个如何抽象一个Vue公共组件公共组件
之前一直想写一篇关于抽象 Vue 组件的随笔,无奈一直没想到好的例子。恰巧最近为公司项目做了一个数字键盘的组件,于
是就以这个为例聊聊如何抽象 Vue 的组件。
先上 Demo 与 源码。(demo最好在浏览器里以手机模式浏览)
在讲具体实现前,我想先分享下自己认为的理想的公用组件是什么样的:
1. 黑盒性,即除了你自己以外,其他的开发者在快速阅读使用文档之后可以立刻上手,而不用关心你的内部实现;
2. 独立性,即做好解耦,不与父组件有过多关联;
3 自定义性,适当地暴露一些输入接口或者方法给外部用于自定义,同时也要设置好这些属性在外部未输入时的默认值。
下面我们先以黑盒的方式看看 demo 中数字键盘组件是如何调用的(已省略非关键部分代码)。
App.vue
<template>
......
<keyboard @submit-event='handleSubmit' @change-event='handleChange'></keyboard>
</template>
<script>
import keyboard from 'Keyboard.vue';
export default {
data() {
return {
value: ''
};
},
methods: {
handleChange(value, currentValue) {
console.log(value, currentValue);
this.value = value;
},
handleSubmit() {
console.log('submit: ' + this.value);
}
}
}
</script>
如上,最基本的调用就完成了。效果如下:
接着,点击 1-6 与“确定”。如果如下:
可以看到数字键盘已经如我们预期工作了,接下来分析下该数字键盘组件所有的输入项。
评论0