Kombinieren Mehrerer Dateien mit Laravel Mix

Ich bin derzeit in den Prozess des Tauchens in Laravel Mischen und so weit, während ich voll verstehen, was Laravel-Mix ist und wie es funktioniert, bin ich versucht zu verstehen, ein wenig mehr über die gängigen Praktiken und 'How-Tos'...

Bedenken Sie zum Beispiel, diese Datei-Struktur:

/resources/assets/js/app.js (all global functions)
/resources/assets/js/index/index.js (functions specific to index.js)
/resources/assets/js/about/about.js (functions specific to about.js)
/resources/assets/js/contact/contact.js (functions specific to contact.js)

Nun, im Idealfall würde ich wie folgt zusammengefasst und minified in der folgenden Weise:

/public/js/index/index-some_hash.js (including app.js)
/public/js/about/about-some_hash.js (including app.js)
/public/js/contact/contact-some_hash.js (including app.js)

Soweit ich das verstanden habe, ist der Weg, um dies zu erreichen, ist so etwas wie die folgenden:

//Index
mix.js([
    'resources/assets/js/app.js',
    'resources/assets/js/index/index.js'
], 'public/js/index/index.js').version();

//About
mix.js([
    'resources/assets/js/app.js',
    'resources/assets/js/about/about.js'
], 'public/js/about/about.js').version();

//Contact
mix.js([
    'resources/assets/js/app.js',
    'resources/assets/js/contact/contact.js'
], 'public/js/contact/contact.js').version();

Meine Frage

Ganz einfach, ich würde gerne wissen, ob die oben genannten ist die richtige Methode, das zu tun, was ich versuche zu tun? Gibt es bessere Möglichkeiten, oder mehr gemeinsame Wege, dies zu erreichen?

Wenn die oben genannten Struktur ist falsch und es gibt andere Möglichkeiten meine Dateien kombiniert werden sollen, dann bitte teilt euer wissen. Jedoch, es sei denn, es gibt einen sehr guten Grund, ich möchte Folgendes vermeiden:

  • Dienen zwei separate Dateien für jede Seite, d.h. app.min.js und index.min.js. Dies erfordert zwei lookups pro Seite, es sollte im Idealfall so wenig wie möglich
  • Mit der gleichen Datei, die ALLE Seiten auf meiner Website. Servieren code zu einer Seite, die nicht geht, es zu benutzen ist eine Verschwendung von Ressourcen, unabhängig von caching...

Eine Idee...

Bemerkte ich eine Zeile code in einer der JS Dateien; require('./bootstrap');. Nennen Sie mich altmodisch, aber ich habe nie gesehen, diese in JavaScript (ich nehme an es ist aus node.js). Das heißt, offensichtlich ist es nur das laden der bootstrap.js - Datei mit einer Abhängigkeit, die in der bestimmten Datei. So, mit diesem hintergrund, wäre die folgende Lösung besser:

about.js

require('./app'); //Include global functions

//Do some magic here specifically for the 'about' page...

webpack.mix.js:

mix.js(['resources/assets/js/*/*.js'); //For all pages

Wenn dies eine bessere Lösung ist dann, wie füge ich Dateien mit SASS-wie auch? Welche Möglichkeiten gibt es, die oben erwähnt sind, können verbessert?

  • ich denke, dass sass hat import Aussage, die sich wie require in javascript
  • Perfekt ist, bedeutet das, dass meine "möglichen" Lösung ist besser als die erste?
  • Der einzige Unterschied, den ich sehen konnte, ist eine schlanke mix - Datei.
  • Okay, was ich meine ist, wird die zweite Lösung funktioniert und ist es, wie Sie würde Ihnen raten, dies zu tun? Ich versuche zu lernen, was die best practices sind für die Verwendung von Laravel-Mix. Ich habe gesucht alle über das Internet und während ich voll verstehen, was Laravel-Mix ist, ich möchte verstehen, wie am besten, es zu benutzen...
  • Die zweite Lösung funktioniert. Mit require ist nodejs Weg, der das Modul geladen wird. webpack hinzufügen einer poly-Füllung für require Methode oder fügen Sie den code in app.js alle separaten .js Dateien (ich bin nicht sicher, welcher Ansatz webpack tatsächlich verwendet.) Beim Aufruf der zweiten Lösung als better one ist völlig subjektiv für jede person individuelle Vorlieben.
  • I am trying to learn what the best practices are for using Laravel Mix. Die beste Praxis von Laravel-Mix ist bereits in der Dokumentation. Ich denke, Sie sind auf der Suche verschiedene Arten von Implementierungen in javascript. Derzeit haben Sie vanila js, die alle Browser verstehen, also würde ich empfehlen, tun dieser als re-Implementierung von javascript in verschiedenen Stil
  • Okay, vielen Dank @CerlinBoss

InformationsquelleAutor Ben Carey | 2017-03-06
Schreibe einen Kommentar