前沿:

  抽象是门大学问。前端mv框架中,以组件化的概念为主。经常会考虑抽象到组件级别,进行复用。合理的抽象,能提高效率,减少业务逻辑视图的耦合程度。不合理的抽象,则会增加代码的复杂程度。

遇到的问题

 合理的抽象是很难的,需要不断的思考,才能做到最合适的抽象。在b+项目中,遇到了一些问题。

  1、有些组件,ui和逻辑都可复用。ui抽象了,对应逻辑没抽。这样在复用这个组件的适合,逻辑部分的代码没有复用到,得另外复制粘贴一份。   

  2、有些组件,ui可复用,逻辑不可复用。抽象成一个组件,ui是实现了复用,但是业务逻辑得配置参数使用,导致switch case 无限增多。

我所理解的抽象思维:

  1、基础抽象,适用于所有的项目。

    首先,从功能的纬度去抽象。抽象一些具有某一特定功能的ui组件。比如说,button,日期选择器,列表等,这些都是具有特定功能的模块,单独可抽象为一个组件模块。这种抽象的最终结果就是最终能抽象出一整套ui库。例如elemntui,antd等。这一层是

  2、业务模块的抽象,根据业务逻辑判断。

    在具体项目中,除了从功能模块先抽象最基本的一层。还可以从业务逻辑的纬度去进行一层业务模块的抽象。判断可抽象的依据是,ui具有一致性且业务逻辑也一致性(主要判断条件)。一个的反面例子,假如有三个模块,每个模块的列表都是长得差不多,但是三个模块的业务逻辑是不一致的,比如说接口调的不一样。这种情况下,虽然ui很像,但是逻辑不一样,就不合适抽象组件进行复用。一个正面例子,假如有一个多个下注按钮,ui稍有不同,但是实现的逻辑都是下注。那么就适合做抽象。

总结:

  功能性逻辑情况有限,所有是可配置并可抽象的。业务型逻辑的情况可能无限,不合适去做配置实现抽象。所以,在业务中能抽象的必要条件是,业务逻辑必须具有一致性。如果ui也一致,则可抽象成组件。如果ui不一致,则单独抽象逻辑部分(这vue中可用minxins引入公共逻辑)。

前端mv框架下(目前写的是vue),对组件抽象的思考的更多相关文章

  1. 前端MV*框架的意义

    经常有人质疑,在前端搞MV*有什么意义?也有人提出这样的疑问:以AngularJS,Knockout,BackBone为代表的MV*框架,它跟jQuery这样的框架有什么区别?我jQuery用得好好的 ...

  2. 前端 MV*框架的意义

    早期前端都是比较简单,基本以页面为工作单元,内容以浏览型为主,也偶尔有简单的表单操作,基本不太需要框架. 随着 AJAX 的出现,Web2.0的兴起,人们可以在页面上可以做比较复杂的事情了,然后前端框 ...

  3. vue mint-ui 框架下拉刷新上拉加载组件的使用

    安装 npm i mint-ui -S 然后在main.js中引入 import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' Vue.us ...

  4. 前端MVVM框架设计及实现(一)

    最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的avalon开始了,我记得还是去年6月写过一个系列的av ...

  5. js架构设计模式——前端MVVM框架设计及实现(一)

    前端MVVM框架设计及实现(一) 最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的avalon开始了,我 ...

  6. 前端MVVM框架设计及实现

    最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的Avalon开始了,我2013年写过一个关于MVC MV ...

  7. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

  8. 前端UI框架和JS类库

    一.前端框架库: 1.Zepto.js 地址:http://www.css88.com/doc/zeptojs/ 描述:Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jqu ...

  9. 前端MVVM框架设计及实现(二)

    在前端MVVM框架设计及实现(一)中有一个博友提出一个看法: “html中使用mvvm徒增开发成本” 我想这位朋友要表达的意思应该是HTML定义了大量的语法标记,HTML中放入了太多的逻辑,从而增加了 ...

随机推荐

  1. Android初级教程获取手机系统联系人信息

    在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...

  2. Swift基础之Swift调用OC语言文件使用步骤

    Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤: 创建一个Swift项目Demo,然后新建一个OC语言的文件 如图: 创建 ...

  3. Ajax及jQuery学习

    AJAX(Asynchronous JavaScript and XML),异步的javaScript与XML AJax中一个重要的对象是XMLHttpRequest. function ajaxSu ...

  4. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十八)

    在游戏中制作手臂瞄准线,也就是所谓的辅助延长线.玩台球游戏的童鞋应该可以了解. 按道理来说,延长线是一个物理实体,遇到物理刚体应该会发生反弹行为,这个符合实际游戏逻辑. 但是这里为了简单,只是做一条& ...

  5. Mybatis接口编程原理分析(三)

    前面两篇博客Mybatis接口编程原理分析(一)和Mybatis接口编程原理分析(二)我们介绍了MapperProxyFactory.MapperProxy和MapperMethod的操作及源码分析, ...

  6. 浅谈OC内存管理

    一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空 ...

  7. 修改DrawerLayout 和toolbar 配合navigation的颜色

    大家都知道DrawerLayout 和toolbar 结合能出来高大上的效果. 使用到一个ActionBarDrawerToggle类. 那么怎么修改DrawerToggle的颜色呢,搜索了很多中文网 ...

  8. Android Studio环境下搭建ReactNative

    1.安装Android Studio首先肯定是 安装Android Studio(包含SDK)(国内推荐)ps:这里有一点要注意,需要为SDK配置环境变量,名称必须为ANDROID_HOME 2.安装 ...

  9. Dynamics CRM2011中通过JS脚本方式显示和隐藏ribbon中的自定义按钮

    首先该方法不能写在页面的onload中,因为当从子网格返回常规表单的时候ribbon区域会重新加载而常规表单所在的iframe区域是不会被刷新的,所以如果写在onload中的话就控制的不那么完全了,我 ...

  10. RubyGem默认源安装太慢,修改国内淘宝源

    原帖地址:http://www.hiceon.com/topic/Ruby-Gem-install-source-taobao/ WHY? 由于国内网络原因(你懂的),导致 rubygems.org ...