[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中分類不同,因此不做詳細分類。