你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具和組件,希望對您有用!
Jint 簡介
如果您想在您的 .NET 程序中使用 Javascript,那么我推薦您使用 Jint。
Jint 是適用于 .NET 的 開源 Javascript 解釋器,功能強大,它可以在任何現代 .NET 平臺上運行,因為它支持 .NET Standard 2.0 和 .NET 4.6.2 以及更高版本),包括最新的 .NET 6。
因為 Jint 既不生成任何 .NET 字節碼也不使用 DLR,所以在執行比較少的代碼時,它的運行效率很快。
在 Nuget 包管理器中搜索并安裝 Jint 即可,它沒有其他的一些依賴。
小試牛刀
執行 JS 表達式,并輸出結果。
using?Jint;var?engine?=?new?Jint.Engine();var?result?=?engine.Execute("1?+?2?+?3?+?4?+?5")????????????????????.GetCompletionValue();
Console.WriteLine(result);
//?Output:?15
這里,變量 x 設置為 3,并且 x * x 在 JavaScript 中進行計算,結果直接返回給 .NET 對象。
using?Jint;?var?square?=?new?Engine().SetValue("x",?3)?????//?定義一個新變量?x.Evaluate(?"x?*?x")???//?聲明表達式.ToObject();??????????//?轉換為?.NET?objectConsole.WriteLine(square);//?Output:?9
你可以直接把 .NET 中的對象實例傳遞給 JS 并使用它,它的修改在 .NET 和 JS 中保持同步。
var?p?=?new?Person
{Name?=?"Mickey?Mouse"
};var?engine?=?new?Engine().SetValue("p",?p).Execute("p.Name?=?'Minnie'");Console.WriteLine(p.Name);//?Output:?"Minnie"
你可以直接在 .NET 中執行在 JS 定義的函數。
var?engine?=?new?Engine();var?add?=?engine.Execute("function?add(a,?b)?{?return?a?+?b;?}").GetValue("add");var?result?=?engine.Invoke("add",1,2);??Console.WriteLine(result);//?Output:?3
您還可以使用 module 從多個腳本文件中導入和導出變量。
var?engine?=?new?Engine(options?=>
{options.EnableModules(@"C:\Scripts");
})var?ns?=?engine.ImportModule("./my-module.js");var?value?=?ns.Get("value").AsString();
更多其他的高級用法,可以在 github 的 Jint 項目中找到。
項目地址
在?Dotnet工具箱?公眾號內,回復?A111,即可獲取項目地址。
Dotnet 工具箱
掃碼關注我們
分享
點收藏
點點贊
點在看