iOS组件化实现方案】的更多相关文章

作者原文iOS组件化 - 路由架构从0到1实战  合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立运行调试 4.业务工具组件可以dependent 3,并且第三方的引入需要二次封装为业务工具组件,方便替换实现方案,与项目0耦合 5.分类的用途是实现组件之间无耦合,为CTMediator架构思想的中心 6.业务组件依赖业务工具组件.基础UI组件.基础工具组件 最后:业务之间通过路由通讯,如果需要组…
[前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之前在简书上有写过相关文章,但是发现阅读量比较低,所以今天决定整理一下 WisdomRouterKit 功能介绍和使用方案,重新更新下文章. 当然本期 WisdomRouterKit SDK 又添加了新的强大功能. [提问] 1:首先 WisdomRouterKit SDK 是一个什么样的框架? 答:…
概述 近一年iOS业界讨论组件化方案甚多,大体来说有3种. Protocol注册方案 URL注册方案 Target-Action runtime调用方案 URL注册方案据我了解很多大公司都在采用,蘑菇街 App 的组件化之路(http://limboy.me/tech/2016/03/10/mgj-components.html)蘑菇街的Limboy在这篇博客中做了很详尽的阐述 Target-Action runtime调用方案Casa在 iOS应用架构谈 组件化方案(http://casatw…
iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 拆分组件 (1)基础功能组件 (2)基础UI组件 (3)产品业务组件 总结:组件化适用于业务稳定.逻辑复杂的app,能够解决项目模块间得耦合问题,有助于多人大团队的协同开发.方便组件的单独开发.单独测试.…
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建:pod lib create 假设我们需要创建的库名为TestLib,下面我们使用Pod官方提供的创建模板: 首先进入我们的工作目录,如workspace,输入命令 pod lib create TestLib 创建过程中需要填写几个问题,如下图所示,按个人所需填写: 创建完成以后工程会自动打开,X…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 下面是最近在行业内几个大神的博客辩论对战,具体资料如下: 2016.03.10 蘑菇街App的组件化之路 2016.03.13 iOS应用架构谈 组件化方案 2016.03.14 蘑菇街App的组件化之路·续 2016.03.…
一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 下面是最近在行业内几个大神的博客辩论对战,具体资料如下: 2016.03.10 蘑菇街App的组件化之路 2016.03.13 iOS应用架构谈 组件化方案 2016.03.14 蘑菇街App的组件化之路·续…
原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业务的架构,是为了后期能更好的维护项目. 但是用户依旧不满意,继续对开发人员提出了更多更高的要求,不仅需要高质量的用户体验,还要求快速迭代,最好一天出一个新功能,而且用户还要求不更新就能体验到新功能.为了满足用户需求,于是开发人员就用H5,ReactNative,Weex等技术对已有的项目进行改造.项…
随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4.5,Casa 的文章建议看评论区. 蘑菇街 蘑菇街 App 的组件化之路 蘑菇街 App 的组件化之路 续 Casa iOS 应用架构谈组件化方案 bang iOS 组件化方案探索 MrPeak iOS 组件化方案 豆瓣 豆瓣 App 的模块化实践 天猫 苹果核 - 解耦神器 -- 统跳协议和Re…
背景 iOS Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法.在 Objective-C(iOS 的开发语言,下文用 OC 代替)中的具体体现为:实例(类)方法.属性和协议. 除了引用中提到的添加方法,Category 还有很多优势,比如将一个类的实现拆分开放在不同的文件内,以及可以声明私有方法,甚至可以模拟多继承等操作,具体可参考…
参考资料: http://wereadteam.github.io/2016/03/19/iOS-Component/#more https://casatwy.com/iOS-Modulization.html https://casatwy.com/modulization_in_action.html# https://www.jianshu.com/p/b1c6d070c92b 这篇文章只是一个学习过程的记录,因为我发现相关文章都没有比较详细的操作记录,而这个过程必定不可能像他们博文中写…
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模式应用.项目经验.工具的使用,所以在此只是做一个开始,后面还会做进一步的拓展和深入,尽量做到干货,欢迎探讨和纠正. 目录: 什么是组件化开发 组件化的核心内容 模块间通信的简单Demo Cocoapods 原理 使用cocoapods制作私有库的一般流程详述 小结 一. 什么是组件化开发 1. 概述…
首先我们要使用pod支持组件化开发 解决CocoaPods慢的方案(gem和pod repo换源) gem换源 $ gem sources --remove https://rubygems.org/ # 移除默认源 $ gem sources -a https://gems.ruby-china.org/ # 添加Ruby China镜像 $ gem sources -l  确保只有gems.ruby-china.org源 pod repo换源 $ pod repo 默认是GitHub源 ma…
CocoaPods简介 任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven.WEB的Webpack等.在iOS中类库的管理工具-CocoaPods. 利用CocoaPods管理第三方库可以自动化帮我们完成各种库的依赖和配置,包括配置编译阶段.链接器选项.甚至是ARC环境下的-fno-objc-arc配置等. CocoaPods的安装和使用网上文章很多,这里不在介绍,下面主要介绍CocoaPods使用执行命令的原理. CocoaPods流程 CocoaPods整体的…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 组件化开发优点: 1.组件和组件之间没有明确的约束. 2.组件单独开发.单独测试,不能揉入主项目中开发,测试也可以针对性的测试. 组件主要分为三类: 基础功能组件: 基础 UI 组件: 产品业务组件: 使用 CocoaPods…
[链接]组件化流程详解(一)https://www.jianshu.com/p/2deca619ff7e…
越来越多公司,开始了组件化,你还要等到什么时候...... 说到开发模式,我们最熟知的开发模式 MVC 或者最近比较热门的MVVM.但是我今天说的组件化的开发,其实MVC不是一类的.它其实是····· 在实际工作中,尤其是参与过比较大的项目,同时,参与开发的成员比较多的情况下,随着时间的不停的开发,业务线不断复杂,就会遇到下面一系列的问题.真的好烦哦····· 1.代码耦合很严重.一个控制器的存在需要依赖很多控制器,一个控制器有会被很多控制器依赖. 2.项目逐渐变臃肿,庞大,复杂.每次编译都会需…
组件化的优缺点 组件化的拆分 组件与组件之间如何进行通讯(路由) 从Cocopods拉取代码的过程 远程索引库里很多的.spec文件,该文件记录了很多内容,如用户名,框架名称,描述,框架的地址 Podfile 文件是拉取框架源码的配置文件, pod install 命令会根据Podfile中配置来拉取框架源码 Pod setup 命令会把远程索引库拷贝到本地,在本地还有一个检索文件 执行pod search命令过程,并不是直接从远程索引库查找,它是从本地的检索文件,该检索文件是以键值对的形式存在…
一.蘑菇街url-block方案 这是蘑菇街中应用的一种页面间调用的方式,通过在启动时注册组件提供的服务,把调用组件使用的url和组件提供的服务block对应起来,保存到内存中.在使用组件的服务时,通过url找到对应的block,然后获取服务. 具体实现代码如下: //Mediator.m 中间件 @implementation Mediator typedef void (^componentBlock) (id param); @property (nonatomic, storng) NS…
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 1.构建名称为LuckTimeSpec,选择私有建立: 2.Copy地址的https 链接: 二.打开终端 输入: cd /Users/zhangpeng/.cocoapods/repos (zhagpeng为用户名称)回车 输入: pod repo add LuckTimeSpec https://gitee.com/peter_zhang/LuckTimeSpec.git 回车 https://gitee.com/peter_zhan…
在 podspec 中,利用 source_files 可以指定要编译的源代码文件.可是,当我们需要把图片.音频.NIB等资源打包进 Pod 时该怎么办呢? 1.如何把资源文件打包为.bundle文件? 通常我们都会用.bundle文件把资源文件打包,这里也一样,把你的图片.音频.NIB等资源文件先统一放在一个文件夹里,文件夹名称最好是你的组件名称加上bundle,然后修改文件夹后缀为.bundle,就得到了一个bundle文件:然后把.bundle文件放在与Classes同一级的文件夹下,如下…
写在最前 从开始学写代码,胡乱的看书,不懂如何写第一个程序,到开始写出第一个程序,这段道路有些漫长.慢慢开始自己独立的去分析给出的需求,到如何实现,最初的想法只是仅仅实现,到后来懂得如何利用自己技术和经验去解耦合.自从踏上移动端iOS开发的道路,就开始用过往的技术和经验去解耦合的道路,也看过各个论坛大牛的各种得意之作.总想着自己造个轮子,虽然不及前人优秀,总会从实践中提升自身的技术素养,也算是提高自身水平的一次次尝试吧. 初尝试 任何软件开发都需要一系列的入口(通常应该是main函数吧),而以往…
http://www.cocoachina.com/ios/20180511/23359.html…
一.克隆远端库代码到本地选择master分支 1.克隆 2.代码会显示出你所有版本的tag 二.可以在Example目录下验证代码的正确行: cd 到库的文件夹然后 pod install command + r //验证代码是否可用 三.按照正常的添加代码和提交新的代码到master: 此处是souretree的简单应用不说明! 四.在最新的节点打tag,记住勾选推送到远程: 五.然后终端cd到项目的根目录,执行本地和远端校验! pod spec lint --private 输出没有报错为正…
一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置,执行以下操: 2.上传更新代码  git add . git commit -m '更新描述' git push origin master 3.版本更新这一步非常重要,为更新索引库做准备 //版本号要与 s.verson = ‘0.2.0'保持一致 git tag -a '新版本号' -m '注…
远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo remove 本地索引库名称 执行命令 添加远程索引库`KTPodSpecs`克隆到本地 远程库 新建框架工程KTUIKit 利用模板自动生成私有库工程 pod lib create 框架名称pod lib create KTUIKit 生成的工程依赖关系 KTUIKit的示例工程的podfile…
1.准备工作 由于工程越来越大,里面的文件也越来越多.很多时候merge代码的时候工程文件起了冲突之后,若 .xcodeproj文件冲突 打开之后很难以修改. 架构其实相对开发来说还是比较难于下手的东西,概念谁都知道,就是组织好,管理好,使用好自己的代码(代码规范也是重要的一环) 故想到了模块化程序,于是乎就去网上找资料 蘑菇街 安居客  Small  (里面都有demo,安居客的看后之后简单一点) 1.1 大致差不多就是URL的格式 scheme://host/path?query 1.启动的…
AITableView https://github.com/chentoo/AITableView cocoapods: pod ‘AITableView’ 做什么用? 这是一个简化UITableView使用方式的一个尝试,不需要再实现UI TableView繁多的delegate和datasource方法,不需要重复实现繁多的cell的if else / switch 逻辑,只需要简单的配置过程,你就可以轻松的驾驭和布局TableView. 这是一个基于MVVM思想的尝试,并且最终拼装成为T…
在做项目的过程中,建立了一个私有pod库,在这个库中存在mrc类文件这个时候如果在使用了arc的工程中引用这个pod的工程中手动设置当然也可以就是费时费力.现在我们来看看如何在私有库配置文件里配置自动添加arc配置即在BuildPhases -> Compile Sources中mrc文件添加-fno-objc-arc标识设置,只要在podspec添加subspec设置就好了,需要两步设置如下 1.在工程中首先先排除一下需要配置mrc设置的文件 配置mrc的标识 具体操作如下代码,代码只是代码片…
首先要检查Mac是否安装了rvm(ruby version manager).打开终端,输入指令$ rvm -v ,若没有安装 curl -L https://get.rvm.io | bash -s stable 用rvm安装ruby环境, ruby -v检查当前版本 rvm list known 查询已知的ruby环境 输入指令:rvm install 2.6.3 检查更新ruby版本环境 cocoapods是用gem ruby实现的,想要使用它首先需要有gem ruby的环境 检查ruby…