Modulare Entwicklung ist ein sehr wichtiges Konzept in der Programmierung Entwicklung. Die späteren Wartungskosten eines hervorragenden modularen Projekts können erheblich reduziert werden. In diesem Artikel werden hauptsächlich die Dinge zur JavaScriptmodularen-Entwicklung vorgestellt. Der Artikel erklärt den modularen Entwicklungsprozess intuitiver anhand einer Kurzgeschichte.
Little A ist Front-End-Ingenieur eines Unternehmerteams und verantwortlich für das Schreiben des Javascript-Programms des Projekts.
Basierend auf seiner eigenen Erfahrung extrahierte Little A zunächst einige häufig verwendete Funktionen und schrieb sie als Die Funktion wird in einer öffentlichen Datei base.js abgelegt:
var _ = { $: function(id) { return document.getElementById(id); }, getCookie: function(key) { ... }, setCookie: function(key, value) { ... } };
Little A fügt diese Funktionen in das _Objekt ein, um Konflikte durch zu viele globale Variablen zu verhindern. Er teilte anderen Teammitgliedern mit, dass jeder, der diese Funktionen nutzen möchte, einfach base.js importieren solle.
Little C ist ein Kollege von Little A. Er berichtete Little A, dass seine Seite eine Klassenbibliothek namens underscore.js eingeführt hat und diese Klassenbibliothek auch globale Variablen besetzen wird, this wird mit _ in base.js in Konflikt geraten. Little A dachte bei sich, dass underscore.js eine Bibliothek eines Drittanbieters ist und wahrscheinlich schwer zu ändern ist, aber base.js wurde auf vielen Seiten bereitgestellt und es ist unmöglich, es zu ändern. Am Ende hatte Little A keine andere Wahl, als die von underscore.js belegten globalen Variablen zu ändern.
Zu diesem Zeitpunkt entdeckte Little A, dass die Platzierung aller Funktionen in einem Namensraum die Wahrscheinlichkeit globaler Variablenkonflikte verringern kann, das Problem globaler Variablenkonflikte jedoch nicht löst.
Mit der Geschäftsentwicklung hat Xiao A eine Reihe von Funktionsbibliotheken und UI-Komponenten geschrieben, beispielsweise die Tab-Switching-Komponente tabs.js. Diese Komponente muss base.js aufrufen und Funktionen in util.js.
Eines Tages berichteten die neuen Kollegen Xiao D und Xiao A, dass sie tabs.js auf der Seite zitiert hatten, die Funktion jedoch nicht normal war. Little A entdeckte das Problem auf den ersten Blick. Es stellte sich heraus, dass Little D nicht wusste, dass tabs.js von base.js und util.js abhängt, und er fügte keine Verweise auf diese beiden Dateien hinzu. Also nahm er sofort Änderungen vor:
<script src="tabs.js"></script> <script src="base.js"></script> <script src="util.js"></script>
define(function(require, exports, module) { exports.$ = function(id) { return document.getElementById(id); }; exports.getCookie = function(key) { ... }; exports.setCookie = function(key, value) { ... }; });
define(function(require, exports, module) { var _ = require('base.js'), util = require('util.js'); var p_tabs = _.$('tabs'); // .... 其他代码 });
Variablenname wird vollständig vom Entwickler gesteuert. Wenn Ihnen _ nicht gefällt, können Sie auch base: <🎜 verwenden >
Sobald Sie util.js entfernen und ui.js hinzufügen möchten, müssen Sie nur tabs.js ändern:define(function(require, exports, module) { var base = require('base.js'), util = require('util.js'); var p_tabs = base.$('tabs'); // .... 其他代码 });
define(function(require, exports, module) { var base = require('base.js'), ui = require('ui.js'); var p_tabs = base.$('tabs'); // .... 其他代码 });
Derzeit gibt es viele Implementierungen von Loadern, wie zum Beispiel require.js und seajs. Die JRaiser-Klassenbibliothek verfügt außerdem über einen eigenen Loader.
Das obige ist der detaillierte Inhalt vonDetaillierte Analyse der modularen JavaScript-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!