你好,这里是 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 工具箱
扫码关注我们
分享
点收藏
点点赞
点在看