C# 使用 Jint 执行 JavaScript 脚本的完整指南

作者:百宝袋时间:2026-10-24 21:33:07浏览:554

本文介绍如何在 C# 中使用 Jint 库执行 JavaScript 脚本。涵盖 NuGet 包安装、表达式求值、字符串处理、变量赋值、对象数据交换、C# 委托映射至 JS 以及 JS 函数反向调用等核心功能,帮助开发者实现高效的双向脚本交互。

Jint 库简介与背景

此前在开发 SCXML 状态机时,曾使用 Jint 库解析 EMCScript 表达式,但当时觉得 C# 与 JS 之间的数据转换略显繁琐。近期关注到 Jint 3.0 版本已有显著改进,本文旨在介绍该版本的用法,供读者参考。

环境安装与配置

首先需通过 NuGet 安装 Jint 包。请注意勾选 prerelease 选项以获取最新版本,具体操作可通过 dotnet 命令行指令完成。

dotnet add  package Jint --prerelease

基础表达式与字符串处理

接下来演示如何直接计算 JavaScript 表达式。

Console.WriteLine("直接计算表达式:(1+2)*3");
var r1= e.Evaluate("(1+2)*3");
Console.WriteLine(r1);

随后展示字符串操作相关的示例。

Console.WriteLine("字符串操作:'abc'.length");
var r2=e.Evaluate("'abc'.length");
Console.WriteLine(r2);

Console.WriteLine("-----------------------");
Console.WriteLine("字符串操作:'abc'.substr(2)");
var r3=e.Evaluate("'abc'.substr(2)");
Console.WriteLine(r3);

数据交换与变量赋值

利用 SetValue 方法,可以向 JS 变量赋值。

var e2 = new Engine()
    .SetValue("x", 1)
    .SetValue("y",2);
var r4=e2.Evaluate("x+y");
Console.WriteLine(r4);

通过对象传递,可实现 C# 与 JS 之间的数据交换。

var myobj= new Student {
    Name="张三"
};
Console.WriteLine(myobj.Name);
var e4 = new Engine()
    .SetValue("student", myobj)
    .Execute("student.Name = '李四'");
Console.WriteLine(myobj.Name);

C# 与 JS 函数双向调用

可以将 C# 函数委托映射给 JS 引擎,从而在 JS 代码中直接调用这些 C# 函数。

Console.Write("将CSharp函数设置给Js引擎");
var engine = new Engine()
    .SetValue("log", new Action<object>(Console.WriteLine));
 engine.Execute(@"
    function hello() { 
        log('Hello World');
    };
 
    hello();
");

反之,也可以从 C# 代码中调用 JS 定义的函数。

Console.WriteLine("调用JS函数计算BMI");
var e5=new Engine()
    .Execute("function bmi(weight, height) { return weight/height/height; }");
Console.WriteLine(e5.Invoke("bmi",75,1.75));

.NET 类库集成与示例获取

通过引入 CLI 配置,可以在 JS 引擎中调用 .NET 类库中的函数。

Console.WriteLine("调用.Net函数写入文件");
var e6 = new Engine(cfg => cfg.AllowClr());
e6.Execute(@"var f=System.IO.StreamWriter('sayhello.log');
        f.WriteLine('你好 !');
        f.Dispose();");

完整示例代码可从 GitHub 下载,地址为 https://github.com/zhenl/CSharpScriptDemo,本文涉及的具体示例位于 JSInCSharp 项目中。

至此,关于 C# 执行 JavaScript 脚本的方法步骤介绍完毕。如需了解更多相关内容,建议搜索本站往期文章或继续浏览后续文章,感谢支持。

作者最新文章