Heim > Artikel > Web-Frontend > So verwenden Sie Exporte und module.exports
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() {}; });Neben dem Hinzufügen von Mitgliedern zum Exportobjekt können Sie mit return auch direkt Schnittstellen zur Außenwelt bereitstellen.
define(function(require) { // 通过 return 直接提供接口 return { foo: 'bar', doSomething: function() {} }; });Wenn die Return-Anweisung der einzige Code im Modul ist, kann sie auch wie folgt vereinfacht werden:
define({ foo: 'bar', doSomething: function() {} });Das obige Format eignet sich besonders zur Definition von JSONP-Modulen. Besonderer Hinweis: Die folgende Schreibweise ist falsch!
define(function(require, exports) { // 错误用法!!! exports = { foo: 'bar', doSomething: function() {} }; });Die richtige Schreibweise besteht darin, return zu verwenden oder module.exports einen Wert zuzuweisen:
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); });In y.js heißt das obige x.js:
// y.jsdefine(function(require, exports, module) { var x = require('./x'); // 无法立刻得到模块 x 的属性 a console.log(x.a); // undefined });Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln die chinesische PHP-Website! Empfohlene Lektüre:
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!