HHRouter 開源後日談

這週二,火花開源了一個小項目 HHRouter,不到一週,已經得到很多關注。而且在 GitHub 的本日熱門 Objective-C 項目榜中佔據榜首連續兩天,目前也在本週熱門排列第四。尤爲值得一提的是,關注者不只有國內一線開發者,還包括 Twitter, Groupon, Airbnb 這類硅谷熱門公司的工程師。html

很有成就感,撰文一篇記念,也順便聊聊 HHRouter 開源先後的一些事兒。git

URL Router

HHRouter 背後的理念是 URL Router,這並非新鮮的理念,早在數年前 Facebook 的 Three20 中就有相似的實現。但在 HHRouter 的傳播過程當中,我注意到仍是有許多人對此並不瞭解。github

一言以蔽之,URL Router 即將 UIViewController 映射成 URL,從而支持經過 URL 進行界面跳轉。是的,就和 Web 同樣。固然,這並非 Web Developer 轉職爲 iOS Developer 後所作的無聊玩具。URL Router 有着許多切實的好處。算法

首先,這可以減小 UIViewController 之間的耦合。在沒有 URL Router 的世界,若是 aViewController 須要跳轉到 bViewController,就必須依賴於後者,這很容易就形成錯綜複雜的依賴鏈。引入 URL Router 後,這些鏈條天然就被斬斷。架構

其次,當每一個界面都擁有惟一且不重複的 URL ,將帶來額外的好處。譬如,你將更容易實現這些需求:Push 打開指定的界面、追蹤用戶瀏覽記錄、開放 URL Scheme。app

再次,當你嘗試引入 Hybrid 架構時,你會發現用統一語言描述 Web View 和 Native View 多麼幸福。less

HHRouter

剛纔也有提到,URL Router 並非新鮮的理念,那咱們爲何重造一個輪子呢?ide

答案天然是對於如今的輪子不夠滿意。Three20 太臃腫天然沒必要再提,而其餘 Router 也在設計或實現上有着不天然之處。優化

HHRouter 的設計哲學是 Clean, Fast & Flexible。url

HHRouter 不依賴於其餘庫,本身實現了一套簡單的 Mapping 算法,核心代碼只有 60 行。算法雖簡單,但也作過專門優化,不像某些 Router,每次尋址就是作一次完整的遍歷...

HHRouter 避免作太多事情,譬如對於界面跳轉的控制,每一個 App 均可能存在差別,HHRouter 就乾脆放手無論。正由於心無旁騖,只作 URL Mapping,才能專心把這件事作好,作到極致。譬如對 URL Query Params 的支持,以及對 App 自定義 URL Scheme 的支持。

Marketing

一些同窗關心的問題是,HHRouter 是如何得到這麼多關注的?

我在 Reddit, V2EX, Weibo, Twitter 上公佈了 HHRouter 開源的消息,這帶來了第一批的流量,讓 HHRouter 進入了 GitHub Trending 頁面,這又帶來了後續的流量。

僅此而已,並不是特意作過什麼推廣。問題的答案其實在前文就已提到。比起關心推廣,不如將更多精力花在產品的定位與打磨。

Open Source

事實上,HHRouter 的主要代碼都是在一年多前寫的。此番只不過是作些整理。這不是單一的事件,而會是火花擁抱開源的一個開始。

爲何要擁抱開源?推薦閱讀這篇《Open Source (Almost) Everything》,做者 Tom Preston-Werner 是 GitHub Co-Founder。

引用文中我特別青睞的一段:

When I start a new project, I assume it will eventually be open sourced (even if it's unlikely). This mindset leads to effortless modularization. If you think about how other people outside your company might use your code, you become much less likely to bake in proprietary configuration details or tightly coupled interfaces. This, in turn, leads to cleaner, more maintainable code. Even internal code should pretend to be open source code.

不管如何,請期待火花的更多開源做品 :)

相關文章
相關標籤/搜索