Vue组件化开发思考


Posted in Javascript onFebruary 02, 2018

一般说到组件,我首先想到的是弹窗,其他就大脑空白了。

因为觉得这个是在项目中最常用的功能,提取出来方便复用的才是组件~

然而我才发现这个想法是有问题的。

我发觉可能从意识上把Vue的组件和UI库的组件(弹窗之类的)混淆了。。。

缘起于最近的一个表单开发,页面上有2个是联动菜单的选项。

首先想到的是,这个样式和选择地址的那个联动菜单,完全一样哈~

(废话,同一个项目 当然要保持ui风格的相同啊!)

不过差别在于 我这个是 一个1级 一个2级, 地址那个是4级的.

Vue组件化开发思考

然后我就想着把那个地址的组件引进来用,发现这是个写死4级的

这个时候我只想到2种办法

1,分别改写成1级选项和2级选项的2个组件(好像比较low)

2,引用4级联动组件,改写成可选1级选项或2级选项(有点麻烦,到时候还要测地址没被我改坏)

3,重写一个可以通用无限联动菜单(方便可选级的)

最后选了3,自己重新搞了个。

至于为什么没有整合2,主要考虑到这两个组件所处的业务页面不同逻辑也有些差异:

1获取列表的逻辑可能不同,是一次性获取4级还是每次只获取1级或2级,

这个不确定的话,做成通用组件就都要处理了

2我这个是直接弹选项的,地址那个是跳新页面再点击弹选项的

我这个可以父子组件传递数据,地址那个用了vuex(非父子)

总之就是实现成本和维护成本高,复用价值没那么高。

相当于2个页面都各自有一个样式相同逻辑不同的组件。

这完全是2个组件~

复制其通用样式部分,在各自内部实现其业务逻辑。

两个组件放在不同的板块内,相互独立,方便管理和维护。

这个时候 再结合vue组件化的图来看 你会清楚

对于组件化开发

分治(自有业务逻辑)比复用(相同逻辑) 更为重要!

复杂的业务逻辑配合vuex更方便实现组件化~

所以我理解组件化的组件是应该泛指是 高内聚低耦合(某phper讲给我的专业名词,不知道放这用对不对哈)的~

Vue组件化开发思考

Javascript 相关文章推荐
Javascript解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
js使用post 方式打开新窗口
Feb 26 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
vue实现购物车选择功能
Jan 10 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 Javascript
JS实现扫雷项目总结
May 19 Javascript
微信小程序实现导航栏选项卡效果
Jun 19 #Javascript
解析Vue.js中的组件
Feb 02 #Javascript
如何将你的AngularJS1.x应用迁移至React的方法
Feb 01 #Javascript
vue 2.0 购物车小球抛物线的示例代码
Feb 01 #Javascript
js中getBoundingClientRect的作用及兼容方案详解
Feb 01 #Javascript
深入剖析Express cookie-parser中间件实现示例
Feb 01 #Javascript
JS 实现百度搜索功能
Feb 01 #Javascript
You might like
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
python中的tcp示例详解
2018/12/09 Python
python实现移位加密和解密
2019/03/22 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python绘图实现显示中文
2019/12/04 Python
python中常用的数据结构介绍
2021/01/12 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
我的理想演讲稿
2014/04/30 职场文书
理发店策划方案
2014/06/05 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
人民的好儿女观后感
2015/06/18 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP