Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie Exporte und module.exports

So verwenden Sie Exporte und module.exports

php中世界最好的语言
php中世界最好的语言Original
2018-04-17 15:44:217505Durchsuche

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-

-Konstruktor übergebene Exportparameter ist ein Verweis auf das module.exports-Objekt. Die Bereitstellung von Schnittstellen nur über den Exportparameter kann manchmal nicht alle Anforderungen von Entwicklern erfüllen. Wenn die Schnittstelle eines Moduls beispielsweise eine Instanz einer bestimmten Klasse ist, muss sie über module.exports implementiert werden:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn