Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung von Exports und module.exports von node.js und ES6
Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Verwendung von node.js und ES6-Exporten und module.exports geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung von node.js und ES6? exports und module.exports? Das Folgende ist ein praktischer Fall, schauen wir uns das an.
Ah Xi, mein Kopf ist so groß....
Da wir nun fertig sind, setzen wir uns zusammen und klären den Anwendungsbereich.
require: Import wird sowohl von node als auch von es6 unterstützt
unterstützt Von diesem Moment an hatte ich das Gefühl, es sei an der Zeit, die Beziehung zwischen ihnen zu klären, sonst würde ich vor Verwirrung sterben. Es gibt nicht viel zu sagen, fangen wir an! !
Knotenmodul
Das Modulsystem in Node folgt der CommonJS-Spezifikation.
Dann stellt sich wieder die Frage: Was ist die CommonJS-Spezifikation?
Da js in der Vergangenheit relativ verwirrend war, schrieb jeder seinen eigenen Code und es gab kein Konzept für ein Modul, und diese Spezifikation ist eigentlich eine Definition eines Moduls.
Die von CommonJS definierten Module sind unterteilt in: Modulidentifikation (Modul), Moduldefinition (Exporte), Modulreferenz (erforderlich)
Erklären Sie zunächst Exporte und module.exports
Wenn ein Knoten eine Datei ausführt, wird in der Datei ein Export- und Modul-Objekt ,
generiert. Und das Modul verfügt über ein Exportattribut. Die Beziehung zwischen ihnen ist wie unten gezeigt. Sie verweisen alle auf einen {}-Speicherbereich.
exports = module.exports = {};
Werfen wir also einen Blick auf den Code.
//utils.js let a = 100; console.log(module.exports); //能打印出结果为:{} console.log(exports); //能打印出结果为:{} exports.a = 200; //这里辛苦劳作帮 module.exports 的内容给改成 {a : 200} exports = '指向其他内存区'; //这里把exports的指向指走 //test.js var a = require('/utils'); console.log(a) // 打印为 {a : 200}
Wie aus dem Obigen ersichtlich ist, handelt es sich bei dem von require exportierten Inhalt tatsächlich um den Inhalt des Speicherblocks, auf den module.exports verweist, und nicht um exports.
Kurz gesagt besteht der Unterschied zwischen ihnen darin, dass exports nur ein Verweis auf module.exports ist, der verwendet wird, um letzteres beim Hinzufügen von Inhalten zu unterstützen.
Um es im Klartext auszudrücken: Exporte unterstützen module.exports nur bei der Verarbeitung der Daten im Speicher. Am Ende bin ich immer noch erschöpft von module.exports . Es ist wirklich harte Arbeit.
Wenn Sie zum Verständnis das Konzept des Speicherblocks verwenden, wird es tatsächlich sehr klar.
Um Verwirrung zu vermeiden, versuchen Sie dann, module.exports zum Exportieren und dann require zum Importieren zu verwenden.
Modulexport und -import in ES
Ehrlich gesagt sind die Module in es sehr klar. Es gibt jedoch einige Details, die geklärt werden müssen.
Beispielsweise sind „export“ und „export default“ und beim Importieren „import a from ..“, „import {a} from ..“ etwas verwirrend, also beginnen wir damit, sie zu klären.
Export und Exportstandard
Lassen Sie uns zunächst über diese beiden Exporte sprechen. Lassen Sie uns dann über ihre Unterschiede sprechen
Sowohl Export als auch Export Standard können zum Exportieren von Konstanten, Funktionen, Dateien, Modulen usw. verwendet werden.
Schauen wir uns den Code an, um ihn zu überprüfen
testEs6Export.js
'use strict' //导出变量 export const a = '100'; //导出方法 export const dogSay = function(){ console.log('wang wang'); } //导出方法第二种 function catSay(){ console.log('miao miao'); } export { catSay }; //export default导出 const m = 100; export default m; //export defult const m = 100;// 这里不能写这种格式。
index.js
//index.js 'use strict' var express = require('express'); var router = express.Router(); import { dogSay, catSay } from './testEs6Export'; //导出了 export 方法 import m from './testEs6Export'; //导出了 export default import * as testModule from './testEs6Export'; //as 集合成对象导出 /* GET home page. */ router.get('/', function(req, res, next) { dogSay(); catSay(); console.log(m); testModule.dogSay(); console.log(testModule.m); // undefined , 因为 as 导出是 把 零散的 export 聚集在一起作为一个对象,而export default 是导出为 default属性。 console.log(testModule.default); // 100 res.send('恭喜你,成功验证'); }); module.exports = router;
Wie oben zu sehen ist, fühlt sich das Modulsystem von ES6 sehr flexibel an.
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 auf der chinesischen PHP-Website!
Empfohlene Lektüre:
So erhalten Sie das Berührungsereignis Länge der Gleitstrecke
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Exports und module.exports von node.js und ES6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!