概述 Microsoft.AspNetCore.NodeServices庫 實例 新建aspnet core站點 添加nuget包 建立node環境,此處示例用於掃描wifi環境 建立nodejs的程式文件 index.js 設置js文件為始終複製 註入配置 在控制器-Action處調用 返回情況 ...
概述
目前.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 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); }
返回情況