Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Exporte in js
Dieser Artikel teilt Ihnen hauptsächlich die detaillierte Erklärung des Exports in js mit, hauptsächlich in Form von Code. Ich hoffe, dass er allen helfen kann.
Verwandte Videoempfehlungen: 1.JavaScript Quick Start_Jade Girl Heart Sutra Series
Verwandte manuelle Empfehlungen: 1.JavaScript Chinesisches Referenzhandbuch
Schreiben 1
exports.hello = function(){ console.log(‘world’); }
Schreiben 2
var f = { hello : function(){ console.log(‘world’); } } module.exports = f;
Angenommen, der Dateiname des von uns geschriebenen Moduls lautet hello.js, führen Sie den folgenden Code aus
var h = require(‘hello’); h.hello();
Für die beiden oben genannten Schreibmethoden ist das Ergebnis nach der Ausführung dieses Codes dasselbe.
module.exports:
Zum Beispiel:
1,
//a.js module.exports = ['aaa',18] //b.js var a= require('a')console.log(a[1]) //输出18
2,
//a.js module.exports =function(){ this.show=function(){ console.log('hahah~'); } } //b.js var a= require('a'); var obj = new a();obj .show();//输出hahah~ module.exports
Mein Verständnis ist: Sie weisen module.exports etwas zu und Sie erhalten etwas, nachdem require
exports : //a.js exports.show =function(){ console.log('hahah~'); } //b.js var a= require('a'); a.show();//输出hahah~
exports bereits ein Objekt ist. Sie können diesem Objekt Attribute hinzufügen , und nach „require“ erhalten Sie das Exportobjekt.
Aber Sie können Exporten kein neues Objekt zuweisen, wie z. B. exports={}
Es ist auch zu beachten, dass alle Exportoperationen ungültig sind, wenn module.exports bereits über Inhalte verfügt . Denken Sie daran
Lassen Sie uns noch einmal über den Prototyp sprechen. Er dient dazu, dem Prototyp Attribute hinzuzufügen. Lassen Sie mich Ihnen ein weiteres Beispiel geben.
//a.js module.exports =function(){ } module.exports.prototype.show = function(){ console.log('hahah~'); } //b.js var a= require('a'); var obj = new a() obj.show()//输出hahah~Lassen Sie uns abschließend über Klassenmethoden sprechen. Wenn es um Klassen geht, müssen module.exports verwendet werden. Kastanien sind hier1. Jede node.js-Ausführungsdatei erstellt automatisch ein Modulobjekt erstellt Ein Attribut namens exports, der initialisierte Wert ist {}
//a.js module.exports =function(){ } module.exports.show = function(){ console.log('hahah~'); } //b.js var a= require('a'); a.show()//输出hahah~ ##module.exports与exports的区别
Wenn module.exports geändert wird, werden die Exporte nicht geändert, und wenn das Modul exportiert wird, ist die tatsächlich exportierte Ausführung module.exports, nicht exports
module.exports = {}; Node.js为了方便地导出功能函数,node.js会自动地实现以下这个语句 foo.js exports.a = function(){ console.log('a') } exports.a = 1 test.js var x = require('./foo'); console.log(x.a)Sehen Sie sich das folgende Beispiel an Exporte werden ungültig, nachdem module.exports geändert wurde.
Fühlen Sie sich ein wenig aufgeklärt? Hier sind einige häufig vorkommende Verwendungsmethoden in Open-Source-Modulen.
foo.js exports.a = function(){ console.log('a') } module.exports = {a: 2} exports.a = 1 test.js var x = require('./foo'); console.log(x.a) result: 2Es gibt ein Sprichwort in JavaScript, dass Funktion ein Objekt ist, Ansicht ein Objekt ist, module.export =View, was dem Exportieren des gesamten Ansichtsobjekts entspricht.
Wenn ein externes Modul es aufruft, kann es alle Methoden von View aufrufen. Es ist jedoch zu beachten, dass nur statische Methoden von View aufgerufen werden können. Vom Prototyp erstellte Methoden sind private Methoden von View.
##module.exports = View function View(name, options) { options = options || {}; this.name = name; this.root = options.root; var engines = options.engines; this.defaultEngine = options.defaultEngine; var ext = this.ext = extname(name); if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); this.path = this.lookup(name); } module.exports = View;Wenn wir das Prinzip verstehen, ist es nicht schwer zu verstehen, dass diese Schreibweise etwas überflüssig ist. Tatsächlich dient sie dazu, sicherzustellen, dass die Initialisierungsumgebung des Modul ist sauber. Gleichzeitig ist es für uns auch praktisch, auch nach dem Ändern des Objekts, auf das module.exports verweist, die Eigenschaften von exports
foo.js function View(){ } View.prototype.test = function(){ console.log('test') } View.test1 = function(){ console.log('test1') } module.exports = View test.js var x = require('./foo'); console.log(x) //{ [Function: View] test1: [Function] } console.log(x.test) //undefined console.log(x.test1) //[Function] x.test1() //test1 ##var app = exports = module.exports = {};beispielsweise in welchem Modul verwenden zu können. exports = createApplication ändert module.exports, let Exports ist ungültig. Verwenden Sie exports = module.exports, um seine ursprünglichen Eigenschaften wiederherzustellen.
##exports.init= function(){}
exports = module.exports = createApplication; /** * Expose mime. */ exports.mime = connect.mime;Dies ist die einfachste und direkt exportierte Modul-Init-Methode. ##var mongoose = module.exports = exports = new Mongoose;Es hat mehrere Funktionen in einer, aber basierend auf der obigen Beschreibung sollten Sie keine Antwort bekommen.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Exporte in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!