【发布时间】:2019-07-25 01:27:13
【问题描述】:
在 Node.js 中,每个模块都采用具有以下属性的对象格式:
Module {
id: '.',
exports: {},
parent: null,
filename: 'C:\\Users\\Node\\first-app\\app.js',
loaded: false,
children: [],
paths:
[ 'C:\\Users\\app\\node_modules',
'C:\\Users\\\\Node\\node_modules',
'C:\\Users\\node_modules',
'C:\\Users\\Documents\\node_modules',
'C:\\Users\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules' ] }
但是,每个模块也是这样的函数格式:
(function (exports, require, module, __filename, __dirname) {
//content of the function
})
函数将 export、require、module、__filename 和 __dirname 作为其参数。前者是键/值格式,后者是函数定义格式。是哪一个?
【问题讨论】:
-
"每个模块也是函数格式" - 嗯,不是吗?这只是一个初始化模块对象的 IIFE,仅此而已。该函数没有保留,它不代表模块。
-
我觉得函数总是存在的,因为只要出现语法错误,就会调用 Function.Module._load 和 Function.Module.runMain 之类的函数,不是吗?
-
该函数在模块加载时创建一次,然后调用它来评估模块源,但随后被丢弃。模块仅引用模块对象。
标签: javascript node.js oop object