zoukankan      html  css  js  c++  java
  • 如何在.Net Core调用NodeJs


    概述

    目前.net core正处于飞速的成长期,虽然前途光明不容置疑,但是就生态而言还是比不上其他一些语种的大环境,那如果能够在.net core下调用其他语种的库加以利用那就能更好的发挥我们手头的.net core 而不至于因为库短缺而尴尬

    NodeJs出生名门,依靠其异步IO广泛用于I/O密集的场景,而且世界上的javascript开发者也是多如牛毛!自然Nodejs的盛起也给他们的代码生活带来了前所未有的体验,同样JS的库也是五花八门一度占据了github的排行榜。

    如果.net core能利用 nodejs的庞大生态库是不是很nice?

    Microsoft.AspNetCore.NodeServices库

    其实微软爸爸提供了Microsoft.AspNetCore.NodeServices这个库,专门用来调用nodejs服务

    要使用NodeJs服务,首先需要Microsoft.AspNetCore.NodeServices在项目文件中包含包的引用。您可以使用dotnet add package Microsoft.AspNetCore.NodeServices命令执行此操作。

    然后,您需要将Node Services中间件利用ConfigureServices()添加到请求管道。

    现在,您可以利用INodeServices在应用程序中获取实例。并利用它调用在Node环境中运行的JavaScript的API。您可以使用FromServicesattribute在您的action方法中获取`INodeServices'的实例

    实例

    这里我贴一个实例供参考

    新建aspnet core站点

    利用dotnet command建立站点

    dotnet new mvc

    添加nuget包

    dotnet add package Microsoft.AspNetCore.NodeServices

    建立node环境,此处示例用于扫描wifi环境

    在站点根目录下利用npm建立环境

    npm init -y
    npm install node-wifi --save-dev

    建立nodejs的程序文件 index.js

    var wifi = require("node-wifi");
    
    module.exports = function(callback) {
        wifi.init({
            iface: null // network interface, choose a random wifi interface if set to null
        });
        // Scan networks
        wifi.scan(
        ).then(function (networks) { callback(null,networks)});
    };

    设置js文件为始终复制

    注入配置

       public void ConfigureServices(IServiceCollection services)
            {
                services.Configure<CookiePolicyOptions>(options =>
                {
                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                });
                services.AddNodeServices();
    
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            }

    在控制器-Action处调用

    public async Task<IActionResult> Wifi([FromServices] INodeServices nodeServices)
    {
    var result=await nodeServices.InvokeAsync<dynamic>("Index.js");
    return new JsonResult(result);
    }
    返回情况

  • 相关阅读:
    [require-js]向下滑动ajax加载的javascript实现
    Date的ToString方法
    GMAT语法总结
    流程控制语句:if、if else、if else if、嵌套if
    Random类
    Scanner类
    java运算符
    java数据类型转换
    mysql查询语句
    mysql常用语句
  • 原文地址:https://www.cnblogs.com/linkanyway/p/Net-Core-invoke-node-js.html
Copyright © 2011-2022 走看看