大家好,欢迎来到IT知识分享网。
你好,这里是 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 object Console.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 项目中找到。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124865.html