我已經開始玩Appcelerator Hyperloop。儘管從零開始從JS訪問本地API似乎很不錯,但它確實提出了一些關於平臺體系結構和性能的問題。Appcelerator Hyperloop與普通鈦模塊
目前(AFAIK)Titanium應用程序具有主UI線程(運行本機UI控制器)和JS線程(運行JS邏輯)。每個從JS到Native的調用都通過「Bridge」(這是應用程序中的擴展操作)傳遞。
此外,Titanium API並未涵蓋所有原生API和摘要。但是,如果引入新的API,Appcelerator可能需要一些時間才能將這些API實施到平臺中。
關於Titanium我最喜歡的一件事是擴展它的能力(使用objective-c for iOS和java for Android) - 允許使用Titanium未涵蓋的本機API,並開發真正的本機性能控制以防我們需要爲JS做任何過於「沉重」的事情。而且,如前所述,它是針對每個平臺開發的100%原生的。
現在的Appcelerator推出超迴路列車我做了一個簡單的測試應用程序,看到超迴路列車不被翻譯爲本地代碼,但只是正常的JS代碼:
var UILabel = require('hyperloop/uikit/uilabel');
var label = new UILabel();
label.text = "HELLO WORLD!";
$.index.add(label);
而它的另一件事是,你必須在主線程上運行。
所以我們基本上有幾件事想到這裏就超迴路列車架構雲:
- 我們仍然有一個橋樑?如果Hyperloop是調用「特殊」Hyperloop需求的JS,那麼我們仍然有一個橋樑,現在不僅可以充當橋樑,而且還需要做某種反射(這也是一種擴展操作)?
- 直到現在,JS運行在它自己的線程中 - 所以現在在單個主線程中運行似乎是更多UI阻塞操作的潛在來源。
- 老式的模塊真的是本地的(不包括橋接電話) - 那麼如何使用支持Hyperloop的應用程序與那些應用程序相比?
沒有太多有關Hyperloop的文檔或文章可以解釋內部工作 - 所以如果任何人有任何答案一直在嘗試應用程序可能是非常有用的。
謝謝。 事實上,我看到我得到的對象是「KrollCallback」和「HyperloopClass」。 你能否進一步解釋這個架構以及它在主線程上運行的含義? 在舊模塊中,假設我創建了一個包含圖像和文本的TableView - 關於使用TiView包裝TableView的說法是真實的 - 但是就該視圖的子對象而言(ImageView $ Label) - 它們是原生的作爲一個 - 所有你綁定他們的事件。只有你帶回JS的東西才能跨越橋樑 - 所以不是比做反射更高效? – developer82
嘿!我爲此做了一個自己的回答,因爲評論只能有600個字符。 –
@HansKnoechel是否可以創建一個Hyperloop模塊?我看到了你提出的規範,並且想知道如何爲此進行計劃。很顯然,人們希望即插即用模塊不僅僅是每次創建定製的Hyperloop業務邏輯。 –