文章目錄
- 前言
- 一、安裝
- 二、執行 JavaScript 腳本
- 三、與腳本交互
- 四、JS 調用 C# 方法
- 五、多線程使用
- 總結
前言
????ClearScript 是一個 .NET 平臺下的開源庫,用于在 C# 和其他 .NET 語言中執行腳本代碼。它提供了一種方便和安全的方法來將腳本與應用程序集成,并允許將應用程序暴露給腳本以進行更高級別的自定義和交互。
一、安裝
二、執行 JavaScript 腳本
using var engine = new V8ScriptEngine();
engine.Execute("var a = 10; var b = 20; var c = a + b;");
var result = engine.Script.c;
Console.WriteLine(result); // 輸出 30
三、與腳本交互
????在執行 JavaScript 腳本時,可以將 C# 對象傳遞給腳本,以便腳本可以訪問這些對象。要將對象傳遞給腳本,需要使用 AddHostObject() 方法將對象添加到 JavaScript 引擎中。
/// <summary>
/// Person類需要為Public,V8引擎才能正常訪問
/// </summary>
public class Person
{public string? Name { get; set; }public int Age { get; set; }
}/// <summary>
/// JS與C#交互
/// </summary>
static void InteractionBetweenJsAndCsharp()
{using var engine = new V8ScriptEngine();var person = new Person { Name = "沙漠盡頭的狼", Age = 18 };engine.AddHostObject("person", person);engine.Execute("var c = person.Name + ' 才 ' + person.Age + ' 歲呀?';");var result = engine.Script.c;Console.WriteLine(result); // 沙漠盡頭的狼 才 18 歲呀?
}
四、JS 調用 C# 方法
????除了將 C# 對象傳遞給 JavaScript 外,還可以在 JavaScript 中調用 C# 方法。要在 JavaScript 中調用 C# 方法,需要創建一個包含方法的類,并使用 AddHostObject() 方法將該類添加到 JavaScript 引擎中。
/// <summary>
/// JS調用C#的方法
/// </summary>
static void JsCallCSharpMethod()
{using var engine = new V8ScriptEngine();var calculator = new Calculator();engine.AddHostObject("calculator", calculator);engine.Execute("var result = calculator.Add(15, 20)");var result = engine.Script.result;Console.WriteLine(result); // 35
}public class Calculator
{public int Add(int a, int b){return a + b;}
}
五、多線程使用
????ClearScript 還支持在多個線程中使用 JavaScript 引擎。要在多個線程中使用 JavaScript 引擎,需要創建多個 JavaScript 引擎實例,并使用各自的線程來執行腳本。
using System.Threading.Tasks;
using Microsoft.ClearScript.V8;var engine1 = new V8ScriptEngine();
var engine2 = new V8ScriptEngine();Task.Run(() =>
{engine1.Execute("var a = 'Hello from thread 1!'");
});Task.Run(() =>
{engine2.Execute("var b = 'Hello from thread 2!'");
});
總結
????本文介紹了 ClearScript 的使用方法和特點,包括如何在 C# 中執行 JavaScript 腳本、如何與腳本交互、如何調用 C# 方法、多線程使用等方面的內容。ClearScript 提供了一種方便和安全的方法來將腳本與應用程序集成,并允許將應用程序暴露給腳本以進行更高級別的自定義和交互。通過使用 ClearScript,可以為應用程序添加靈活性和可擴展性,并在應用程序中實現動態腳本執行功能。