nodejs模块源码require问题

这是nodejs源码module.js的代码 https://github.com/nodejs/nod...
const NativeModule = require('native_module');
const util = require('util');
const internalModule = require('internal/module');
const vm = require('vm');
const assert = require('assert').ok;
const fs = require('fs');
const internalFS = require('internal/fs');

这是require的源码
Module.prototype.require = function(path) {
assert(path, 'missing path');
assert(typeof path === 'string', 'path must be a string');
return Module._load(path, this, / isMain / false);
};

module.js是实现require函数的,为什么第一行就调用了require,require函数不是还没实现吗?没想明白,感觉有点用结果去实现结果的意思,新人求指教。

阅读 3.1k
3 个回答

可能Module.prototype.require 是导入非核心模块的函数, 上面是用的是导入核心模块的require函数.

新手上路,请多包涵
  1. module.js文件被NativeModule.require('module');加载。同时将NativeModule.require作为实参传给require形参。所以const NativeModule = require('native_module');其实NativeModule.require。
  2. NativeModule.require导入原生模块时使用,非原生模块才使用Module.prototype.require。
  3. nodejs模块引入机制exports-module源码分析
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题