2016-05-01 7 views
4

Ist es möglich, ferne reaktive native Komponenten in Echtzeit zu laden und zu cachen?Laden Sie native Komponenten dynamisch von einer URL aus

Wir möchten in der Lage sein, Teile der Benutzeroberfläche zusammen mit ihren jeweiligen Back-End-Microservices zu erstellen und bereitzustellen, sodass wir konfigurieren können, welche Clients welche Komponente/Backend-Combo zentral verwenden.

Antwort

0

Öffnen Sie Ihr iOS-Projekt in xcode, und überprüfen Sie AppDelegate.m.

NSURL *jsCodeLocation; 
#ifdef DEBUG 
    /** 
    * Loading JavaScript code - uncomment the one you want. 
    * 
    * OPTION 1 
    * Load from development server. Start the server from the repository root: 
    * 
    * $ npm start 
    * 
    * To run on device, change `localhost` to the IP address of your computer 
    * (you can get this by typing `ifconfig` into the terminal and selecting the 
    * `inet` value under `en0:`) and make sure your computer and iOS device are 
    * on the same Wi-Fi network. 
    */ 
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/compiled/src/index.ios.bundle?platform=ios&dev=true"]; 
    #else 
    /** 
    * OPTION 2 
    * Load from pre-bundled file on disk. The static bundle is automatically 
    * generated by the "Bundle React Native code and images" build step when 
    * running the project on an actual device or running the project on the 
    * simulator in the "Release" build configuration. 
    */ 
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
    #endif 

Wie Sie sehen, unterstützt es bereits das Laden des Bundles entweder remote oder lokal. Das Laden aus der Ferne wird in der Produktion aus Leistungsgründen definitiv nicht empfohlen.

Sie können Werkzeuge wie www.apphub.io und CodePush auschecken. Sie helfen Ihnen, Updates dynamisch zu verteilen.

Obwohl keine der Alternativen das hier gestellte Problem löst: Wie man einzelne Komponenten dynamisch lädt. Da Sie Ressourcen in JS remote laden und auswerten können und nur gültige JSX mit gültigen nativen Komponenten zurückgeben müssen, ist dies definitiv nicht unmöglich!

+0

ich denke, auf diese Weise laden wir unsere gesamte Anwendung vom Server; Hast du einen Weg gefunden, dies für nur ein paar Komponenten zu tun? –

Verwandte Themen