[TOC]
本文主要面向笔者在Web、iOS、Android、WP等移动端开发中的经验总结出在现有以及未来的所有客户端的学习中应该掌握的知识脉络图。通俗来说,就是帮着梳理学习笔记的目录结构。欢迎大家一起补充,Git地址:这里
Advanced:高级内容
Architect:架构设计
MVC
MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。
MVP
MVVM
MVVM 是 Model-View-ViewModel 的简写。相对于 MVC 的历史来说,MVVM 是一个相当新的架构,MVVM 最早于 2005 年被微软的 WPF 和 Silverlight 的架构师 John Gossman 提出,并且应用在微软的软件开发中。当时 MVC 已经被提出了 20 多年了,可见两者出现的年代差别有多大。
MVC框架若使用不当不可避免的会存在着Controller过于臃肿并且解耦不当的问题,因此很多人都会推崇MVVM,贬斥MVC,不过这篇文章笔者认为讲的还是很不错的,值得思考。
Reactive
Reactive本身是异步数据流的一种实现方式,这里也即是所谓的FRP,即响应式函数编程。Reactive部分放在这边是因为它是一套从UI开始到后面响应中的完整的机制,以Android中的RxJava、Web中的RxJS以及iOS中的ReactiveCocoa为典型代表。
Core:框架底层原理分析
此部分主要包含对于框架的底层原理分析,譬如Android领域的AOSP的源代码分析,各种各样的什么底层通信框架等等的分析。
Language:框架常用语言
Objective-C
Swift
笔者看过的语法特性最先进齐全的语言之一,足以玩上好多天。
Dart
Java
Network(网络)
Socket
HttpClient
以okHttp(Android)、Volley、AFNetworking(iOS)为例。
Request Manage(请求管理)
Parallel Request(并发请求)
Storage(存储)
DataBase(数据库)
CoreData
这是iOS提供的类似于SQLite的存储方式。
SQLite
Realm
File(文件)
Props(配置文件)
Resources(资源文件)
Cache(缓存)
UserDefaults(iOS),SharedPreference(Android),localStorage(Web)
SysProc(系统与进程)
Components Communication(组件通信)
Notification(iOS)、postMessage(Web)、Handler(Android)
Concurrence
Thread(线程)
GCD/NSOperation(iOS)、AsyncTask(Android)
Promise
PromiseKit(iOS)
EventBus
Otto(Android)
Service(服务)
RPC(远程与本地调用)
NDK(Android)
TestRelease(测试与打包发布)
Debug(调试与记录)
Log(日志)
Monitor(线程与Crash监控)
Release(发布)
Signature(Android)
Ad-hoc/AppStore(iOS)
Confusion(混淆与加密)
Test
Unit Test(单元测试)
UI Test(界面测试)
External Test(第三方测试)
Optimization(优化)
Plugin & Dynamic Patch(插件化与动态更新)
譬如现在Android领域很火的多APK联合发布以及部分更新等功能。
APM(应用状态追踪与评分等)
Rating(在AppStore或者各大应用市场中的应用评分)
UI
用户交互与界面部分是最常用也是最复杂的一个部分。
UI.md(界面呈现的基本原理)
Screen & Coordinate(屏幕与坐标系)
Layout(布局)
AutoLayout(iOS)
AbsoluteLayout(Android)
Responsive(响应式)
Basic View(基本的视图提供与控制)
UIView/UIViewController(iOS)
Activity(Android)
iFrame(Web)
Container(常见的作为容器的View/Panel)
ScrollView(滚动视图容器)
CoordinatorLayout(Android)
RefreshLayout:提供下拉刷新或者上拉加载的Layout
NavigationView(导航视图)
TabBarView(页卡视图)
Router(页面路由)
Interaction(用户交互)
Event&Gesture(事件与手势操作)
Event Bind(事件监听与绑定)
Event Dispatcher(事件捕获传递与分发)
Gesture Recognize(手势监听与识别)
Multiple Touch(多点触控)
Drag&Drop(拖拽)
Scroll(滚动)
Zoom(缩放)
Shake(摇晃)
Media(音频视频播放、录制与相关操作)
Camera(照相机)
Audio
音频的录制与播放,就像iOS与Android下的语音交互,需要统一转码成AMR或者其他格式。
Video
Sensor(传感器,包括陀螺仪、重力传感器)
HealthKit(iOS)
Notification(通知栏,包括本地通知与远程推送)
Widgets(插件)
Dialog(对话框)
Modal Dialog(模态对话框)
譬如iDialog(Web)
Popup:弹出与提示层
HUD
Tooltip
Popover:覆盖层
Empty/Error 空或者错误提示
Action Sheet:底部弹出操作栏
Indicator(指示器)
Introduction(介绍或者引导页)
Splash(闪屏)
Guide/Tour(导引与教程)
DateTimer(时间显示)
TimeLine(时间轴效果)
CountDown(倒计数以及倒计时效果)
ProgressBar(进度条)
Text(文本显示以及效果)
Rich Text(富文本)
TypeWriter:打字机效果
文字的切入切出效果
Label(标签)
Tags(标签或者等效的流列表)
Badge(徽标数)
Loading(加载效果)
Picker(输入器)
Button(按钮)
FAB(浮动按钮、回到顶部按钮)
Menu(菜单)
Drawer:抽屉菜单(Android)
Toolbar/StatusBar(状态栏或者工具栏)
Select(选择器)
Segment(分段输入器)
Ratio Button
Check
Text(文本输入,泛指所有用户的自主输入的内容)
TableGrid(网格与表单)
List(列表)
ListView(Android)、UITableView(iOS)
ListView-Animation
Grid(网格)
UICollectionView(iOS)、RecycleView(Android)
CardView(卡片式)
Gallery(画廊)
ImageView(图片加载、呈现以及处理)
LazyLoad(图片懒加载)
Filter(图片滤镜)
Label(图片标签)
Sticker(图片贴纸)
Crop(图片裁剪与美化)
PhotoBrowser(图片浏览)
album(相册)
Carousel(图片轮播)
Waterfall(瀑布流方式)
LightBox(图片点击放大)
WebView
Native Interaction(本地交互)
JS-Patch(iOS)
DVisual(绘图以及数据可视化)
Graphics(基本的绘图相关)
Color(颜色与取色)
Style&Theme(样式与主题)
Filter(过滤/滤镜)
这里的View指的是对于通用的View的效果。
Chart(图表相关)
Map(地图相关)
Barcode(二维码以及条形码相关)
Animation(动画与变换)
View Transition(基本视图的常用切换)
Animation Framework(动画构造库)
android控件的动画分为三种,property animation,tween animation,frame animation。但是因为在Web和iOS中分类不同,因此不做详细分类。