C# 执行Javascript脚本的方法步骤

 更新时间:2022年01月05日 10:33:33   作者:寻找无名的特质  
本文主要介绍了C# 执行Javascript脚本的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前一阵子使用C#编写SCXML状态机,需要解析EMCScript表达式,使用了Jint库(https://github.com/sebastienros/jint/),当时感觉与C#之间的数据转换不是很方便。这两天有时间又关注了一下,发现新的3.0版本有了很大改进,在这里介绍给大家,供参考。

首先要安装nuget包,注意增加prerelease选项,安装最新的版本,使用dotnet命令行指令如下:

dotnet add  package Jint --prerelease

直接计算表达式:

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引擎,在JS代码中调用这些函数:

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

也可以从CSharp 调用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));

可以引入CLI,从而在JS引擎中调用CLI中的函数:

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脚本的方法步骤的文章就介绍到这了,更多相关C# 执行Javascript脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#导入导出Excel数据的两种方法

    C#导入导出Excel数据的两种方法

    这篇文章主要为大家详细介绍了C#导入导出Excel数据的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Unity2021发布WebGL与网页交互问题的解决

    Unity2021发布WebGL与网页交互问题的解决

    本文主要介绍了Unity2021发布WebGL与网页交互问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 使用C#的aforge类库识别验证码实例

    使用C#的aforge类库识别验证码实例

    这篇文章主要介绍了使用C#的aforge类库识别验证码实例,aforge类库是一个非常强大的类库,包括计算机视觉与人工智能、图像处理、神经网络、遗传算法、机器学习、机器人等领域,需要的朋友可以参考下
    2014-08-08
  • C#中的DataTable查询实战教程

    C#中的DataTable查询实战教程

    这篇文章主要介绍了C#中的DataTable查询实战教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#设计模式实现之生成器模式和责任链模式

    C#设计模式实现之生成器模式和责任链模式

    学完设计模式之后,你就感觉它会慢慢地影响到你写代码的思维方式,下面这篇文章主要给大家介绍了关于C#设计模式实现之生成器模式和责任链模式的相关资料,需要的朋友可以参考下
    2021-08-08
  • c#远程html数据抓取实例分享

    c#远程html数据抓取实例分享

    这篇文章主要介绍了c#远程html数据抓取的方法,大家参考使用吧
    2013-12-12
  • C#多线程传递参数及任务用法示例

    C#多线程传递参数及任务用法示例

    这篇文章主要介绍了C#多线程传递参数及任务用法,结合简单实例形式分析了C#多线程的使用及相关的参数传递与任务创建等使用技巧,需要的朋友可以参考下
    2016-06-06
  • C#实现全局快捷键功能

    C#实现全局快捷键功能

    这篇文章介绍了C#实现全局快捷键功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#中参数个数可变的方法实例分析

    C#中参数个数可变的方法实例分析

    这篇文章主要介绍了C#中参数个数可变的方法,以一个简单实例分析了C#中参数个数可变的方法,主要是使用params关键字来实现的,是C#编程中比较实用的技巧,需要的朋友可以参考下
    2014-11-11
  • WPF实现钟表效果

    WPF实现钟表效果

    这篇文章主要为大家详细介绍了WPF实现钟表效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论