Solo  当前访客:1 开始使用

小水的博客

一个无聊的精彩人生

在.Net Core中调用NodeJs

2019-07-04 18:36:07 loogn
0  评论    355  浏览

微软经提供了一个Microsoft.AspNetCore.NodeServices的类库可以方便的调用宿主nodejs,在asp.netcore中,已经包含在app元包中了,所以我们可以直接使用。

注入NodeServices

和其他的服务注册一样,在Startup.cs的ConfigureServices方法中添加服务:

            services.AddNodeServices(options =>
            {
                options.LaunchWithDebugging = false;
                options.ProjectPath = "/Users/loogn/scripts";
            });

在添加服务的时候可以设置js的文件目录,也就是nodejs项目的目录。

编写js文件

在porjectPath所指的目录中添加hello.js:

module.exports = function (callback, name) {
    var msg = 'Hello,' + name;
    callback(null, msg);
};

在controller中调用

        public async Task<IActionResult> Index([FromServices] INodeServices nodeServices)
        {
            var msg = await nodeServices.InvokeAsync<string>("hello.js", "loogn");
            return Content(msg);
        }

说明:

在写js的时候,第一个参数callback用于吧结果返回给dotnet,callback的第一个参数是错误信息,第二个参数是返回值,如果错误信息不为null的话,dotnet接收到返回值的时候会抛出异常。
INodeServices还有几个重载,比如可以使用模块+方法名的方式调用,那么js就要导出多个方法了:

module.exports.f1=function (callback) {
    //f1 
};

module.exports.f2=function (callback) {
    //f2
};

这里的node项目和一般的node项目是一样的,可以使用npm安装第三方包,然后require到自己的js模块中使用,所以就给我们提供了很大的想象空间。


标题:在.Net Core中调用NodeJs
作者:loogn
地址:http://www.loogn.net/articles/2019/07/04/1562236567051.html

,

发表评论




一切有为法,如梦幻泡影;
如露亦如电。应作如是观!

目录

TOP