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

来自bang's blog http://blog.cnbang.net/tech/3080/…
最近研究了一下项目的组件化,把casa.bang.limboy的有关组件化的博客看了一遍,学到了不少东西,对目前业界的组件化方案有了一定的了解.这些高质量的博客大致讨论了组件化的三种方案:url-block.protocol-class(和url-controller类似).target-action,以及应用这三种组件化方案的时机.步骤.利弊等等. 本文主要介绍一下这三种组件化方案的技术实现过程,针对不同组件化方案具体应用过程中可能出现的问题加以介绍,也针对casa批判蘑菇街的组件化方案加以自…
Android 组件化方案探索与思考 组件化项目,通过gradle脚本,实现module在编译期隔离,运行期按需加载,实现组件间解耦,高效单独调试. 本项目github地址 https://github.com/wang709693972wei/CompontentDemo先来一张效果图,建议读者clone项目后跟着项目看这篇文章,有任何不明白的地方可留言或者联系我,我看到后会立刻回复你.   组件化初衷 APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,维护成本高. 业务耦合度高…
来自bang's blog http://blog.cnbang.net/tech/3080/ 模块化 简单来说,模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容.比如登录功能可以是一个模块,搜索功能可以是一个模块. 组件化 通俗点就是:组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,减少耦合. 模块化 vs 组件化 模块化?组件化?到底是什么鬼?有啥区别. 有这种感觉才是对的,模块化和组件化本质思想是一样…
背景 组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向.美团内部各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出.最近,我们团队对美团零售收银和美团轻收银两款Android App进行了组件化改造.本文主要介绍我们的组件化方案,希望对从事Android组件化开发的同学能有所启发. 为什么要组件化 近年来,为什么这么多团队要进行组件化实践呢?组件化究竟能给我们的工程.代码带来什么好处?我们认为组件化能够带来两…
本文提出的组件化方案demo已经开源,参见文章Android彻底组件化方案开源. 文末有罗辑思维"得到app"的招聘广告,欢迎各路牛人加入!! 一.模块化.组件化与插件化 项目发展到一定程度,随着人员的增多,代码越来越臃肿,这时候就必须进行模块化的拆分.在我看来,模块化是一种指导理念,其核心思想就是分而治之.降低耦合.而在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化. 提起组件化和插件化的区别,有一个很形象的图: 上面的图看上去比较清晰,其实容…
atitit.atiHtmlUi web组件化方案与规范v1 1. 如何在现有html 标签基础上定义自己的组件1 2. 组件的构成与定义1 3. 组件的加载1 4. 组件css的加载2 5. 操作组件getVal,SetVal2 6. 组件化的本质目的并不一定是要为了可复用,而是提升可维护性. 不具有复用性的组件”3 未来的WEB开发,将会效仿今天桌面软件的开发路子,那就是“组件化”. 目前组件化最好的就是React  angular了.. React  的最大问题是以js为核心,嵌入html…
Android精选源码 CalendarView日历选择器 android下拉刷新动画效果代码 一个非常方便的fragment页面框架 android组件化方案源码 Zxing实现二维码条形码的扫描和解析 android实现拖拽返回PhotoView 基于Kotlin的新闻客户端 仿美团选择城市.微信通讯录导航悬停分组索引列表. Kotlin 实现的 View to View 动画效果库 Android 中的转场动画优化 Android优质博客 Android Studio开发使用小技巧 1.t…
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. Vue.js 是我在2014年2月开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在 GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. 开发…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助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的组件化之路·续…
随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4.5,Casa 的文章建议看评论区. 蘑菇街 蘑菇街 App 的组件化之路 蘑菇街 App 的组件化之路 续 Casa iOS 应用架构谈组件化方案 bang iOS 组件化方案探索 MrPeak iOS 组件化方案 豆瓣 豆瓣 App 的模块化实践 天猫 苹果核 - 解耦神器 -- 统跳协议和Re…
原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业务的架构,是为了后期能更好的维护项目. 但是用户依旧不满意,继续对开发人员提出了更多更高的要求,不仅需要高质量的用户体验,还要求快速迭代,最好一天出一个新功能,而且用户还要求不更新就能体验到新功能.为了满足用户需求,于是开发人员就用H5,ReactNative,Weex等技术对已有的项目进行改造.项…
概述 近一年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 Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法.在 Objective-C(iOS 的开发语言,下文用 OC 代替)中的具体体现为:实例(类)方法.属性和协议. 除了引用中提到的添加方法,Category 还有很多优势,比如将一个类的实现拆分开放在不同的文件内,以及可以声明私有方法,甚至可以模拟多继承等操作,具体可参考…
iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 拆分组件 (1)基础功能组件 (2)基础UI组件 (3)产品业务组件 总结:组件化适用于业务稳定.逻辑复杂的app,能够解决项目模块间得耦合问题,有助于多人大团队的协同开发.方便组件的单独开发.单独测试.…
UIKit Dynamics 结合 『iOS 组件与框架 』一书.总结的知识点与demo demo 地址: GitHub地址 一.概述 1.UIKit Dynamics 是 iOS 7 新增的内容.其 目的 就是为了可以让 UIView能够模拟逼真的物理效果. 2.通过使用 UIDynamicItem协议 及 支持它的动态物体(dynamic item),可极大的改善用户体验.现在,给界面添加重力.碰撞.弹簧和吸附 (snap) 等效果易如反掌,这些效果让应用给人耳目一新之感. 3.下面会结合示…
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建:pod lib create 假设我们需要创建的库名为TestLib,下面我们使用Pod官方提供的创建模板: 首先进入我们的工作目录,如workspace,输入命令 pod lib create TestLib 创建过程中需要填写几个问题,如下图所示,按个人所需填写: 创建完成以后工程会自动打开,X…
[前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之前在简书上有写过相关文章,但是发现阅读量比较低,所以今天决定整理一下 WisdomRouterKit 功能介绍和使用方案,重新更新下文章. 当然本期 WisdomRouterKit SDK 又添加了新的强大功能. [提问] 1:首先 WisdomRouterKit SDK 是一个什么样的框架? 答:…
作者原文iOS组件化 - 路由架构从0到1实战  合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立运行调试 4.业务工具组件可以dependent 3,并且第三方的引入需要二次封装为业务工具组件,方便替换实现方案,与项目0耦合 5.分类的用途是实现组件之间无耦合,为CTMediator架构思想的中心 6.业务组件依赖业务工具组件.基础UI组件.基础工具组件 最后:业务之间通过路由通讯,如果需要组…
组件化的优缺点 组件化的拆分 组件与组件之间如何进行通讯(路由) 从Cocopods拉取代码的过程 远程索引库里很多的.spec文件,该文件记录了很多内容,如用户名,框架名称,描述,框架的地址 Podfile 文件是拉取框架源码的配置文件, pod install 命令会根据Podfile中配置来拉取框架源码 Pod setup 命令会把远程索引库拷贝到本地,在本地还有一个检索文件 执行pod search命令过程,并不是直接从远程索引库查找,它是从本地的检索文件,该检索文件是以键值对的形式存在…
参考资料: 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 这篇文章只是一个学习过程的记录,因为我发现相关文章都没有比较详细的操作记录,而这个过程必定不可能像他们博文中写…
用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? 在原生的ios开发中,只需要在info.plist中把 CFBundleAllowMixedLocalizations 设置为 true 就行了,代表Localized resources can be mixed,就是允许库使用本地语言资源. 那么在Titanium中该怎么做呢? 其实也很简单,T…
Loaders 先放出项目地址:https://github.com/j20041426/Loaders 这是一个可以动态选择加载动画的样式和颜色的插件.这个项目仅仅是作为对js组件化的一个探索,不太建议用在生产环境中. 原理 通过动态渲染页面元素的方式,实现加载动画的样式选择:再通过less的客户端插件,动态改变css样式中的背景颜色,从而实现加载动画的颜色选择. 讲解 1. 结构 var Loader = (function(){ var _instance; //私有属性,对外界隐藏 va…
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模式应用.项目经验.工具的使用,所以在此只是做一个开始,后面还会做进一步的拓展和深入,尽量做到干货,欢迎探讨和纠正. 目录: 什么是组件化开发 组件化的核心内容 模块间通信的简单Demo Cocoapods 原理 使用cocoapods制作私有库的一般流程详述 小结 一. 什么是组件化开发 1. 概述…
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 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…
CocoaPods简介 任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven.WEB的Webpack等.在iOS中类库的管理工具-CocoaPods. 利用CocoaPods管理第三方库可以自动化帮我们完成各种库的依赖和配置,包括配置编译阶段.链接器选项.甚至是ARC环境下的-fno-objc-arc配置等. CocoaPods的安装和使用网上文章很多,这里不在介绍,下面主要介绍CocoaPods使用执行命令的原理. CocoaPods流程 CocoaPods整体的…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 组件化开发优点: 1.组件和组件之间没有明确的约束. 2.组件单独开发.单独测试,不能揉入主项目中开发,测试也可以针对性的测试. 组件主要分为三类: 基础功能组件: 基础 UI 组件: 产品业务组件: 使用 CocoaPods…
在 podspec 中,利用 source_files 可以指定要编译的源代码文件.可是,当我们需要把图片.音频.NIB等资源打包进 Pod 时该怎么办呢? 1.如何把资源文件打包为.bundle文件? 通常我们都会用.bundle文件把资源文件打包,这里也一样,把你的图片.音频.NIB等资源文件先统一放在一个文件夹里,文件夹名称最好是你的组件名称加上bundle,然后修改文件夹后缀为.bundle,就得到了一个bundle文件:然后把.bundle文件放在与Classes同一级的文件夹下,如下…
本文主要介绍了字节 iOS 自动化测试驱动工具的探索过程及实现原理 作者:字节跳动终端技术--陈友辉 一.背景 随着业务的扩张,单个 App 的功能越来越多,工程复杂度越来越高,每天MR可达上百次,代码变更可达上千处,航母级的 App 在这一点上更为严重.如何在频繁的代码变更中保障App质量,成了各个业务的痛点.靠传统的人工测试已无法满足各业务的需求,我们需要将更多的测试场景自动化. 自动化测试需要将人工交互行为变成自动化的原子操作.比如应用安装卸载.屏幕点拖拽及缩放.实体按键点击.设备信息获取…