2 Stimmen

Javascript-Idiom für Code-Struktur

Mein Javascript wird mehrfach mit dem Script-Tag eingefügt, etwa so:

<script src="code.js></script>
<script src="code.js></script>
<script src="code.js></script>

Im Moment habe ich folgenden Code drin code.js um meinen Code nur einmal ausführen zu lassen, ohne meine Namespaces zu überschreiben:

if(typeof _ow == "undefined" ){
_ow = {};
// code in here will only run once

_ow.Auth = (function(){
})();
_ow.Template = (function(){
})();

}

Gibt es eine bessere Struktur, die ich verwenden könnte, damit mein Code nur einmal ausgeführt wird?

0 Stimmen

Ähm... warum wird Ihre code.js mehrfach eingebunden?

0 Stimmen

Ehrlichkeit, was Sie haben est das JavaScript-Idiom für diesen Zweck. Es ist auch die am besten lesbare Art, dies zu tun. Man muss nicht zu schlau sein.

2voto

geowa4 Punkte 38662
var _ow = _ow || { Auth: ... };

wenn es bereits definiert ist, wird es nicht erneut definiert.

0 Stimmen

Ja, ich habe so etwas gemacht, aber dann müsste ich das für alle meine "Funktionen" tun, wie _ow.Auth = _ow.Auth || (function(){})(); was nicht gerade schön ist.

1 Stimmen

Sie müssen es nur einmal tun für _ow

0 Stimmen

Sie müssen dies nicht mehrmals für jede Funktion tun, sondern nur einmal, wenn Sie die Variable _ow erstellen.

1voto

Abie Punkte 10855

Sind Sie vertraut mit Crockfords Javascript-Modul-Muster ?

Eine leichte Abwandlung der Methode, um das Überschreiben des Namensraums zu verhindern:

var _ow;
if(!_ow) _ow = {};

0 Stimmen

Wie würde dieses Codeschnipsel funktionieren? Bei der erneuten Ausführung dieses Codestücks wird Folgendes neu definiert _ow jedes Mal.

0 Stimmen

Var _ow = 9; var _ow; assert(_ow === 9) //true

1voto

levik Punkte 108445

Was Sie tun, funktioniert zwar technisch, ist aber ineffizient, denn obwohl Ihr Code nur einmal ausgeführt wird, wird er in einigen Browsern mehrmals geparst (dies ist etwas anderes als das Herunterladen einer Datei über das Netzwerk und kann nicht zwischengespeichert werden).

Am besten stellen Sie sicher, dass das Skript nur einmal aufgenommen wird. Für alle wiederkehrenden Funktionen können Sie eine Funktion bereitstellen, die bei Bedarf aufgerufen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X