Node API for .NET 使用教程
项目介绍
Node API for .NET 是一个开源项目,旨在实现 .NET 和 JavaScript 在同一进程中的高级互操作性。该项目允许在 JavaScript 应用程序中加载 .NET 程序集并调用 .NET API,同时也支持在 .NET 应用程序中加载 JavaScript 包并调用 JS API。该互操作性具有高性能,并支持 TypeScript 类型定义生成、异步(任务/承诺)、流等功能。它使用 Node API,因此兼容任何 Node.js 版本(无需重新编译)或其他支持 Node API 的 JavaScript 运行时。
项目快速启动
安装
首先,克隆项目仓库:
git clone https://github.com/microsoft/node-api-dotnet.git
进入项目目录:
cd node-api-dotnet
示例代码
以下是一个简单的示例,展示如何在 JavaScript 中调用 .NET API:
// JavaScript
const Console = require('node-api-dotnet').System.Console;
Console.WriteLine('Hello from .NET'); // JS 调用 .NET 控制台 API
以下是一个简单的示例,展示如何在 .NET 中调用 JavaScript API:
// C#
using NodeApi;
interface IConsole
{
void Log(string message);
}
var nodejs = new NodejsPlatform(libnodePath).CreateEnvironment();
nodejs.Run(() =>
{
var console = nodejs.Import<IConsole>("global", "console");
console.Log("Hello from JS"); // C# 调用 JS 控制台 API
});
应用案例和最佳实践
案例一:在 Node.js 中使用 .NET 库
假设我们有一个 .NET 库 MyMathLib
,其中包含一个方法 Add
,我们希望在 Node.js 中使用这个方法:
// MyMathLib.cs
namespace MyMathLib
{
public class Math
{
public static int Add(int a, int b)
{
return a + b;
}
}
}
在 Node.js 中调用这个方法:
// JavaScript
const MyMathLib = require('node-api-dotnet').MyMathLib;
const result = MyMathLib.Math.Add(1, 2);
console.log(result); // 输出: 3
案例二:在 .NET 中使用 Node.js 模块
假设我们有一个 Node.js 模块 my-node-module
,其中包含一个方法 sayHello
,我们希望在 .NET 中使用这个方法:
// my-node-module.js
module.exports.sayHello = function(name) {
return `Hello, ${name}!`;
};
在 .NET 中调用这个方法:
// C#
using NodeApi;
interface INodeModule
{
string sayHello(string name);
}
var nodejs = new NodejsPlatform(libnodePath).CreateEnvironment();
nodejs.Run(() =>
{
var myModule = nodejs.Import<INodeModule>("my-node-module");
var message = myModule.sayHello("World");
Console.WriteLine(message); // 输出: Hello, World!
});
典型生态项目
1. Blazor
Blazor 是一个使用 .NET 构建客户端 Web 应用程序的框架,它允许开发者使用 C# 而不是 JavaScript 来构建交互式的 Web UI。Node API for .NET 可以与 Blazor 结合使用,实现更高级的互操作性。
2. Electron.NET
Electron.NET 是一个允许使用 .NET 和 Electron 构建跨平台桌面应用程序的框架。通过 Node API for .NET,可以在 Electron 应用程序中更方便地调用 .NET API。
3. React Native for Windows
React Native for Windows 允许开发者使用 React 构建 Windows 应用程序。Node API for .NET 可以与 React Native for Windows 结合使用,实现 JavaScript 和 .NET 之间的无缝互操作。
通过这些生态项目,Node API for .NET 可以扩展其应用场景,为开发者提供更多的可能性。