越来越多公司,开始了组件化,你还要等到什么时候......

说到开发模式,我们最熟知的开发模式 MVC 或者最近比较热门的MVVM。但是我今天说的组件化的开发,其实MVC不是一类的。它其实是·····

在实际工作中,尤其是参与过比较大的项目,同时,参与开发的成员比较多的情况下,随着时间的不停的开发,业务线不断复杂,就会遇到下面一系列的问题。真的好烦哦·····

  • 1、代码耦合很严重。一个控制器的存在需要依赖很多控制器,一个控制器有会被很多控制器依赖。
  • 2、项目逐渐变臃肿,庞大,复杂。每次编译都会需要很长时间。
  • 3、整个项目要保持一致的开发模式,喜欢MVC的不擅长MVVM,喜欢MVVM的感觉MVC太Low
  • 4、不能进行独立测试

传统的团队开发模式的问题在不断的迭代中逐渐的暴露出来。所以我们应该了解更为先进高效的团队开发模式,那就是!组件化开发

下面就为大家详细的介绍一下组件化或者叫模块化开发


什么是组件化开发

组件化开发,就是将一个臃肿,复杂的单一工程的项目, 根据功能或者属性进行分解,拆分成为各个独立的功能模块或者组件 ; 然后根据项目和业务的需求,按照某种方式, 任意组织成一个拥有完整业务逻辑的工程。这就是所谓的组件化开发。

组件化开发的优点

既然针对上述问题提到了组件化开发,那就要必要交代一下组件化模块化开发的好处。这样在进行对比的时候,可以更加清楚的定位我们想要解决的问题。开判断组件化开发是不是我们需要的团队开发模式。

  • 1、组件之间相互独立。各组件开发成员之间的代码想相互独立编写的,独立编译,独立运行和独立测试的。
  • 2、资源的重复里用,尤其是功能性,工具性的代码,可以很轻松的重复里用
  • 3、迭代的效率提高。通过迭代进行功能的增减,只需要进行组件的拆分和组合。很方便也很高效

组件化开发需要注意的问题

新项目在进行组件化拆分的时候;或者老项目就行组件化重构的时候需要考虑一下几个问题。比较对于耦合度很高的老项目,解耦并不是一件容易的事情。

  • 1、 组件拆分的依据,即要把哪些内容划分成为一个组件?
    可以按照以下几个方面进行拆分

    • 基础组件
      全局常量、常用宏、常用的分类、常用三方框架的隔离封装、还有一些比较常用的小功能类
    • 功能组件
      图片轮播器、图文菜单、视频中的弹幕、相机、录像、二维码、下载功能、个性定制的提示框等等,都可以封装在一个组件中
    • 业务模块
      例如电商的购物车,订单管理、下单流程、个人中心
      再例如视频或者直播的会员管理、视频播放全屏,右下角小屏幕,缓存等等
  • 2、组件化存在方式
    一直在说组件化,到底什么是组件呢。组件的存在方式又是什么呢?
    组件形式: 每个组件都是以pod库的形式存在
    组件内部:组件内部按照自己喜欢的开发模式以文件夹的形式进行划分
    组件测试:每个组件对单独对应一个demo,用来完成该组件的功能测试,这样测试机能被解耦开

  • 3、组件的组合方式
    既然组件的存在方式是以每个pod库的形式存在的。那么我们组合组件的方法就是通过利用CocoaPods的方式添加安装各个组件。

组合在一起的组件,根据需求可以用过组件自己提供的API进行通讯,或者有中间件统一进行组件中的通讯,在后面的文章中,我会一一介绍

总结

组件化开发这个专题后面的内容会不断的更新,欢迎大家关注!

作者:Biharry
链接:https://www.jianshu.com/p/c8f49ac9311f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

iOS组件化开发· 什么是组件化的更多相关文章

  1. 前端笔记之JavaScript面向对象(四)组件化开发&轮播图|俄罗斯方块实战

    一.组件化开发 1.1组件化概述 页面特效的制作,特别需要HTML.CSS有固定的布局,所以说现在越来越流行组件开发的模式,就是用JS写一个类,当你实例化这个类的时候,页面上的效果布局也能自动完成. ...

  2. vue04 组件化开发 Vue自动化工具

    5. 组件化开发 5.1 组件[component] 组件(Component)是自定义封装的功能.在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能. 而在网 ...

  3. Vue的指令以及组件化开发

    一. 自定义指令 如何: 1. 创建指令 Vue.directive("指令名",{ inserted(elem){//指令所在的元素被加载到DOM树上后自动执行指令 //elem ...

  4. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  5. Vue全家桶之组件化开发

    Vue全家桶之组件化开发   一.组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码   二. 组件注册 2.1 全局注册 Vue. ...

  6. 二、vue组件化开发(轻松入门vue)

    轻松入门vue系列 Vue组件化开发 五.组件化开发 1. 组件注册 组件命名规范 组件注册注意事项 全局组件注册 局部组件注册 2. Vue调试工具下载 3. 组件间数据交互 父组件向子组件传值 p ...

  7. 【我的Android进阶之旅】Android插件化开发学习资料

    1.目前开源的插件开发框架大致有哪些? 1. 任玉刚 的 dynamic-load-apk Github 地址:https://github.com/singwhatiwanna/dynamic-lo ...

  8. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  9. iOS组件化开发入门 —— 提交自己的私有库

    前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...

随机推荐

  1. JAVA 内部类 (三)实例

    为什么要用内部类:控制框架 一个“应用程序框架”是指一个或一系列类,它们专门设计用来解决特定类型的问题.为应用应用程序框架,我们可从一个或多个类继承,并覆盖其中的部分方法.我们在覆盖方法中编写的代码用 ...

  2. PHP mysql_fetch_array与mysql_fetch_row的区别

    如果你的表里面有字段a,b,c那么你用mysql_fetch_row() 就返回array(1=>a的值,2=>b的值,3=>c的值)这个时候你读数组的话,只能这样写$array[1 ...

  3. Windows服务卸载服务窗口仍显示的问题

    关于Windows服务通过命令卸载后, 打开服务窗口,服务还有显示,只是状态改为了禁用,运行停止.那么我们怎么解决呢, 不要心慌,打开你的任务管理器,查看服务所用的exe程序是否还在运行,若有的话,便 ...

  4. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...

  5. system(“pause”)和getchar()

    大家都知道system(“PAUSE”)可以让C程序在运行结束之前暂停运行.用system(“PAUSE”)可以解决运行程序一闪而过,看不到输出结果的问题.有程序员会用system(“PAUSE”)只 ...

  6. 网络编程-http连接-GET&POST

    GetRequest package com.net.http; import java.io.BufferedReader; import java.io.IOException; import j ...

  7. numpy.ndarray常用属性和方法

    import numpy as np a = np.array([[1,2,3],[4,3,2],[6,3,5]])print(a) [[1 2 3] [4 3 2] [6 3 5]] print(a ...

  8. ZOJ3352【记忆化搜索】

    先膜拜watashi! 前言: 比赛的时候,确定的是这是一个博弈,然后就是各种瞎猜,后面想到DP[ x ][ y ]代表x表白色的状态,y表黑色的状态,无果.挂机开始.GG.巨菜. 思路: 这一发记忆 ...

  9. [Xcode 实际操作]八、网络与多线程-(15)使用网址会话对象URLSession下载图片并存储在沙箱目录中

    目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession下载图片并存储在沙箱目录中. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的 ...

  10. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容 ...