你都寫完了 XD
我再試的時候發現 markdown 這塊不知怎麼處理,想說是該由 server 直接吐 jsx ,然後 mobile 直接 render。但是 render() 能吃string 直接跑嗎? 還找不到相關的資料
跨平台是不切實際的,那可以做到但滿足不到對 app 有要求的人...
但是他們提供了一個工具讓你可以同一套 logic 在不同平台行,再在不同平台用不同的 UI code (都是用 React/JavaScript)。其實用甚麼語言也不大要緊,但比起用 C++ (Dropbox) 或 C# 或 Java 或 Ruby , Facebook 選了 JavaScript 和React 吧。
即時可以看到 feedback 這點是無限大的好處啊,一般 app compile - deploy - run loop 最快也要十多秒吧 (我就不說 Android 了) ,但現在可以 500ms 搞定。看看 React Native 第二個 keynote 吧
Debug 的確是一個問題,但他們甚至吧 IDE1 也做了... 之前他們只是說做 Chrome Dev Tools 而已 (REPL 可以更改 app state)。
learn once, write anywhere
what? 原來沒辦法跨平台?犧牲原生的平台,只換到快速 reload,然後帶來更難 debug... hhmmm 怎麼算都不合啊。
這.. 只對原 React 開發者會有好處吧....
- (UIImage*) dukeImage {
NSArray* asciiRep = @[
@"· · · · · 1 · · · · · ·",
@"· · · · # · # · · · · ·",
@"· · · 4 · · · # · · · ·",
@"· · # · · · · · # · · ·",
@"· # · · · g · · · # · ·",
@"3 # # # # # # # # # 2 ·",
@"E # # # # # # # # # F 6",
@"# · g · · · · · g · · #",
@"# · · · · · · · · · · #",
@"D · · · · g · · · · · #",
@"C · · · A # # 9 · · · 7",
@"· # · # · · · · # · # ·",
@"· · B · · · · · · 8 · ·",
];
return [UIImage imageWithASCIIRepresentation:asciiRep contextHandler:^(NSMutableDictionary* context) {
NSInteger index = [context[ASCIIContextShapeIndex] integerValue];
if (index == 2) {
context[ASCIIContextFillColor] = [UIColor redColor];
} else if (index == 0) {
context[ASCIIContextLineWidth] = @(1.0);
context[ASCIIContextShouldClose] = @(YES);
context[ASCIIContextFillColor] = [UIColor blackColor];
} else {
context[ASCIIContextLineWidth] = @(1.0);
context[ASCIIContextStrokeColor] = [UIColor blackColor];
}
context[ASCIIContextShouldAntialias] = @(YES);
}];
}
wtf! 沒事 break 在奇怪的地方,又要多測一種版本。iOS 越來越需要另一層來包裝它的 api 了 (類似 jQuery 之於 dom)
close source 就算了,也不說明一下為什麼要 break。
不會阻止他們用舊的,但有可能 iOS JavaScriptCore 忽然就不更新了,例如 Apple 想推一些新東西,希望大家轉到新架構,所以不想 js 跑太好之類的 (Apple 說砍 Garbage Collection 就砍)
而擁抱標準架構的開發者,Apple 可能會替你準備 XCode 讓你順利轉移。但用 Facebook 的架構就得自求多福了 (因為不是標準..)。
我不是說 React 不好,主要的論點在於在 Facebook 手上的技術要推廣進標準不容易,很容易就被平台商主推的東西取代,而 Facebook 面對這種情況無計可施 (最少目前看來)