2016-07-20 3 views
0

Code:Gibt es etwas falsch mit diesem Javascript dynamische Datei-Include-System?

function stop(reason){ 
    throw(reason); 
} 
function pragma_once(file_name){ 
    if(window[file_name] !== undefined) 
     stop("Duplicate symbol: "+file_name); 
    window["__INCLUDE__"+file_name]=true; 
    return true; 
} 
function include(file_name){ 
    var x = document.createElement('script'); 
    x.src = file_name; 
    document.getElementsByTagName("head")[0].appendChild(x); 
} 

Ich habe node.js benutze und die require() schien wirklich nützlich sauber meinen Code zu halten, leichter zu verfolgen und leichter zu lesen. Aber wie ich bemerkt habe Javascript für das Web nicht "require()". Ich habe requestjs gefunden, die require() Funktionalität zu Web Javascript hinzufügt. Aber ich weiß nicht, ob eine Bibliothek nützlich für etwas ist, das eine ziemlich kleine Aufgabe zu sein scheint. Also habe ich etwas geschrieben, das so ähnlich funktioniert wie require (eher wie C# include). Das einzige wirkliche Problem, das ich bemerkte, ist, dass es alles asynchron lädt. Dies ist nicht die endgültige Version, aber die Idee, wie dies funktioniert, wird sich nicht ändern.

Gibt es irgendwelche zugrunde liegenden Probleme, die ich nicht kenne? Irgendwelche Gründe, dies NICHT zu benutzen?

+1

Ich würde einen vorhandenen Modul Bundler, z. browserifizieren, webpack oder rollup. –

+0

Node.js hat 'require()', weil es serverseitig ist und der Akt der Anforderung viel trivialer zu tun ist, wenn Sie mit dem Dateisystem spielen müssen. In den Client-Seite benötigen Dateien mit viel mehr Komplikationen. Ich unterstütze @ FelixKlings Vorschlag. – apokryfos

Antwort

0

Ich denke der Hauptgrund, warum Leute anderen sagen, dies nicht zu tun, ist aus diesen 3 Gründen.

  1. Es macht eine weitere HTTP-GET-Anfrage für dieses Skript, und es ist nicht während des anfänglichen Ladens der Seite.

  2. Es ist möglich, die gleiche Datei mehrmals von dem, was ich gesehen habe, einzuschließen.

  3. Wenn Sie die Funktion benötigen, dann kann eine optimierte Version in einem Webframework oder einer Skriptsprache gefunden werden, die Javascript erweitert.