美文网首页
Node.js 技术架构

Node.js 技术架构

作者: littleyu | 来源:发表于2020-06-07 22:29 被阅读0次

    Node.js 是什么

    • 是一个平台
      1.他将多种技术组合在一起
      2.让JavaScript也能调用系统接口、开发后端应用

    • Node.js 用到了那些技术
      1.V8引擎
      2.libuv
      3.C/C++实现的 c-ares(解析dns)、http-parser(解析http)、OpenSSL(来做https)、zlib(来做加密)等库

    技术架构

    如果要看源码,推荐看0.10版本
    • 什么是bindings
      1.js不能直接对系统进行操作
      2.node.js 用 C++ 进行封装,封装的文件叫做 xxx_bindings.cpp
      3.在用node.js提供的编译工具将其编译成 .node 文件
      4.这样js就能直接 require 这个文件,
      5.中间的桥梁就叫做binding,因为很多桥梁,所以就叫bindings

    JS 调用C++代码 http://nodejs.cn/api/addons.html#addons_function_arguments
    C++ 调用JS 回调 http://nodejs.cn/api/addons.html#addons_callbacks

    Node.js 的工作流程

    libuv 是什么

    • 背景
      1.FreeBSD系统上面有kqueue
      2.Linux系统上有epoll
      3.windows系统上有IOCP
      4.于是Ryan 就写了一个跨平台的异步 I/O库--libuv
      5.libuv会根据系统自动选择合适的方案
    • 功能
      可以用于 TCP/UDP/DNS/文件等的异步操作

    V8

    - 功能

    1. 将 JS 源代码变成本地代码并执行
    2. 维护调用栈,确保 JS 函数的执行顺序
    3. 内存管理,为所有对象分配内存
    4. 垃圾回收,重复利用无用的内存
    5. 实现 JS 的标准库

    - 注意

    1. V8 不提供DOM API
    2. V8 执行 JS 是单线程的
    3. 可以开启两个线程分别执行 JS
    4. V8 本身是包含多个线程的,如垃圾回收为单独线程
    5. 自带 event loop 但 Node.js 基于 libuv自己做了一个

    API

    相关文章

      网友评论

          本文标题:Node.js 技术架构

          本文链接:https://www.haomeiwen.com/subject/rqlfactx.html