【问题标题】:How into inject javascript frameworks into ChakraBridge context?如何将 javascript 框架注入 ChakraBridge 上下文?
【发布时间】:2016-05-03 13:11:40
【问题描述】:

我正在尝试使用 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 上下文呢?

【问题讨论】:

    标签: javascript win-universal-app chakra


    【解决方案1】:

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

    这两种方法应该由coder定义。它们记录在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 包管理器上搜索或通过 Nuget 包管理器控制台安装:“Install-Package Newtonsoft.Json”。
    2. 注册 CommunicationManager.OnObjectReceived 事件的行为与 GitHub 文档略有不同。不再有类型参数(只有数据参数)。所以在 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");
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2011-05-19
      • 2012-08-30
      • 2010-10-04
      • 1970-01-01
      相关资源
      最近更新 更多