RedPotion 是我最近在玩的一套 iOS App 開發框架。
大家應該了解 用 Ruby 開發的 Rails,在網站開發這一塊,有多強大。那麼白話的形容「redpotion」,你可以想像成它就是 RubyMotion 上的 Rails。
What is RubyMotion?
RubyMotion 是一套在 2012 年誕生的新語言,希望解決的事是「用 Ruby 寫出跨平台的 App」。跨平台的 App 當然包括 iOS App。
這在當時引起了一陣騷動,因為 Ruby 的語法比起 Objective-C 以及 JAVA 起來實在是好寫太多了。如果真的可以寫 Ruby,快速開發出 iOS 與 Android App,那會是一套很棒的事。
Why not RubyMotion?
當然,好日子沒有過的太長。Ruby Motion 更新非常快,母公司技術實力也雄厚。但在推展上卻有一點小阻力。
最大的問題有兩個:
- Apple 在 2014 年中推出 Swift,把 iOS 的開發門檻大量的往下拉。
- RubyMotion 的語法還是很囉唆,要寫一個 RubyMotion iOS App,純靠 Ruby 功力鐵定是不行的,你還是要在 Ruby 裡面寫出很多像 Objective-C 的 Code。
所以有人開玩笑說,如果要用 RubyMotion 加速開發,開發者的 Ruby 與 Objective-C 功力都要有一定才可以。否則還不如去學 Swift。
What is RedPotion?
RedPotion 是一家技術狂熱的公司 infinitered 在 2014 年底開始的專案。初衷有點像是 RubyMotion 懶人包,幫開發者準備好上手的 boilerplate (模板),內建許多厲害的 gem。逐漸把 RubyMotion 開發變成是更簡單的事。舉例來說,以下是兩個 app 的 app_delegate.rb ( app 起始檔案)
用 RedPotion 寫出來的程式碼,就比較像人可以維護的程式碼。也像是正常人「希望 RedMotion」可以長成的樣子。
RubyMotion 的 app_delegate.rb
RedPotion 的 app_delegate.rb 與 home_screen.rb
RedPotion 內建了什麼 gem 可以讓 RubyMotion 變得這麼好寫?
RedPotion 內建了幾個好用的 gem,讓 RubyMotion 寫起來更加容易,更像 Rails。
一套 UI Library。支援
- events and gestures
- view factory
- stylesheets
- actions
- position
- selecting (querying views)
- templates
- traversal through view hierarchy (moving around the tree)
- animations
- validations
- tagging
- colors
- fonts
- image utilities
- app
- device
白話的說,就是用了 RMQ。可以用 jQuery 的方式 select UI 元件,做出你想要的視覺效果。然後也讓你的 View 可以用類似使用 stylesheets 的方式排版。
把 Screen 變得更好寫。提供了很多排版樣式,常見的內建排版形式都有提供:
- Screens
- Navigation Bars
- Tab Bars
- Table Screens
- Grouped Tables
- Searchable
- Refreshable
- SplitScreens
- Map Screens
- Web Screens
ProMotion 本身自己也是一套小型框架,所以有一卡車的 addons。比如說 roMotion-XLForm 就還蠻有名的。可以讓開發者很快地就作出一個表單。
比如說,這是我最近在開發登入畫面的程式碼:
出來成果就會長這樣。
額外搭配使用: MotionKit
如果我要做的版面,超過 ProMotion 可以提供的部份(比如說我要做 Customized Cell),我還會用 MotionKit,直接拉版面。拉的方式很像是寫 HTML ..
CDQ 可以讓開發者操作 Coredata 就像在 Rails 裡面操作 ActiveRecord 一樣。
AFNetoworking 的 Ruby 版。在接 API 時非常 friendly。介面非常像平常寫習慣的 Ruby http-client library。
其他
Gemfile 裡面還有一些選項是 Optional 沒有打開,諸如:
Summary
總之,RedPotion 內建的這幾個核心的元件。就是圍繞著幾個 iOS 內建最常需要被解決的問題
- Screen 如何拉
- Layout 如何快速排版
- 容易的「上色 Styling」
- 容易的存取 Core Data
- 很好處理 API 來的資料流
如果你想要享受在 Ruby 上如寫 Rails 般暢快的開發 App 感。歡迎再給 RedPotion 一個機會。
相關資源