0

Ich bin neu im Stack-Überlauf und ich war wirklich neugierig auf meine require.js-Einrichtung, weil es das erste Mal ist, dass ich benutze Wenn ich viele verschiedene Ansätze/Beispiele gesehen habe, bin ich mir nicht sicher, ob das, was ich bisher gemacht habe, richtig ist. Also, auf meinem Index habe ich auf dem „Kopf“Einrichten von require.js für eine statische Website und Laden von benutzerdefiniertem Code, als wäre es eine Bibliothek

<script data-main="js/app" src="js/vendor/require-2.2.0-min.js"></script> 

und am Ende meines ‚body‘ ich den Google Analytics-Snippet habe. Kein anderes Skript wird direkt aus dem Index geladen.

Auf app.js, die in meinem $ projectroot/js Ordner ist, ich habe:

requirejs.config({ 
    "baseUrl": "js/vendor", 
    "paths": { 
     "app": "..", 
     "jquery" : ['//code.jquery.com/jquery-1.12.4.min','jquery-1.12.4.min'], 
     "modernizr" : 'modernizr-2.8.3-respond-1.4.2.min', 
     "bootstrap" : ['//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min','bootstrap.min'], 
     "plugins": '../plugins' 
    }, 
    "shim": { 
     "bootstrap": ["jquery"], 
     "plugins": ["bootstrap"] 
    } 
}); 

requirejs(["app/main"]); 

Auch meine main.js, die mit app.js auf demselben Ordner enthält:

define([ 
    "jquery", 
    "modernizr", 
    "bootstrap", 
    "plugins" 
], function($) 
{ 
$(function() 
{ 
console.log('required plugins loaded...'); 
}); 
}); 

Schließlich ist meine plugins.js keine Bibliothek, aber einige benutzerdefinierte js-Code, die ich zuletzt geladen werden muss. Ist das soweit in Ordnung? Irgendwelche Nachteile mit diesem Ansatz? Wäre es in Ordnung, den Rest meines benutzerdefinierten js-Codes auf ähnliche Weise hinzuzufügen? Vielen Dank für Ihre Antworten !!

+1

Das ist keine gute Frage für SO. Sie bitten im Wesentlichen um eine Code-Überprüfung, aber wir haben eine [Website dafür] (http://codereview.stackexchange.com/). Auch die Frage nach "irgendwelchen Nachteilen" macht die Frage auf der Grundlage von Meinungen, weil die Leute sehr unterschiedliche Vorstellungen davon haben, was ein "Nachteil" sein könnte. (Zum Beispiel habe ich verschiedene Meinungen über die Verwendung von CDNs gelesen. Am Ende des Tages sind sie * Meinungen *. Was am besten funktioniert, müsste von Fall zu Fall mit Profiling bestimmt werden.) – Louis

+0

Entschuldigung dafür! Scheint, dass, da ich hier neu bin, ich nicht wirklich verstehen kann, wo die "Linie" zwischen den zwei Seiten gezogen wird, aber irgendwie ist es hier: http://codereview.stackexchange.com/q/130058/107098 – dimk

Antwort

1

Ihre Frage zu beantworten, das einzige, was ich Datei entsprechen, indem die globalen dependecies in Ihrem main.js ändern würde:

define([ 
    "jquery", 
    "modernizr", 
    "bootstrap", 
    "plugins" 
] 

in Ihre app.js Datei wie folgt:

requirejs(["app/main","jquery","modernizr","bootstrap","plugins"]); 

Das bedeutet, dass Ihre globalen Abhängigkeiten nicht nur in Ihrer main.js-Datei, sondern in allen Ihren Modulen geteilt werden. Dies bedeutet, dass Sie sie nicht in jede Datei aufnehmen müssen, die Sie verwenden möchten.

Abgesehen davon sieht es gut aus

+1

Ich habe seitdem erweitert Mein Beispiel und lernte ein paar Dinge, wie ich auch Google Maps, Facebook Javascript SDK, MomentJS - MomentJS Timezone, ein Wetter Widget etc .. Was Sie gesagt haben kam in meinen Sinn, wenn ich eine Index-Alt-Seite (alt für eine alternative Sprache) und wollte dort lokalisierte Inhalte zeigen (zB Google Maps, aktuelle Uhrzeit und Datum, Wetter und Facebook Widgets auf Griechisch) und ist absolut korrekt, da es Dubletten eliminiert, die eine schlechte Übung sind und ich hasse .. Markierung Das ist gelöst - SE war der falsche Platz für eine solche Frage! Danke, Gerard! – dimk

+0

Keine Sorgen! Hoffe, alles funktioniert –

+0

Bis jetzt scheint alles zu funktionieren, wie es sollte ..! Bei Facebook habe ich anstelle des asynchronen Plugins 'Facebook Module Loader' verwendet, nachdem ich einige Artikel gelesen hatte, die die beiden verglichen, schien es eine bessere Lösung zu sein. Sobald ich fertig bin, werde ich meinen Post/Code darüber auf Codereview aktualisieren, vielleicht könnte es für jemanden hilfreich sein. – dimk