如何将Javascript框架注入ChakraBridge上下文?

时间:2016-05-03 13:11:41

标签: javascript win-universal-app chakra

我正在尝试使用ChakraBridge库在我的UWP应用程序中使用math.js。我引用了以下链接在UWP应用程序中使用javascript框架。 http://www.codeproject.com/Articles/1060634/Using-JavaScript-frameworks-from-your-Csharp-UWP-a

但我无法弄清楚如何将javascirpt框架注入Chakra上下文。链接说使用方法“ReadAndExecute”或“DownloadAndExecute”,但我无法在ChakraBridge库的任何类中找到这些方法。 那么如何将* .js文件注入ChakraBridge上下文?

1 个答案:

答案 0 :(得分:3)

  

链接说使用方法" ReadAndExecute"或" DownloadAndExecute",但我无法在ChakraBridge库的任何类中找到这些方法。

这两种方法应该由编码器定义。它们记录在ChakraBridge GitHub Site中。它们看起来如下:

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);
}

因此,要将* .js文件注册到ChakraBridge上下文中。只需调用以下两种方法:

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.

以下是我制作的基本演示的链接:ChakraBridgeSample

注意:

  1. Newtonsoft.Json应该作为前期工作在您的项目中引用。它可以通过在Nuget Package Manager上搜索或通过Nuget Package Manager控制台安装:" Install-Package Newtonsoft.Json"。
  2. 注册CommunicationManager.OnObjectReceived事件的行为与GitHub文档略有不同。不再有Type参数(仅数据参数)。所以在javascript方面,sendToHost函数应该如下所示:

    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");