node.js开发介绍

6 阅读1分钟

概念

Node.js, 简称Node,可以使js运行在服务器端的平台

特点:非阻塞IO、事件驱动、单线程(通过事件和回调支持高并发)
应用场合:
1 REST API
2 统一Web应用的UI层
3 准实时系统
4 游戏服务器
5 微服务结构
不适合node.js的场合:
1 数据加密、解密
2 数据压缩、解压
非CPU密集型任务

1 Addons 插件、扩展,本质是C++动态链接库,提供js和C++ libs间的接口
2 动态链接库,运行时动态加载的库,例如.so文件,.dll文件
3 静态链接库, 编译时链接到可执行文件中

Node.js架构

1 V8,Node.js依赖的JavaScript引擎(C++),Google维护 2 libuv,为Node.js量身打造的跨平台异步I/O库(C),提供非阻塞的文件系统、DNS、网络、子进程、管道、信号、轮询和流式处理机制 3 core models,核心模块

  • 文件系统相关,fs模块
  • HTTP通信,http模块
  • 操作系统,os模块
  • 多进程,child_process、cluster模块 4 C++ Bindings 底层模块为了更好的性能,采用 C/C++实现,而上层的 JavaScript 代码无法直接与 C/C++通信,因而需要一个桥梁(即 Binding)

www.ayqy.net/blog/node-j…

实现Addons方式

1 直接手搓,即基于 Node、V8、libuv 提供的 C++ API 直接写 2 基于nan 3 基于N-API(推荐),Node.js 提供的原生扩展支持 API,与下层的 JS 运行时(V8)完全独立,保证ABI跨 Node 版本保持不变,

Hello World demo www.ayqy.net/blog/node-j…

nodejs调试

segmentfault.com/a/119000004…

C++ 扩展

Node-API

ABI Stability ABI稳定性 Node-API是C API,node-addon-api是C++封装模块,支持C++

1 building C/C++工具链 windows开发

npm install --global windows-build-tools

Tensorflow Js

discuss.tensorflow.org/t/discuss-p…

Google AI for JavaScript developers with TensorFlow.js learning.edx.org/course/cour…

WebAssembly vs Napi

www.reddit.com/r/rust/comm…

juejin.cn/post/684490…