一,通过网络与第三方交互net
二,通过子进程child_process
可用方法分别是exec,spawn,fork,其中exec是对spawn的封装
require('child_process').exec('grep -nr somestring ./');
三,引用编译成的二进制链接库,lib/dll(windows下)
通过node-ffi引用 支持得语言c/c++,rust,golang windows下支持两套c环境,msvs和gnu; golang支持得好像只有gnu,通过调用CShare,go-cshared-examples c#在windows下编译成的dll不算;
四, npm i edge-js
Run .NET and Node.js code in-process on Windows, MacOS, and Linux 利用.NET得CLR跨语言集成;支持多种脚本 异步调用 默认依赖edge-cs,与c#交互,可以调用C#编译成得dll,或者cs文件;或者string类型的c#代码; windows上默认支持的是c#5语法,即.NET4.5 也已支持dotnet core; c#7语法,demo地址:edge-js-quick-start; dotnet core可以打包运行时,跨平台交叉编译 同时可以扩展支持python,F#,powershell语言的直接交互;只需要额外安装依赖edge-py,edge-fs,edge-ps
五,引用编译成的.node
1,nan接口;每次node升级版本,插件也要跟着再编译; 2,NAPI; 版本8是推出得新接口,目前状态:Stability: 2 - Stable
- 以C风格提供稳定ABI接口
- 消除nodejs版本差异
因为可以从c代码里调用go函数,那么用go编写.node扩展也是可能的;Call Go functions from C C/CPP npm install -g node-gyp , NAPI rust npm i -g neon-cli demos地址:examples
一个对node用户非常友好的rust入门:rust-for-node-developers
提高js/ts自身的执行效率(不一定)
把写的TypScript编译成WebAssembly后再引入代码里; 工具:AssemblyScript; 运行前把项目给编译成二进制 工具:pkg