跳到主要内容
CNode

提高node能力上限的办法

分享
Wwhiter001发布于 8 年前
021830

一,通过网络与第三方交互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

查看回复

回复 (0)

暂无回复,成为第一个参与讨论的人。

参与回复

登录后即可参与回复。登录