2016-05-03 10 views
2

Ich versuche, Math.js in meiner UWP-App mit ChakraBridge-Bibliothek zu verwenden. Ich habe den folgenden Link verwiesen, um ein JavaScript-Framework in einer UWP-App zu verwenden. http://www.codeproject.com/Articles/1060634/Using-JavaScript-frameworks-from-your-Csharp-UWP-aWie Javascript Frames in ChakraBridge Kontext injizieren?

Aber ich bin nicht in der Lage, herauszufinden, wie man ein Javascirpt-Framework in Chakra Kontext injizieren. Der Link sagt, verwende die Methode "ReadAndExecute" oder "DownloadAndExecute", aber ich konnte diese Methoden in keiner der Klassen der ChakraBridge-Bibliothek finden. Also, wie injiziere ich * .js Dateien in ChakraBridge Kontext?

Antwort

3

Der Link sagt, verwenden Sie die Methode "ReadAndExecute" oder "DownloadAndExecute", aber ich konnte diese Methoden in keiner der Klassen der ChakraBridge-Bibliothek finden.

Die beiden Methoden sollten vom Coder definiert werden. Sie sind in ChakraBridge GitHub Site dokumentiert. Und sie sehen aus wie folgt:

async Task ReadAndExecute(string filename) 
{ 
    //"js" is the folder name of your javascript library. 
    var script = await CoreTools.GetPackagedFileContentAsync("js", filename); 
    host.RunScript(script); 
} 

async Task DownloadAndExecute(string url) 
{ 
    var script = await CoreTools.DownloadStringAsync(url); 
    host.RunScript(script); 
} 

So registrieren * JS-Dateien in ChakraBridge Kontext. Rufen Sie einfach diese beiden Methoden wie unten:

string url = @"http://cdnjs.cloudflare.com/ajax/libs/mathjs/3.2.1/math.js"; 
await DownloadAndExecute(url);//load math.js from remote source. 
await ReadAndExecute("math.js");//load math.js from local source. 
await ReadAndExecute("main.js");//main.js is the custom js codes. You can utilize math.js here. 

Und hier ist der Link zu einer grundlegenden Demo ich gemacht: ChakraBridgeSample

Hinweise:

  1. Newtonsoft.Json sollte in Ihrem Projekt verwiesen werden Vor der Arbeit. Es kann entweder über die Suche im Nuget Package Manager oder über die Nuget Package Manager Console installiert werden: "Install-Package Newtonsoft.Json".
  2. Das Verhalten beim Registrieren des CommunicationManager.OnObjectReceived-Ereignisses unterscheidet sich etwas von der GitHub-Dokumentation. Es gibt kein Type-Argument mehr (nur Datenargument). So in Javascript-Seite sollte sendToHost Funktion wie folgt aussehen:

    var data = math.atan2(3, -3)/math.pi; 
    // "Double" should match the typeof(Double) in C# side. Capitalizing is necessary. 
    sendToHost(JSON.stringify(data), "Double");