概念
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)
实现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调试
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…