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+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
加载 Javascript 最佳实践
Oct 30 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
Mar 28 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
Feb 03 Javascript
jQuery 特性操作详解及实例代码
Sep 29 Javascript
微信小程序 教程之注册程序
Oct 17 Javascript
AjaxUpLoad.js实现文件上传
Mar 05 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
Vue路由模块化配置的完整步骤
Aug 14 Javascript
javascript使用正则表达式实现注册登入校验
Sep 23 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
微信小程序实现导航栏选项卡效果
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入门速成(2)
2006/10/09 PHP
PHP概述.
2006/10/09 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python缩进和冒号详解
2016/06/01 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
Python实现打印实心和空心菱形
2019/11/23 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
开学季活动策划方案
2014/02/28 职场文书
保护动物的标语
2014/06/11 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
酒会开场白大全
2015/06/01 职场文书
python编写函数注意事项总结
2021/03/29 Python
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
MySQL分布式恢复进阶
2022/07/23 MySQL