Heim Web-Frontend js-Tutorial Modulares JavaScript-Denken

Modulares JavaScript-Denken

Nov 04, 2016 pm 04:30 PM
javascript

Durch das eingehende Studium und die Verwendung von JS habe ich nach und nach zwei Probleme entdeckt:

(1) Die Wiederverwendbarkeit des JS-Codes, den ich zuvor geschrieben habe, ist sehr gering

(2) Die Funktionen sind verstreut, und zum Beispiel möchte ich das aktuelle Datum erhalten, und ich möchte auch das aktuelle Datum plus 1 erhalten, was das morgige Datum ist. Ich habe es vorher als zwei unabhängige und nicht verwandte Funktionen geschrieben, aber jetzt denke ich Darüber hinaus können sie tatsächlich als ein Datumsobjekt klassifiziert werden. Wäre es nicht besser, sie als zwei Methoden an ein Objekt zu binden?

1. Zuerst müssen wir verstehen, warum wir Modularität verwenden müssen?

Die Funktionen sind alle darauf ausgelegt, Bedürfnisse zu lösen. Zu den Vorteilen, die die Modularisierung mit sich bringen kann, gehören:

(1) Wartbarkeit. Wenn wir beispielsweise den Code, der keine Modularisierung verwendet, mit Öl und Wasser vergleichen, ist der Code nach der Modularisierung wie die Schichtung von Öl und Wasser. Ein solcher Code weist eine klare Hierarchie auf klare funktionen. Es scheint angemessen, das Phänomen der unvermeidlichen Schichtung von Öl und Wasser zu verwenden, um auf den allgemeinen Trend der JS-Modularisierung zu verweisen.

(2) Namensraum. Hier müssen wir über den Umfang von JS sprechen. Es geht wieder um die Scope-Kette. Wenn Sie mit Bereichsketten nicht vertraut sind, können Sie sich meinen anderen Artikel „Grundlegendes zu Bereichsketten in JavaScript“ ansehen. In JS werden Funktionen zur Unterscheidung von Bereichen verwendet. Jede Funktion hat eine Bereichskette. Wenn wir den gesamten Code zusammenfügen, ist eine kleine Anzahl von Codezeilen in Ordnung, aber wenn es zu viele Codezeilen gibt, führt dies unweigerlich zu einer „Namespace-Verschmutzung“.

(3) Wiederverwendbarkeit. Wenn wir den Namespace verstehen, können wir den Modulcode mithilfe des Namespace kapseln, sodass wir bei Bedarf direkt auf dieses Funktionsmodul verweisen können.

Verwenden Sie als Nächstes meinen JS-Codepfad, um zu demonstrieren, wie der Code modularisiert wird:

(1) Ursprüngliche Ära: Geben Sie alle zu verwendenden JS ein. Der Code ist gestapelt in einem Paar <script>-Tags auf der Seite. </script>

 function f1(){
      //函数体
 }
 function f2(){
      //函数体
 }
Nach dem Login kopieren

Nachteile dieser Schreibweise: Der Code ist grundsätzlich nicht wiederverwendbar und es besteht möglicherweise das Problem, dass er zu eng in die Seite integriert ist. Sie müssen auch verschiedene Aspekte des Umfangs berücksichtigen.

(2) Antike: Die Idee ist, das Modul als Objekt zu schreiben. Beispielsweise möchten wir eine Funktion schreiben, die die Seitenmusikwiedergabe, den Stopp, das nächste Lied und das vorherige Lied steuern kann. Sie können ein MusicPlayer-Objekt kapseln

// 将基本的方法封装起来
            var musicPlayer = {

                var musicDom = null, //播放器对象
                var musicList = [], //存放歌曲列表

                // 初始化音乐播放器
                var init =  function(){
                    
                },

                // 添加一首歌曲
                var add = function(src){
                   
                },

                // 根据数组下标决定播放哪一首,索引index从0开始
                var play = function(index){
                    
                },

                // 暂停播放
                var stop = function(){
                    
                },

                // 下一首
                var next = function(){

                },

                // 上一首
                var prev = function(){

                }
            };
Nach dem Login kopieren

Zu diesem Zeitpunkt kann es als Modul bezeichnet werden. Im globalen Bereich binden wir nur ein MusicPlayer-Objekt an das Fensterobjekt und können dann MusicPlayer plus verwenden '.' um die darin enthaltenen Methoden aufzurufen. Zum Beispiel „musicPlayer.init();“

Diese Methode hat auch einen Nachteil: Wir können den Inhalt, den wir verfügbar machen möchten, nicht steuern und die internen Methoden und Variablen des musicPlayer-Objekts können extern neu geschrieben werden .

(3) Modern. Einschließlich IIFE (sofortige Ausführungsfunktion), Verstärkungsmodus, breiter Verstärkungsmodus, Eingabe globaler Variablen

 

Mit Ausnahme von IIFE bin ich noch nie mit den anderen drei Typen in Kontakt gekommen Sprechen Sie hier über mein Verständnis.

-IIFE (Immediately-Invoked Function Expression)

// 创建一个立即执行的匿名函数
// 该函数返回一个对象,包含你要暴露的属性
// 如下代码如果不使用立即执行函数,就会多一个属性i
// 如果有了属性i,我们就能调用counter.i改变i的值
// 对我们来说这种不确定的因素越少越好

var counter = (function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
}());

// counter其实是一个对象

counter.get(); // 0
counter.set( 3 );
counter.increment(); // 4
counter.increment(); // 5

counter.i; // undefined i并不是counter的属性
i; // ReferenceError: i is not defined (函数内部的是局部变量)
Nach dem Login kopieren

Wie aus dem obigen Code ersichtlich ist, gibt es im Zähler kein i-Attribut, sondern nur eines Offengelegte Inhalte zurückgeben. Auf diese Weise haben wir mich privat gemacht.

- Verstärkungsmodus

Mein Verständnis des Verstärkungsmodus besteht darin, die ursprüngliche Funktion als Parameter an IIFE zu übergeben und dann der ursprünglichen Funktion eine neue Erweiterungsmethode hinzuzufügen , Die erweiterte Funktion kehrt zurück. Dadurch wird die „Verstärkung“ der ursprünglichen Funktion erreicht.

var module1 = (function (mod){
   mod.m3 = function () {
    //...
   };
   return mod;
 })(module1);
Nach dem Login kopieren

In diesem Beispiel wird eine neue Methode m3 zu Modul1 hinzugefügt und zurückgegeben.

- Großer Vergrößerungsmodus

Der breite Vergrößerungsmodus fügt eine neue Funktion basierend auf dem Vergrößerungsmodus hinzu: Die Parameter von IIFE können leere Objekte sein.

 var module1 = ( function (mod){
   //...
   return mod;
 })(window.module1 || {});
Nach dem Login kopieren

IIFE-Parameter übergeben: Wenn window.module1 definiert ist, übergeben Sie den Parameter, wenn er undefiniert ist, übergeben Sie ein leeres Objekt.

- Geben Sie globale Variablen ein

Wenn wir globale Variablen innerhalb von IIFE verwenden möchten, ist es am besten, die globalen Variablen über Parameter zu übergeben.

 var module1 = (function ($, YAHOO) {
  //...
 })(jQuery, YAHOO);
Nach dem Login kopieren

Der oben gezeigte Code übergibt die globalen Variablen der jQuery- und YUI-Bibliotheken als Parameter an module1.


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems Dec 17, 2023 am 08:41 AM

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann

See all articles