Dieses Mal zeige ich Ihnen, wie Sie Exporte und module.exports verwenden und welche Vorsichtsmaßnahmen bei der Verwendung von Exporten und module.exports gelten. Das Folgende ist ein praktischer Fall, schauen wir uns das an.
1. exports ist das Hilfsobjekt von module.exports. Wenn exports eine API für die Außenwelt bereitstellt, müssen Sie return verwenden, um das exports-Objekt
zurückzugeben 2. module.exports kann API auch direkt bereitstellen Referenz:https://github.com/seajs/seajs/issues/242
exportiert Objekt
exports ist ein Objekt, mit dem Modulschnittstellen zur Außenwelt bereitgestellt werden.define(function(require, exports) { // 对外提供 foo 属性 exports.foo = 'bar'; // 对外提供 doSomething 方法 exports.doSomething = function() {}; });
define(function(require) { // 通过 return 直接提供接口 return { foo: 'bar', doSomething: function() {} }; });
define({ foo: 'bar', doSomething: function() {} });
define(function(require, exports) { // 错误用法!!! exports = { foo: 'bar', doSomething: function() {} }; });
define(function(require, exports, module) { // 正确写法 module.exports = { foo: 'bar', doSomething: function() {} }; });
Tipp: exports ist nur ein Verweis auf module.exports. Wenn Exporte innerhalb der Fabrik neu zugewiesen werden, wird der Wert von module.exports nicht geändert. Daher ist die Zuweisung eines Werts zu Exports ungültig und kann nicht zum Ändern der Modulschnittstelle verwendet werden.
module.exports-Objekt
Die Schnittstelle, die das aktuelle Modul zur Außenwelt bereitstellt. Der an den Factory-define(function(require, exports, module) { // exports 是 module.exports 的一个引用 console.log(module.exports === exports); // true // 重新给 module.exports 赋值 module.exports = new SomeClass(); // exports 不再等于 module.exports console.log(module.exports === exports); // false });
Hinweis: Die Zuweisung zu module.exports muss synchron ausgeführt werden und kann nicht in der Callback-Funktion platziert werden. Folgendes wird nicht funktionieren:
// x.jsdefine(function(require, exports, module) { // 错误用法 setTimeout(function() { module.exports = { a: "hello" }; }, 0); });
// y.jsdefine(function(require, exports, module) { var x = require('./x'); // 无法立刻得到模块 x 的属性 a console.log(x.a); // undefined });
Probleme bei der Erkennung von Array-Änderungen in Vue
JS zeigt beim Hochladen von Dateien einen Fortschrittsbalken an
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Exporte und module.exports. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!