Inhaltsverzeichnis
Funktionseinführung
Effektvorschau
Entwicklungsprozess
Endlich
Heim Web-Frontend js-Tutorial Entwickeln Sie eine vollständige JavaScript-Komponente

Entwickeln Sie eine vollständige JavaScript-Komponente

Feb 25, 2017 pm 01:27 PM

Als Entwickler sollte jeder wissen, dass es im Browser einige integrierte Steuerelemente gibt: Warnung, Bestätigung usw. Allerdings haben diese Steuerelemente je nach Browserhersteller normalerweise unterschiedliche Formen und die visuellen Effekte sind oft nicht gut um den Anforderungen des UI-Designers gerecht zu werden. Noch wichtiger ist, dass sich der Stil solcher integrierten Steuerelemente nur schwer mit den Designstilen verschiedener Internetprodukte mit sehr unterschiedlichen Stilen vereinen lässt. Daher entwickeln hervorragende Frontend-Entwickler ihre eigenen personalisierten Steuerelemente, um diese integrierten Browser-Steuerelemente zu ersetzen. Natürlich gibt es im Internet bereits unzählige hervorragende Komponenten dieser Art. Der Zweck des Schreibens dieses Artikels besteht nicht darin, zu erklären, wie hervorragend die von mir entwickelte Komponente ist, und ich hoffe auch nicht, dass ich auf diese Weise interagieren kann mit mehr Viele Entwickler kommunizieren miteinander, lernen voneinander und machen gemeinsam Fortschritte. Okay, kommen wir ohne weitere Umschweife zur Sache.

Funktionseinführung

  • Ersetzt die im Browser enthaltenen Warn- und Bestätigungssteuerelemente

  • Angepasster Schnittstellenstil

  • Nutzungsmethoden stimmen im Wesentlichen mit den integrierten Steuerelementen überein

Effektvorschau

1. Alarmsteuerung

2. Steuerung bestätigen

3. Vollständiger Code, Online-Vorschau (siehe unten, komprimierter Paket-Download wird bereitgestellt)

Entwicklungsprozess

 1. Komponentenstrukturdesign

Werfen wir zunächst einen Blick auf die grundlegende Verwendung integrierter Komponenten:

 alert("内置Alert控件");
 if (confirm("关闭内置Confirm控件?")) {
     alert("True");
 } else {
     alert("False");
 }
Nach dem Login kopieren

Um sicherzustellen, dass die Verwendung von Komponenten mit den integrierten Steuerelementen übereinstimmt, müssen wir erwägen, die integrierten Steuerelemente zu überschreiben. Unter Berücksichtigung des einheitlichen Stils, der Benutzerfreundlichkeit, der einfachen Wartung und der objektorientierten Eigenschaften der Komponentenentwicklung plane ich, die benutzerdefinierten Warn- und Bestätigungsmethoden als Instanzmethoden einer Klasse (Winpop) zu verwenden und schließlich die Instanzmethoden zu verwenden decken die integrierte Steuermethode des Systems ab. Um das Ziel zu erreichen, ist mein grundlegender Ansatz wie folgt:

var obj = new Winpop(); // 创建一个Winpop的实例对象
// 覆盖alert控件
window.alert = function(str) {
    obj.alert.call(obj, str);
};
// 覆盖confirm控件
window.confirm = function(str, cb) {
    obj.confirm.call(obj, str, cb);
};
Nach dem Login kopieren

Es ist zu beachten, dass unsere benutzerdefinierten Komponenten dies nicht tun, da die integrierten Steuerelemente des Browsers andere Verhaltensweisen des Browsers verhindern können Um so einheitlich wie möglich zu sein, verwenden wir, wie Sie in der Vorschau sehen können, beim Einblenden der benutzerdefinierten Komponente eine halbtransparente Maskenebene. Genau aus den oben genannten Gründen wurden einige subtile Anpassungen an der Art und Weise vorgenommen, wie die Bestätigungskomponente verwendet wird, von der integrierten Methode zur Rückgabe eines booleschen Werts bis zur Methode zur Verwendung einer Rückruffunktion, um sicherzustellen, dass „OK“ und „Abbrechen“ kann korrekt hinzugefügt werden. Daher sieht die Verwendung benutzerdefinierter Komponenten wie folgt aus:

alert("自定义Alert组件");
confirm("关闭自定义Confirm组件?", function(flag){
    if (flag) {
        alert("True");
    } else {
        alert("False");
    }
});
Nach dem Login kopieren

 2. Komponentencode-Design

In der formalen Einführung des Codes der Winpop-Komponente Vorher Schauen wir uns die Grundstruktur einer Javascript-Komponente an:

(function(window, undefined) {
    function JsClassName(cfg) {
        var config = cfg || {};
        this.get = function(n) {
            return config[n];
        }
        this.set = function(n, v) {
            config[n] = v;
        }
        this.init();
    }
    JsClassName.prototype = {
        init: function(){},
        otherMethod: function(){}
    };
    window.JsClassName = window.JsClassName || JsClassName;
})(window);
Nach dem Login kopieren

Verwenden Sie eine selbstausführende anonyme Funktion, um unseren Komponentencode zu verpacken, um die globale Umweltverschmutzung so weit wie möglich zu reduzieren, und verpacken Sie schließlich unseren Komponentencode Die Klasse wird an das globale Fensterobjekt angehängt, was ein empfohlener Ansatz ist.

Die Get- und Set-Methoden im Konstruktor sind nicht erforderlich, es ist nur die persönliche Gewohnheit des Autors. Ich bin der Meinung, dass das Schreiben auf diese Weise die aufrufenden Methoden zum Zwischenspeichern und Lesen von Konfigurationsparametern und die internen globalen Parameter anderer Komponenten vereinheitlichen kann Variablen, und es scheint effizienter zu sein. Leser sind herzlich eingeladen, ihre Gedanken mitzuteilen und zu sagen, ob es gut ist, so zu schreiben oder nicht.

Als nächstes werfen wir einen Blick auf den vollständigen Code der Winpop-Komponente:

(function(window, jQuery, undefined) {

    var HTMLS = {
        ovl: &#39;<p class="J_WinpopMask winpop-mask" id="J_WinpopMask"></p>&#39; + &#39;<p class="J_WinpopBox winpop-box" id="J_WinpopBox">&#39; + 
        &#39;<p class="J_WinpopMain winpop-main"></p>&#39; + &#39;<p class="J_WinpopBtns winpop-btns"></p>&#39; + &#39;</p>&#39;,
        alert: &#39;<input type="button" class="J_AltBtn pop-btn alert-button" value="确定">&#39;,
        confirm: &#39;<input type="button" class="J_CfmFalse pop-btn confirm-false" value="取消">&#39; + &#39;
        <input type="button" class="J_CfmTrue pop-btn confirm-true" value="确定">&#39;
    }

    function Winpop() {
        var config = {};
        this.get = function(n) {
            return config[n];
        }

        this.set = function(n, v) {
            config[n] = v;
        }
        this.init();
    }

    Winpop.prototype = {
        init: function() {
            this.createDom();
            this.bindEvent();
        },
        createDom: function() {
            var body = jQuery("body"),
                ovl = jQuery("#J_WinpopBox");

            if (ovl.length === 0) {
                body.append(HTMLS.ovl);
            }

            this.set("ovl", jQuery("#J_WinpopBox"));
            this.set("mask", jQuery("#J_WinpopMask"));
        },
        bindEvent: function() {
            var _this = this,
                ovl = _this.get("ovl"),
                mask = _this.get("mask");
            ovl.on("click", ".J_AltBtn", function(e) {
                _this.hide();
            });
            ovl.on("click", ".J_CfmTrue", function(e) {
                var cb = _this.get("confirmBack");
                _this.hide();
                cb && cb(true);
            });
            ovl.on("click", ".J_CfmFalse", function(e) {
                var cb = _this.get("confirmBack");
                _this.hide();
                cb && cb(false);
            });
            mask.on("click", function(e) {
                _this.hide();
            });
            jQuery(document).on("keyup", function(e) {
                var kc = e.keyCode,
                    cb = _this.get("confirmBack");;
                if (kc === 27) {
                    _this.hide();
                } else if (kc === 13) {
                    _this.hide();
                    if (_this.get("type") === "confirm") {
                        cb && cb(true);
                    }
                }
            });
        },
        alert: function(str, btnstr) {
            var str = typeof str === &#39;string&#39; ? str : str.toString(),
                ovl = this.get("ovl");
            this.set("type", "alert");
            ovl.find(".J_WinpopMain").html(str);
            if (typeof btnstr == "undefined") {
                ovl.find(".J_WinpopBtns").html(HTMLS.alert);
            } else {
                ovl.find(".J_WinpopBtns").html(btnstr);
            }
            this.show();
        },
        confirm: function(str, callback) {
            var str = typeof str === &#39;string&#39; ? str : str.toString(),
                ovl = this.get("ovl");
            this.set("type", "confirm");
            ovl.find(".J_WinpopMain").html(str);
            ovl.find(".J_WinpopBtns").html(HTMLS.confirm);
            this.set("confirmBack", (callback || function() {}));
            this.show();
        },
        show: function() {
            this.get("ovl").show();
            this.get("mask").show();
        },
        hide: function() {
            var ovl = this.get("ovl");
            ovl.find(".J_WinpopMain").html("");
            ovl.find(".J_WinpopBtns").html("");
            ovl.hide();
            this.get("mask").hide();
        },
        destory: function() {
            this.get("ovl").remove();
            this.get("mask").remove();
            delete window.alert;
            delete window.confirm;
        }
    };

    var obj = new Winpop();
    window.alert = function(str) {
        obj.alert.call(obj, str);
    };
    window.confirm = function(str, cb) {
        obj.confirm.call(obj, str, cb);
    };
})(window, jQuery);
Nach dem Login kopieren

Es gibt etwas mehr Code, aber die wichtigsten Punkte sind wie folgt:

  • Der Autor war faul und hat jQuery verwendet. Bitte stellen Sie sicher, dass jQuery eingeführt wurde.

  • Die benutzerdefinierte Komponentenstruktur wird schließlich an den Text angehängt Bevor Sie die oben genannten js einführen, stellen Sie bitte zunächst sicher, dass das Dokument geladen wurde

  • Die Komponente fügt die Funktion hinzu, ESC zu drücken und auf die Maskenebene zu klicken, um die Komponente auszublenden

  • Hinweis: In diesem Beispiel wird die Destory-Methode nicht verwendet, aber die Leser können darauf achten, window.alert und window.confirm in dieser Methode zu löschen Stellen Sie sicher, dass nach der Zerstörung der benutzerdefinierten Komponente die Warn- und Bestätigungssteuerelemente mit den integrierten Effekten des Browsers wiederhergestellt werden

  • Wenn Sie window.Winpop = Winpop am Ende der Komponente hinzufügen, Das Objekt kann globalisiert werden, damit es von anderen Klassen aufgerufen werden kann

Endlich

Als Front-End-Entwicklungsingenieur halte ich persönlich die Entwicklung von Javascript-Komponenten für eine sehr interessante Sache. Und der Spaß kann nur realisiert werden, wenn man es selbst versucht. Die Entwicklung von Frontend-Komponenten erfordert oft die Zusammenarbeit von Javascript, CSS und HTML, um mit halbem Aufwand das Doppelte zu erzielen. Das oben erwähnte Winpop stellt Ihnen hier ein komplettes Demo-Komprimierungspaket zur Verfügung das Wort.

Das Obige ist der Inhalt der Entwicklung einer vollständigen JavaScript-Komponente. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


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 installieren Sie die DirectPlay-Komponente der alten Windows 10-Version So installieren Sie die DirectPlay-Komponente der alten Windows 10-Version Dec 28, 2023 pm 03:43 PM

Viele Benutzer stoßen beim Spielen einiger Spiele unter Win10 immer auf Probleme, wie z. B. ein Einfrieren des Bildschirms und unscharfe Bildschirme. Zu diesem Zeitpunkt können wir das Problem lösen, indem wir die Directplay-Funktion aktivieren, und die Bedienungsmethode der Funktion ist ebenfalls sehr einfach. So installieren Sie DirectPlay, die alte Komponente von Win10 1. Geben Sie „Systemsteuerung“ in das Suchfeld ein und öffnen Sie es. 2. Wählen Sie große Symbole als Anzeigemethode. 3. Suchen Sie nach „Programme und Funktionen“. 4. Klicken Sie links, um oder zu aktivieren Win-Funktionen ausschalten 5. Wählen Sie hier die alte Version aus. Aktivieren Sie einfach das Kontrollkästchen

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.

Winkelkomponenten und ihre Anzeigeeigenschaften: Nicht-Block-Standardwerte verstehen Winkelkomponenten und ihre Anzeigeeigenschaften: Nicht-Block-Standardwerte verstehen Mar 15, 2024 pm 04:51 PM

Das Standardanzeigeverhalten für Komponenten im Angular-Framework gilt nicht für Elemente auf Blockebene. Diese Designwahl fördert die Kapselung von Komponentenstilen und ermutigt Entwickler, bewusst zu definieren, wie jede Komponente angezeigt wird. Durch explizites Festlegen der CSS-Eigenschaft display kann die Anzeige von Angular-Komponenten vollständig gesteuert werden, um das gewünschte Layout und die gewünschte Reaktionsfähigkeit zu erreichen.

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

So öffnen Sie die Einstellungen der alten Version von Win10-Komponenten So öffnen Sie die Einstellungen der alten Version von Win10-Komponenten Dec 22, 2023 am 08:45 AM

Die alten Win10-Komponenten müssen vom Benutzer selbst aktiviert werden, da viele Komponenten standardmäßig geschlossen sind. Der Vorgang ist sehr einfach Versionskomponenten? Öffnen 1. Klicken Sie auf Start und dann auf „Win-System“. 2. Klicken Sie, um die Systemsteuerung aufzurufen. 3. Klicken Sie dann auf das Programm unten. 4. Klicken Sie auf „Win-Funktionen aktivieren oder deaktivieren“. 5. Hier können Sie auswählen, was Sie möchten öffnen

See all articles