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 相关文章推荐
用innerhtml提高页面打开速度的方法
Aug 02 Javascript
文本框回车提交与禁止提交示例
Sep 27 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
使用js dom和jquery分别实现简单增删改
Sep 11 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
深入理解setTimeout函数和setInterval函数
May 20 Javascript
js隐式转换的知识实例讲解
Sep 28 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
Jun 10 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 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使用PDO执行SQL语句的方法分析
2017/02/16 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
python遍历目录的方法小结
2016/04/28 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
英语自荐信范文
2013/12/11 职场文书
微信营销策划方案
2014/02/24 职场文书
大学生村官考核材料
2014/05/23 职场文书
文明工地标语
2014/06/16 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
免职证明样本
2014/10/23 职场文书
小学新教师个人总结
2015/02/05 职场文书
2015年营业员工作总结
2015/04/23 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
原生JS实现飞机大战小游戏
2021/06/09 Javascript
Java完整实现记事本代码
2022/06/16 Java/Android
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers