IngramChen 積分 0

你都寫完了 XD

我再試的時候發現 markdown 這塊不知怎麼處理,想說是該由 server 直接吐 jsx ,然後 mobile 直接 render。但是 render() 能吃string 直接跑嗎? 還找不到相關的資料

IngramChen 積分 0

可惜現在只有 iOS,不然該寫個 kaif mobile 玩玩試試它的威力

siuying 積分 2

對,但 React Native 重點還是 React :render 是個 stateless 的 function ,減少了管理 UI state 的 code 。實際上更新 UI 也是用了 React 的方法做到最少的更新 (而不是全部重新 render)。

popcorny 積分 1

Titanium也是類似的架構,用javascript當proxy跑起native的widget。

Link1

siuying 積分 1

在 javascript 裡的 component 其實是一個 proxy ,背後對應到一個真正 的 native 的 View 上,所以本體仍然是 iOS ( 或 Android)

popcorny 積分 0

所以用他的proejct主體還是iOS project,只是裡面用React Native去render view囉? 不知道這樣理解正不正確?

siuying 積分 4 編輯於

跨平台是不切實際的,那可以做到但滿足不到對 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)。

IngramChen 積分 2 編輯於

learn once, write anywhere

what? 原來沒辦法跨平台?犧牲原生的平台,只換到快速 reload,然後帶來更難 debug... hhmmm 怎麼算都不合啊。

這.. 只對原 React 開發者會有好處吧....

siuying 積分 1

這不是write once run everywhere 的技術呢,真正的賣點是 React 的 開發方式和 live reload 的快速 feedback loop

popcorny 積分 3 編輯於

一直覺得對這種run once, debug anywhere的Framework很好奇,真正比較大的App是否會使用這種方案嗎?從Cordova/Phonegap, Titanium, 到Xamarin都是為了解決這個問題。但是說真的,如果要用third party的library,或是要follow android/ios的design guideline,是否可以面面俱到? 更何況兩大平台有很多本質上的不同。

不過不可否認,對於那種很快想要推出兩大平台的App這種Solution絕對最快,但是長遠來講,這技術債應該都要還的..

IngramChen 積分 0

我也覺得如此,好像要全盤都接受他們的做法,沒有辦法一點一點抽換著試。

siuying 積分 1

暫時它的好處沒有好到讓人覺得可接受它所需要的投入

IngramChen 積分 0

正式公開啦,有沒有勇者先試一下?

koji 積分 1 編輯於

image1

- (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);
  }];
}
siuying 積分 0

發明工具而不是把自己當工具!

siuying 積分 0

,在 release note 上寫出來已經不算是雷了(笑

「為甚麼要break」就是內部實作改了,寫出來也沒意思吧

IngramChen 積分 0 編輯於

wtf! 沒事 break 在奇怪的地方,又要多測一種版本。iOS 越來越需要另一層來包裝它的 api 了 (類似 jQuery 之於 dom)

close source 就算了,也不說明一下為什麼要 break。

siuying 積分 0

layoutIfNeeded 一段很微妙 ...

siuying 積分 2

我是講 Flux , React 就是 render view 的技術,像一天由 Mustache 轉成 Handle Bar 當然要重寫了。再說這技術很 Lightweight ,一大堆人跑出來說用幾千行就 replicate 出來啦...

IngramChen 積分 1

不會阻止他們用舊的,但有可能 iOS JavaScriptCore 忽然就不更新了,例如 Apple 想推一些新東西,希望大家轉到新架構,所以不想 js 跑太好之類的 (Apple 說砍 Garbage Collection 就砍)

而擁抱標準架構的開發者,Apple 可能會替你準備 XCode 讓你順利轉移。但用 Facebook 的架構就得自求多福了 (因為不是標準..)。

我不是說 React 不好,主要的論點在於在 Facebook 手上的技術要推廣進標準不容易,很容易就被平台商主推的東西取代,而 Facebook 面對這種情況無計可施 (最少目前看來)

IngramChen 積分 0

半斤八兩吧

React 如果不流行了,那些非標準的 ReactComponent, JSX 誰可以維護呢?都嘛要重寫....