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

概述 近一年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…
一.蘑菇街url-block方案 这是蘑菇街中应用的一种页面间调用的方式,通过在启动时注册组件提供的服务,把调用组件使用的url和组件提供的服务block对应起来,保存到内存中.在使用组件的服务时,通过url找到对应的block,然后获取服务. 具体实现代码如下: //Mediator.m 中间件 @implementation Mediator typedef void (^componentBlock) (id param); @property (nonatomic, storng) NS…
转载: iOS应用架构谈 组件化方案 简述 前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路.我不认为这条组件化之路蘑菇街走对了.分享后我私聊了Limboy,Limboy似乎也明白了问题所在,我答应他我会把我的方案写成文章,于是这篇文章就出来了. 另外,按道理说组件化方案也属于iOS应用架构谈的一部分,但是当初构思架构谈时,我没打算写组件化方案,因为我忘了还有这回事儿...后来写到view的时候才想起来,所以在view的那篇文章最后补了一点内容…
作者原文iOS组件化 - 路由架构从0到1实战  合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立运行调试 4.业务工具组件可以dependent 3,并且第三方的引入需要二次封装为业务工具组件,方便替换实现方案,与项目0耦合 5.分类的用途是实现组件之间无耦合,为CTMediator架构思想的中心 6.业务组件依赖业务工具组件.基础UI组件.基础工具组件 最后:业务之间通过路由通讯,如果需要组…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助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…
[前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之前在简书上有写过相关文章,但是发现阅读量比较低,所以今天决定整理一下 WisdomRouterKit 功能介绍和使用方案,重新更新下文章. 当然本期 WisdomRouterKit SDK 又添加了新的强大功能. [提问] 1:首先 WisdomRouterKit SDK 是一个什么样的框架? 答:…
转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014年2月开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在 GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. 开发初衷 2013年末,我还在Google Creativ…
iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 拆分组件 (1)基础功能组件 (2)基础UI组件 (3)产品业务组件 总结:组件化适用于业务稳定.逻辑复杂的app,能够解决项目模块间得耦合问题,有助于多人大团队的协同开发.方便组件的单独开发.单独测试.…
atitit.React   优缺点 相比angular react是最靠谱的web ui组件化方案了 1. React的组件化才是web ui部件的正确方向1 1.1. 组件化集成html ,css,js自我包含一体化,方便复用.1 1.2. 相比angular.Js方便好用1 2. React的问题与改进:2 2.1. 可视化模板不容易得到dw的支持..2 2.2. 组件的html与js的集成是以js为基础的2 2.3. 组件的属性以js为主2 说实话,目前react是最靠谱的web ui组…
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建:pod lib create 假设我们需要创建的库名为TestLib,下面我们使用Pod官方提供的创建模板: 首先进入我们的工作目录,如workspace,输入命令 pod lib create TestLib 创建过程中需要填写几个问题,如下图所示,按个人所需填写: 创建完成以后工程会自动打开,X…
背景 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 这篇文章只是一个学习过程的记录,因为我发现相关文章都没有比较详细的操作记录,而这个过程必定不可能像他们博文中写…
 背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近两年出现了React-lite.js,Vue.js,ReactNative,Weex...等一些开发方式,早期移动web端大多数基于sea.js模块化去开发,而我更倾向于组件化方式去开发,因为组件化的独立性才是为后期业务扩展,降低代码维护成本的最佳方案. 针对移动web端组件化,本人这次引用了古映杰…
Android组件化项目地址:Android组件化项目AndroidModulePattern Android组件化之终极方案地址:http://blog.csdn.net/guiying712/article/details/78057120 1为什么要项目组件化 2如何组件化 3组件化实施流程 1组件模式和集成模式的转换 2组件之间AndroidManifest合并问题 3全局Context的获取及组件数据初始化 4library依赖问题 5组件之间调用和通信 6组件之间资源名冲突 4组件化…
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述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命令过程,并不是直接从远程索引库查找,它是从本地的检索文件,该检索文件是以键值对的形式存在…
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. Vue.js 是我在2014年2月开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在 GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. 开发…
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 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 输出没有报错为正…