在C#中调用js脚本,js脚本中引用了node.js模块。

有些时候,在C#中执行一些操作的时候,自己用c#写可能不是很方便,而通过js脚本去实现可以在性能和遍历性上面有很大的提升,我也是个菜鸟小白一枚。初次去实现在c#中调用js脚本时,也遇到了不少麻烦。在此稍微总结一下,可能不是很专业。

   如果是单纯的去执行一个js脚本,在js脚本中也没有涉及到require Node.js模块,那么相对来说在c#中调用js脚本去实现功能比较简单,不用去引用库什么的。例子如下:

 1、首先新建一个winForm测试项目,添加一个按钮。引入两个头using System.Reflection; using System.CodeDom.Compiler;

 2、接下来便可直接写代码了,贴图如下:

在C#中调用js脚本,js脚本中引用了node.js模块。

在按钮的响应事件中,首先初始化要传入的参数对象,接着调用自定义GetJsMethd()函数。接下来看看自定义的函数:

在C#中调用js脚本,js脚本中引用了node.js模块。

在C#中调用js脚本,js脚本中引用了node.js模块。

简单将自己操作的部分就是将js代码写入到StringBuilder中,然后通过Microsoft.JScript.JScriptCodeProvider()去解析js代码,其它的代码就照猫画虎就可以。

 若你的js脚本代码中引用了node.js模块,那你就需要用到Edge.Js库,在vs中引入该库,引入步骤:Tools-Nuget Package Manage - Manage Nuget package for solution在里面找到安装就好了,然后引入,在代码头部添加using EdgeJs;

 第二步将js脚本中引用的node.js模块文件放到项目的bin目录下。

 第三布可以写代码了:

 

定义一个函数必须步骤:

public static async void Start()

{

var func = Edge.Func(@“

const w = require(引入的模块名);

return function (data,callback){

//这边可以增加其他操作

callback(null,js函数要返回的值);//这句代码是必须要的,回传函数调用返回值。

}");

var b  = await func(传入函数的参数);

}

相信大家也可以看出来,在Func函数中是一段js代码的字符串。

接下来就是调用我们写的这个函数了,非常方便一句话:

Task.run((Action)start).wait();

完成。

也并不是很难主要用到了Edge.js库,有兴趣可以去微软官网文档看一看这个库的详解。

简单的分享就到此结束了。