组件化开发-001-本地私有库抽取和远程私有库创建

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

1  组件化
组件化最大目的是为了降低功能、项目与项目组件之间很强的依赖,降低耦合度,抽取时优先抽取基础组件,全局属性,封装的AFN等.

2 组件化优缺点:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #aa7942 }
span.s1 { color: #0433ff }
span.s2 { color: #000000 }
span.s3 { color: #ff2600 }
span.s4 { color: #ff40ff }

1.优点:A:降低耦合度

B:组件单独开发,单独测试

C:多人协作开发

缺点:版本同步的问题

组件拆分:A:功能拆分(轮播器,网络框架,图片加载,公共基础类,类别,工具类等

B:业务拆分(登录,聊天,商城等等

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

C: router (只负责业务之间的业务往来)

3 组件化步骤:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
span.s1 { color: #000000 }

第一步:新建一个名为HKTools的工程,在工程目录下创建一个名为Lib的文件夹

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

1>创建 Podfile 文件

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
span.s1 { }

cd /Users/MengYu/Desktop/HKTools

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
span.s1 { }
span.Apple-tab-span { white-space: pre }

pod init

ls 查看所有文件  HKTools HKTools.xcodeproj Podfile

2>创建模板

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
span.s1 { }
span.s2 { color: #ff2600 }

cd /Users/MengYu/Desktop/HKTools/Lib/

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
span.s1 { }

pod lib create HKTools

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff; min-height: 25.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #aa7942; background-color: #ffffff }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #d53bd3; background-color: #ffffff }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #5230e1; background-color: #ffffff }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #34bc26; background-color: #ffffff }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #afad24; background-color: #ffffff }
span.s1 { }
span.s2 { color: #afad24 }
span.s3 { color: #000000 }
span.s4 { color: #34bc26 }
span.s5 { text-decoration: underline }
span.s6 { text-decoration: underline; color: #000000 }
span.s7 { color: #d53bd3 }

Cloning `https://github.com/CocoaPods/pod-template.git` into `HKTools`.

Configuring HKTools template.

! Before you can create a new library we need to setup your git credentials.

//填写基本信息

What is your email?

> [email protected]

! Setting your email in git to [email protected]

git config user.email "91610[email protected]"

------------------------------

To get you started we need to ask a few questions, this should only take a minute.

If this is your first time we recommend running through with the guide:

- https://guides.cocoapods.org/making/using-pod-lib-create.html

( hold cmd and double click links to open in a browser. )

What platform do you want to use?? [ iOS / macOS ]

> iOS

What language do you want to use?? [ Swift / ObjC ]

> ObjC

Would you like to include a demo application with your library? [ Yes / No ]

> Yes

Which testing frameworks will you use? [ Specta / Kiwi / None ]

> None

Would you like to do view based testing? [ Yes / No ]

> No

What is your class prefix?

> HK

Running pod install on your new library.

Analyzing dependencies

Fetching podspec for `HKTools` from `../`

Downloading dependencies

Installing HKTools (0.1.0)

Generating Pods project

Integrating client project

[!] Please close any current Xcode sessions and use `HKTools.xcworkspace` for this project from now on.

Sending stats

Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

[!] Automatically assigning platform `ios` with version `9.3` on target `HKTools_Example` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

Ace! you‘re ready to go!

We will start you off by opening your project in Xcode

open ‘HKTools/Example/HKTools.xcworkspace‘

To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.

To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`.

此时会自动打开一个名为HKTools的工程

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

第二步:抽取本地私有库

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

选取本地基础组件库Common文件夹到HKTools下的ReplaceMe.m中,替换 ReplaceMe.m

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

把Replace 删掉 替换成Common文件夹

第三步:重新install,另外新起一个终端 cd 到HKTools工程下的Podfile路径

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
span.s1 { }

cd /Users/MengYu/Desktop/HKTools/Lib/HKTools/Example/Podfile

pod install 进行安装

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }

添加其他依赖:source 远程私有库

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #272ad8; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; background-color: #ffffff; min-height: 25.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #ba2da2; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #272ad8 }
span.s3 { color: #ba2da2 }

source ‘https://github.com/CocoaPods/Specs.git‘

platform :ios, ‘9.0‘

use_frameworks!

target ‘HKTools_Example‘ do

  pod ‘HKTools‘, :path => ‘../‘

  target ‘HKTools_Tests‘ do

    inherit! :search_paths

    pod ‘AFNetworking‘, ‘~> 3.1.0‘

  end

end

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #272ad8 }
span.s1 { color: #000000 }
span.s2 { color: #000000; background-color: #ffffff }
span.s3 { background-color: #ffffff }

复制pod ‘HKTools‘, :path => ‘./Lib/HKTools‘ 到本工程下的Podfile文件中

source ‘https://github.com/CocoaPods/Specs.git‘
platform :ios, ‘9.0‘
use_frameworks!

target ‘HKTools‘ do
  # Uncomment the next line if you‘re using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for HKTools
  pod ‘HKTools‘, :path => ‘./Lib/HKTools‘
end

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }

在本工程Podfile路径下,使用pod install 安装依赖

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #34bc26; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #000000; background-color: #ffffff; min-height: 25.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #ff2600 }
span.s1 { }

Installing HKTools (0.1.0)

Generating Pods project

Integrating client project

[!] Please close any current Xcode sessions and use `HKTools.xcworkspace` for this project from now on.

Sending stats

Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

本地私有库创建完毕

第四步:远程私有库创建

未完,待续~~~~

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #0433ff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC"; color: #0433ff }

原文地址:https://www.cnblogs.com/StevenHuSir/p/ComponentBased.html

时间: 2024-10-10 20:18:32

组件化开发-001-本地私有库抽取和远程私有库创建的相关文章

组件化开发的一些思考

看了limboy和Casa的文章,关于组件化开发,整理了一下思路. 1.为什么要进行组件化开发? 一个产品,在最开始的时候,由于业务简单,一般是直接在一个工程里开发.这种方式,在产品起步阶段,是没有问题的,也能够有效的保证开发效率.但随着业务的不断发展,代码量不断增多,开发团队不断壮大,最后的模块间关系会发展成如下图所示: 从上图中可以看到,这种单一工程开发模式存在一些弊端: 模块间耦合严重(模块是指较大粒度的业务功能.比如说微信,我们根据首页Tab,可以分为四大模块:会话.通讯录.发现.我).

Android项目模块化/组件化开发(非原创)

文章大纲 一.项目模块化初步介绍二.项目模块化的两种模式与比较三.大型项目模块化的演进四.项目模块化总结五.参考文章 一.项目模块化初步介绍 1. 前言 在Android开发中,随着项目的不断扩展,项目会变得越来越庞大,而随之带来的便是项目维护成本与开发成本的增加!每次调试时,不得不运行整个项目:每当有新成员加入团队时,需要更多的时间去了解庞大的项目...而为了解决这些问题,团队通常会将项目模块化,以此来降低项目的复杂度和耦合度,让团队可以并行开发与测试,让团队成员更加专注于自己所负责的功能模块

【组件化开发】前端进阶篇之如何编写可维护可升级的代码

前言 我还在携程的做业务的时候,每个看似简单的移动页面背后往往会隐藏5个以上的数据请求,其中最过复杂的当属机票与酒店的订单填写业务代码 这里先看看比较“简单”的机票代码: 然后看看稍微复杂的酒店业务逻辑: 机票一个页面的代码量达到了5000行代码,而酒店的代码竟然超过了8000行,这里还不包括模板(html)文件!!! 然后初略看了机票的代码,就该页面可能发生的接口请求有19个之多!!!而酒店的的交互DOM事件基本多到了令人发指的地步: 当然,机票团队的交互DOM事件已经多到了我笔记本不能截图了

Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用.其实说是多页面应用,实际上在webpack中属于四个app,  如果真是做纯单页面,那应该有二三十个页面吧.所以我这里的多页面应用,是分为四个SPA.比如微信最下面,有四个导航,微信,通讯录,发现,我. 那么这四个导航,就是我的四个SPA,配置多个入口即可. 在这里就不说太多代码了,项目结构将会放

Android 业务组件化开发实践

组件化并不是新话题,其实很早很早以前我们开始为项目解耦的时候就讨论过的.但那时候我们说的是功能组件化.比如很多公司都常见的,网络请求模块.登录注册模块单独拿出来,交给一个团队开发,而在用的时候只需要接入对应模块的功能就可以了. 百牛信息技术bainiu.ltd整理发布于博客园 今天我们来讨论一下业务组件化,拿出手机,打开淘宝或者大众点评来看看,里面的美食电影酒店外卖就是一个一个的业务.如果我们在一个项目里面去写的时候,总会出现或多或少的代码耦合,最典型的有时为了赶上线时间而先复制粘贴一段类似的代

Android组件化开发实践

Android项目中代码量达到一定程度,编译将是一件非常痛苦的事情,短则一两分钟,长则达到五六分钟.Android studio推出instant run由于各种缺陷一般情况下是被关闭的--组件化开发可以有效降低代码模块的耦合度,使代码架构更加清晰,同时模块化的编译可以有效减少编译时间,当然总的编译时间是不会减少的,只是App模块化之后开发某个模块时,只需要编译特定模块,可以快速编译调试. 百牛信息技术bainiu.ltd整理发布于博客园 原理 组件化和插件化有些同学有些迷惑,简单来说组件化是在

Android组件化开发的简单应用

组件化开发的主要步骤: 一.新建Modules 1.新建Project,作为应用的主Module. 2.新建Module:"Common",类型选择"Android Library",作为所有其它Module的基础依赖库. 3.新建Module:"Home",类型选择"Android Library",依赖"Common". 4.新建Module:"Project",类型选择"

Android适合组件化开发的路由框架:Launch

1.概述 最近越来越不想写代码了,特别是一些重复性的代码,比如由于每次启动一个 Activity,我们都会很习惯的在 Activity 中写下: public static void launch(Activity activity) { Intent intent = new Intent(); intent.setClass(activity, xxxActivity.class); activity.startActivity(); } 已经有两年Android开发经验的我掐指一算,好像有

vue中的组件化开发

常常听一些前辈说vue是react的组件化+angular的数据绑定的结合体: 最近刚刚开始使用vue开发项目,我也是在摸索中前进,现在我们来说一说vue的组件化开发. 实际的项目开发,并不像一些文章中的提到的模式,而是如图所示的模式: App.vue是项目的入口.组件实则也是一个以.vue为后缀的文件.我们可以在src\components文件夹下创建一个xxx.vue: 然后在文件中编写可以提出的公共部分的代码为组件.然后在您需要调用该组件的页面,如下图方式调用: 是不是很简单.现在来解释一