【Node】模块加载过程

来源:互联网 发布:apache 安装版 编辑:程序博客网 时间:2024/06/05 08:08

1、JS/JSON/Node模块

Module.runMain或Module.require

      (1)路径解析

                (1)内置JS模块:直接返回

                (2)构造查找路径

                             (1)模块名/绝对路径:parentPaths+globalPaths

                             (2)相对路径-无父模块:'.'.node_modulesPaths+'.'+globalPaths

                             (3)相对路径-有父模块:

                (3)查找模块路径(按照查找路径)

                             (1)

      (2)加载模块

                (1)cachedModule

                (2)内置JS模块 NativeModule.require

                (3)外部模块 module.load

                             (1)设置模块路径的node路径(node_modules)

                             (2)根据扩展名解析(.js/.json/.node)

                                         (1).js        readFileSync

                                                            Module._compile:封装->加载

                                         (2).json    JSON.parse

                                         (3).node  process.dlopen


Module.globalPaths:

      HOME/.node_libraries

      HOME/.node_modules

      NODE_PATH

      NODE_BIN/../../lib/node


Module.paths:

      /..../..../..../node_modules

      /..../..../node_modules

      /..../node_modules

      /node_modules


2、C++模块

process.binding(modname)->Binding->binding_cache->get_builtin_module->initialize



0 0
原创粉丝点击