This article brings you a simple understanding of the nodejs module (with examples). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
This short article is used to quickly understand the nodejs module (that is, the CommonJS specification).
Essence
module.exports is used to expose a value. This value is an object by default and can also be overwritten as the original value.
Try to directly log the value of the module in a file, you can get:
{ id: '.', exports: {}, // 默认空对象 parent: null, filename: '/Users/a10.12/webpack-learning/src/module.js', loaded: false, children: [], paths: [ '...' ] }
You need to output what you need to output by modifying the exports attribute of the module, and require is used to import a Module, what is the value of module.exports, is what require gets.
Using
For example, if you have module.js
module.exports = { s: 2, }
, the same is true when the
let v = require('./module.js') console.log(v) // 输出为 { s: 2 }
original value is introduced in index.js
module.exports = 2 let v = require('./module.js') console.log(v) // 输出为 2
Because module.exports is an object by default, there is a natural way to write the object when exporting:
module.exports.s = 2
In this way, require also gets { s: 2 }.
Abbreviation
Probably the bosses felt that module.exports was too long to write, so they referenced exports to module.exports, so check whether the two things are equal. When, return true:
console.log(exports === module.exports) // true
With this feature, you can easily write like this when exporting an object:
exports.s = 2 let v = require('./module.js') console.log(v) // 输出为 2
But you can’t write like this:
// 这样 exports = 2 // 或这样 exports = { s: 2, } // 都是不可以的 let v = require('./module.js') console.log(v) // 输出为 {}
The reason As mentioned above, exports is originally just a reference to module.exports. You can add attributes to the referenced object, but once the reference of exports to module.exports is overridden by the above two methods, exports will be invalid.
Final reminder, if you don’t understand what I said before, you may need to deepen your understanding of ECMAScript reference values and original values...
This article has ended here, more For more exciting content, you can pay attention to thenode.js tutorial videocolumn on the PHP Chinese website! ! !
The above is the detailed content of A simple understanding of nodejs modules (with examples). For more information, please follow other related articles on the PHP Chinese website!