9 Stimmen

jQuery in CodeIgniter, innerhalb der Ansicht oder in externer js-Datei?

Ich entwickle eine Webanwendung mit CodeIgniter. Die ganze Zeit habe ich den benutzerdefinierten Js-Code in die View-Datei eingefügt, um ausgefallene Dinge zu tun. Indem ich dies tue, kann ich verwenden site_url() et base_url() Funktion, die von CodeIgniter bereitgestellt wird.

Heute möchte ich alle benutzerdefinierten js-Code aus View-Datei in eine externe js-Datei zu trennen. Dann traf es mich, ich kann nicht verwenden site_url() et base_url() in der externen js-Datei. Also musste ich den js-Code zurück in die Ansichtsdatei verschieben.

Ich möchte um Meinungen, Beispiele und bewährte Verfahren für diese Art von Problemen bitten. Legen Sie die benutzerdefinierte js-Code innerhalb der Ansicht, oder in externen js-Datei? Wenn Sie es in externe Datei setzen, wie umgehen Sie die Bedürfnisse für site_url() et base_url() (außer natürlich die absolute Url, die ich vermeiden möchte).

38voto

Sampson Punkte 258265

Ich in der Regel halten meine in einer externen Datei, sondern legen Sie eine einzelne Zeile innerhalb meiner Vorlage (Ansicht), die eine Javascript-Variable namens "baseurl", die später von meinem externen Javascript verwendet werden kann deklariert.

<script type="text/javascript">
  var baseurl = "<?php print base_url(); ?>";
</script>
<script type="text/javascript" src="/js/scripts.js"></script>

Jetzt hat meine Datei scripts.js Zugriff auf die base_url() Wert über seine eigene baseurl variabel.

3voto

Jens Roland Punkte 26963

Ich würde es auf eine andere Art und Weise zu tun - js sollte extern sein, natürlich, aber warum nicht in vollem Umfang nutzen die Tatsache, dass Sie ein MVC-Framework, das perfekt geeignet ist, um alle Ihre Javascript-Magie zu behandeln haben?

Hier ist mein Rezept für Javscript (und CSS) Güte mit CI:

  1. Holen Sie sich ein Exemplar von Verkleinern - wenn du es nicht schon weißt, wird dein Leben besser sein. Nicht in einem " Liebe auf den ersten Blick / Ich habe gerade jQuery entdeckt / xkcd / Unit Testing "Art und Weise, aber zumindest in einer " Kumpel, vorbereitete Anweisungen beseitigen die SQL-Injektion "Art und Weise.

  2. Zweitens: Erstellen Sie einen CI-Controller, der Minify kapselt (sollte nicht allzu schwer sein, denken Sie nur daran, den richtigen HTTP-Header zu setzen und die Parameter weiterzugeben)

  3. Aktivieren Sie optional die Zwischenspeicherung, damit alles blitzschnell läuft (Minify verfügt über eine integrierte Zwischenspeicherung, aber wenn Sie Ihre CI-Inhalte bereits zwischenspeichern, können Sie die gleiche Methode auch hier anwenden.

  4. Definieren Sie optional einige Gruppen für Minify, um das Laden von Skripten noch angenehmer zu gestalten

  5. Fügen Sie optional die Variablen baseurl und siteurl (und alle anderen Werte, die Sie benötigen) zur Javascript-Ausgabe hinzu

  6. Und schon sollten Sie in der Lage sein, Ihre Skripte durch den Aufruf des Minify-Wrappers zu laden:

    <script type="text/javascript" src="/min/g=js"></script>

Es ist wahnsinnig schnell, es ist gzipped, es braucht nur eine Anfrage statt vieler, es gibt Ihnen volle CI-Kontrolle über Ihre Skripte, und es macht sogar Ihren Quellcode sauberer.


Oh, und wenn Sie besonders nett zu Ihren Besuchern sein wollen, die den Quellcode durchstöbern, könnten Sie automatisch etwas wie dies zur Ausgabe hinzufügen:

// Javascript compressed using Minify by Ryan Grove and Steve Clay
// (http://code.google.com/p/minify/)
// Human-readable source files:

// http://www.yourdomain.com/js/core_functions.js
// http://www.yourdomain.com/js/interface.js
// http://www.yourdomain.com/js/newsticker.js
// http://www.yourdomain.com/js/more_magic.js

(...)

Zumindest mache ich das so.

0voto

Phil Sturgeon Punkte 30202

Donny, wenn du anfängst, jede URL einzeln durchzugehen, machst du dir nur selbst Kopfzerbrechen. Warum nicht einfach durch base_url() passieren und den Controller/die Methode am Ende ansprechen?

Sie verlieren die Möglichkeit, die index_page- und url_suffix-Einstellungen auszutauschen, aber sie sollten sich ohnehin nicht allzu oft ändern.

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