Heim > Web-Frontend > js-Tutorial > Erste Schritte mit Browserify

Erste Schritte mit Browserify

Joseph Gordon-Levitt
Freigeben: 2025-02-21 09:56:12
Original
545 Leute haben es durchsucht

Erste Schritte mit Browserify

JavaScript -Implementierungen wurden immer komplexer, da das schöne Tier, das wir das Web nennen, jedes Jahr weiterentwickelt. Viele von uns arbeiten jetzt mit JavaScript -Modulen zusammen - unabhängig voneinander funktionierende Komponenten, die zusammenkommen, um als zusammenhängendes Ganze zu arbeiten, können jedoch gerne eine Komponente ersetzen lassen, ohne Armageddon zu verursachen. Viele von uns haben das AMD -Modulmuster verwendet und erfordern, dies ordentlich zu erreichen.

letztes Jahr schlug Browserify die Szene und brachte viel Aufregung auf. Während sich der Staub sich niedergelassen beginnt, wollte ich einen Überblick darüber schreiben, was Browserify ist, wie er funktioniert und einige Optionen zum Hinzufügen in Ihren Workflow.

Key Takeaways

  • Browserify ermöglicht die Verwendung von Node.js -Stilmodulen direkt im Browser, indem sie Abhängigkeiten in eine einzelne JavaScript -Datei bündeln.
  • Um Browserify zu verwenden, benötigen Sie Node.js, NPM (standardmäßig mit node.js installiert) und Browserify selbst, die global mit `npm install -g browserify`.
  • installiert werden können.
  • Browserify vereinfacht die Einbeziehung externer Bibliotheken in Ihrem Projekt durch Verwendung von `Request ()` Ähnlich wie node.js und kann auch Quellkarten für das einfachere Debuggen generieren.
  • Sie können den Browserify -Prozess mithilfe von NPM -Skripten oder Taskläufern wie Gulp und Grunzen automatisieren, wodurch die Effizienz der Workflow und die Reduzierung der manuellen Bündelungsbemühungen verstärkt werden.
  • Die Verwaltung von Abhängigkeiten in Browserify -Projekten wird mit einer `package.json` -Datei optimiert, die Projektdetails und erforderliche NPM -Pakete angibt, sodass andere das Projekt mit` NPM install`.
  • einrichten können
  • Browserify ist mit ES6 -Modulen durch Transpilation mit Babel kompatibel und unterstützt Debugging mit Quellkarten, um auf Original -Quelldateien zurückzuverfolgen, um die Fehlerverfolgung zu verfolgen.

Was ist Browserify?

Mit

Browserify können wir Node.js -Stilmodule im Browser verwenden. Wir definieren Abhängigkeiten und browserieren dann alles in eine einzelne ordentliche und ordentliche JavaScript -Datei. Sie schließen Ihre erforderlichen JavaScript -Dateien mit den Anweisungen ('./ yourfancyjsFile.js') ein und können auch öffentlich verfügbare Module von NPM importieren. Für Browserify ist es auch recht einfach

Warum Knotenmodule importieren?

Importieren von Modulen ist ein Segen. Anstatt eine Reihe von Websites zu besuchen, um Bibliotheken für Ihr JavaScript herunterzuladen, schließen Sie sie einfach mit Request () Anweisungen ein, stellen Sie sicher, dass die Module installiert wurden und Sie können loslegen. Häufig verwendete JavaScript -Bibliotheken wie JQuery, Undercore, Backbone und sogar Angular (als inoffizielle Verteilung) stehen zur Verfügung. Wenn Sie an einer Website arbeiten, auf der bereits Knoten ausgeführt werden, vereinfachen Sie die Dinge noch weiter, um alle Ihre JS zu strukturieren. Ich mag dieses Konzept wirklich.

was Sie benötigen

Um mit Browserify zu beginnen, benötigen Sie das minimale, das Sie benötigen:

  • node.js
  • npm - Dies wird standardmäßig mit Knoten installiert.
  • Browserify - Ich werde erklären, wie Sie diese installieren.
  • Eine Packung JavaScript -Module, die Sie zähmen können!

Erste Schritte

Um loszulegen, benötigen Sie auf Ihrem Computer einen Knoten und NPM installiert. Gehen Sie zu den obigen Links, wenn Sie nach Anleitungen suchen, um diese zu installieren. Wenn Sie total festgefahren sind, probieren Sie diese Anweisungen zur Installation von Node.js über Package Manager aus. Sie müssen keine Knotenarbeit ausführen, um Browserify zu verwenden. Wir installieren den Knoten ausschließlich, weil NPM davon ausführt. Sobald Sie NPM haben, können Sie Browserify mit dem folgenden Befehl installieren:

npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Was wir hier tun, ist die Verwendung von NPM, um Browserify weltweit auf Ihrem Computer zu installieren (der -G fordert NPM an, ein Modul global zu installieren).

Wenn Sie einen Fehler erhalten, der mit Folgendem beginnt:

Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dann haben Sie ein Erlaubnisproblem. Sie können den Befehl sudo sudo, aber ich empfehle stattdessen diesen Beitrag.

Erstellen Ihrer ersten Browserify -Datei

Beginnen wir zunächst eine browserifizierte JavaScript -Datei, die ein äußerst beliebtes Modul importiert, unterstrichen. Wir werden Unterstiche verwenden, um Superman aufzuspüren. Ich habe meine JS -Datei main.js angerufen und in meinem Projekt in einem JS -Ordner platziert.

Wir starten mit der Zuweisung der _ Variablen an Unterstrich mithilfe von Browserify -Anweisung () in unserem JavaScript:

<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Als nächstes verwenden wir jede () und find () Funktionen von Unscore. Wir werden zwei Namen von Namen durchsuchen und eine Konsole ausführen. Log, um zu sagen, ob es Superman sieht oder nicht. Hoch fortgeschrittenes Zeug, von dem Lex Luthor nur träumen konnte. Unser letztes Javascript -Code sieht folgendermaßen aus:

<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir möchten sicherstellen, dass das Browserify das NPM -Modul finden kann, wenn es versucht, es unserem Projekt hinzuzufügen. Bei den bloßen Grundlagen geht es darum, Ihr Terminal zu öffnen, zu dem Ordner zu navigieren, der Ihr JavaScript -Projekt hält, und dann diesen Befehl auszuführen, um Undercore in diesem Ordner zu installieren:

npm install underscore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für diejenigen, die mit der Funktionsweise von Knoten und NPM nicht vertraut sind, erstellt dies einen Ordner namens node_modules in Ihrem Projekt, der den Code für Ihr Unterzahnmodul enthält. Der Befehl ruft die neueste Version von Undercore aus dem NPM -Repository unter https://registry.npmjs.org/underscore ab. Mit diesem Modul in unserem Ordner node_modules kann Browserify es jetzt finden und verwenden.

zum ersten Mal aus dem Browserify

ausführen

Wenn wir Browserify ausführen, möchte es eine neue JavaScript -Datei mit allen angehängten Modulen erstellen. In diesem Fall erstellt es eine JavaScript -Datei mit Unterstrichen. Wir müssen uns für einen Namen für diese neue Datei entscheiden. Ich habe mich mit findem.js entschieden. Ich führe diesen Befehl aus dem Stammordner meines Projekts aus:
npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl liest Ihre main.js -Datei und gibt sie in die von der Option -o definierte Datei findem.js aus. Ich habe die Option -D so eingesetzt, dass sie auch eine Quellkarte für uns generiert. Auf diese Weise können wir Main.js debuggen und sauber als separate Dateien unterstreichen.

Verwenden des Browserify -Ausgangs

Von dort aus ist es so einfach, die Datei wie jede andere JS -Datei auf Ihre Seite aufzunehmen:

Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Importieren Sie Ihre eigenen JavaScript -Dateien

Es ist unwahrscheinlich, dass Ihre gesamte Anwendung aus Knotenmodulen stammt. Um Ihr eigenes JavaScript einzuschließen, können Sie die gleiche Erfordernisse () -Funktion verwenden. Die folgende Zeile von JavaScript importiert eine JS -Datei namens your_module.js in die GreatestModuleever -Variable:

<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um unser JavaScript wie dieses zu importieren, müssen wir nur unser JavaScript als Modul strukturieren. Dazu müssen wir modul.exports definieren. Eine Möglichkeit, dies zu tun, ist unten gezeigt.

<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Randnotiz!

Wenn Sie eine Reihe von JavaScript-Bibliotheken haben, die nicht in NPM sind und nach einer einfacheren Möglichkeit suchen, diese in Browserify zu bringen, können Sie das Browserify-Shim-NPM-Modul verwenden, um diese Dateien für Sie zu konvertieren . Wir werden es in diesem Artikel nicht verwenden, aber einige Entwickler könnten daran interessiert sein, dies auszuprobieren.

unser Beispiel mit einem Modul

Um ein einfaches Beispiel dafür zu geben, wie dies funktioniert, werden wir die Arrays aus dem vorherigen Superhelden -Suchbeispiel herausnehmen und sie durch ein separates JS -Modul ersetzen, das ein Array von Namen zurückgibt. Das Modul sieht aus wie:

npm install underscore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Als nächstes importieren wir dieses Modul in unseren Code mit names = Request ('./ names.js'):

browserify js/main.js -o js/findem.js -d
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Unsere Namensvariablen verweisen auf die exportierte Funktion aus unserem Modul. Daher verwenden wir die obige Namensvariable als Funktion mit Klammern, wenn wir das Array von Namen an unsere Funktion findsuperman () übergeben.

Führen Sie diesen Browserify -Befehl aus Ihrer Befehlszeile noch einmal aus, um ihn zu kompilieren, öffnen Sie ihn in Ihrem Browser und es sollte wie erwartet ausgeführt werden, jeden Wert im Array durchsuchen und sich anmelden, unabhängig davon, ob er Superman sieht oder nicht:

Erste Schritte mit Browserify

in Variablen und Freigabemodulen in unserer App

übertragen

Um dieser ziemlich einfachen Superman -Jagd -App etwas mehr Komplexität zu verleihen, verwandeln wir unsere Funktion "Findsuperman () in ein Modul. Auf diese Weise konnten wir theoretisch Superman in verschiedenen Teilen unseres JavaScript finden und wir konnten unser Superman -Jagdmodul immer durch ein effektiveres in Zukunft ersetzen.

Wir können Variablen an unser Modul weitergeben und sie in unserer Funktion modul.exports verwenden, sodass wir ein Modul in einer Datei namens findSuperman.js erstellen, die erwartet, ein Array von Namen zu erhalten:
npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe einen Rückgabewert für unsere Funktion für findSuperman () hinzugefügt. Wenn es Superman findet, wird es wahr zurückkehren. Ansonsten wird es falsch zurückgegeben. Es liegt an dem Code, in dem dieses Modul verwendet wird, um zu entscheiden, wofür er diesen wahren/falschen Wert verwendet. Es gibt jedoch eine Sache, die wir im obigen Modul fehlen. Wir verwenden Underscore in unserer Funktion, haben es aber nicht deklariert. Wir können es auch im Modul selbst deklarieren wie so:

Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Bei der Verwendung von Browserify werden alle Ihre JS -Dateien durchgesehen, die importiert werden, und importiert nur jedes Modul, das einmal erwähnt wird. Wir benötigen also Unterstrich in unserer Hauptdatei JS und in FindSuperman.js, aber wenn Browserify Packages alles aufpackt, wird es nur einmal in unsere endgültige JS -Datei eingebaut. Ziemlich ordentlich, richtig?

Unsere tatsächliche JavaScript -App wird jetzt unser neues Modul mit seinem neuen zurückgegebenen wahren/falschen Wert verwenden. Für Demo -Zwecke bleiben wir einfach an ein einfaches Dokument. Schreiben Sie, um zu sagen, ob es Superman aus unseren Namen gefunden hat:

<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir müssen unterstreichen nicht mehr in unserer Haupt -JS -Datei importieren, damit Sie sie ohne Drama entfernen können. Es wird am Ende immer noch durch seine Aufnahme in die Datei findSuperman.js importiert.

Verwalten von Browserify -NPM -Abhängigkeiten mit package.json

Sagen Sie, Sie haben einen begeisterten Freund, der auch Ihren Code verwenden möchte. Es wäre ein bisschen schwer zu erwarten, dass sie wissen, dass sie zuerst das NPM -Unterstrich -Modul installieren müssen. Die Lösung hierfür ist es, eine Datei namens Package.json im Stamm Ihres Projekts zu erstellen. Diese Datei gibt Ihrem Projekt einen Namen (stellen Sie sicher, dass hier keine Leerzeichen im Namen enthalten sind), Beschreibung, Autor, Version und vor allem in unserem Fall - eine Liste von NPM -Abhängigkeiten. Für diejenigen, die sich mit Knoten entwickelt haben, verwenden wir hier genau das gleiche Zeug:

<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Liste der Abhängigkeiten ist derzeit auf unsere Single "Unterstrich" beschränkt: "1.6.x", bei der der erste Teil der Abhängigkeit der Name ist und der zweite Teil die Version ist. Neueste oder * wird die neueste Version NPM abrufen. Alternativ können Sie Zahlen wie 1.6 (für Version 1.6) und 1.6.x (für Versionen 1.6.0 bis, aber nicht einschließlich 1.7) einfügen.

.

Wir können auch Browserify selbst als Abhängigkeit einbeziehen. Es ist jedoch keine Abhängigkeit für das Projekt - jeder Benutzer unserer App kann Superman finden, ohne Browserify auszuführen. Es ist eine unserer DevDependenzen - Module, die für Entwickler erforderlich sind, um Aktualisierungen dieser App zu machen.

Jetzt haben wir eine Paket.json -Datei, wir müssen unseren Freund nicht dazu bringen, NPM zu installieren. Sie können einfach die NPM -Installation ausführen und alle notwendigen Abhängigkeiten werden in ihren Ordner node_modules installiert.

Automatisieren des Browserify -Prozesses

Browserify in der Befehlszeile jedes Mal, wenn Sie die Datei ändern, ist ärgerlich und überhaupt nicht bequem. Zum Glück stehen einige Optionen zur Automatisierung des Ausführens von Browserify zur Verfügung.

npm

npm selbst kann Befehlszeilenskripte ausführen, genau wie die, die Sie manuell eingegeben haben. Geben Sie dazu einfach einen Skripteabschnitt in Ihr Paket ein. Json wie SO:

npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um das auszuführen, können Sie Folgendes in Ihre Befehlszeile eingeben:

Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Aber das ist nicht bequem genug. Wir müssen diesen Befehl immer noch jedes Mal manuell ausführen. Das ist ärgerlich. Eine bessere Option ist die Verwendung eines NPM -Moduls namens Watchify. Watchify ist einfach, es ist einfach und es ist eine große Zeitsparung. Es wird nach Änderungen an Ihrem JS und nach dem automatischen Wiederaufführen von Browserify.

Um dies in unser paket.json zu bringen, werden wir es unseren DevDependenzen hinzufügen und ein neues Skript zum Anschauen unseres JS aufnehmen (lassen Datei).

<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um dies auszuführen, geben Sie einfach den folgenden Befehl ein.

<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es wird seine Magie rennen und arbeiten. Es sagt jedoch nicht viel aus, Sie wissen zu lassen, was los ist, was verwirrend sein kann. Wenn Sie es bevorzugen, um Ihnen Details darüber zu geben, was es tut

npm install underscore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Das gibt Ihnen jedes Mal, wenn es ausgeführt wird:

browserify js/main.js -o js/findem.js -d
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Erzeugen von Quellkarten in NPM

So generieren Sie Quellkarten mit NPM, fügen Sie -d nach Ihrem Browserify- oder Watchify -Befehl hinzu:

<span><span><span><script</span> src<span>="js/findem.js"</span>></span><span><span></script</span>></span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
, um sowohl den -D für das Debuggen als auch für die ausführliche Ausgabe in Watchify zu haben. Sie können sie wie SO kombinieren:

greatestModuleEver <span>= require('./your_module.js');</span>
Nach dem Login kopieren
Nach dem Login kopieren
grunzen

Viele Leute (ich selbst eingeschlossen) benutzen Grunzen schon seit einiger Zeit und sind ziemlich daran gewöhnt. Zum Glück spielt die Browserify für diese Art auch gut mit Grunzenbuilds!

Wir müssen unsere Paket.json -Datei ändern, um Grunzen zu verwenden. Wir werden den Abschnitt "Skripte" nicht mehr verwenden und uns stattdessen darauf verlassen. Stattdessen fügen wir ein paar neue DevDependenzen hinzu:

module<span>.exports = function(vars) {
</span>  <span>// Your code
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Wir haben zu unseren Abhängigkeiten hinzugefügt:

    grunzen - um sicherzustellen, dass wir Grunzen für das Projekt installiert haben.
  • Grunzenbrowserify-Das Modul, mit dem Sie Browserify in Grunn ausführen können.
  • Grunz-Contrib-Watch-Das Modul, das unsere Dateien ansieht und Browserify jederzeit ausführt.
Wir erstellen dann eine Datei namens gruntfile.js im Root unseres Projekts. In dieser Grunzdatei haben wir Folgendes:

module<span>.exports = function() {
</span>  <span>return ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen', 'Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'];
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Wir starten in unserer Grunzendatei, indem wir die NPM -Module geladen haben, die wir in unserer Paket.json -Datei benötigt haben:

<span>var _ = require('underscore'),
</span>  names <span>= require('./names.js');
</span>
<span>findSuperman(names());
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Wir registrieren unsere einzelne Gruppe von Aufgaben, die wir als Standardaufgabe ausführen möchten (Browserify und Watch):

module<span>.exports = function (values) {
</span>  <span>var foundSuperman = false;
</span>
  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>      foundSuperman <span>= true;
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span>
  <span>return foundSuperman;
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Wir haben unser Grunn initConfig -Objekt eingerichtet (alle Grunzdateien suchen danach):

<span>var _ = require('underscore');
</span>
module<span>.exports = function (values) {
</span>  <span>...</span>
Nach dem Login kopieren
Nach dem Login kopieren
In diesem Bereich weisen wir darauf hin, wo unsere Datei package.json:

lautet

npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Unsere Browserify -Einstellungen werden als nächst

Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Wir haben dann eine Uhrenaufgabe eingerichtet, um unsere Browserify -Aufgabe erneut auszusetzen, wenn sich etwas im JS -Ordner ändert:

<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Aufgrund unserer neuen DevDependencies (wir haben weder Grunzen in unserem Projekt und auch keine dieser Module), müssen wir zuerst die NPM installieren. Sobald Sie es zugelassen haben, dass es Module ausführen und installiert, können Sie das immer so einfache Gruntcommand ausführen, damit es Ihr Projekt ansehen kann.

Erzeugen von Quellkarten in Grunzen

Mit Version 2.0.1 von Grunn-Browserify müssen die Art und Weise, wie Quellkarten definiert werden, geändert werden, was dazu führt, dass viele Leitfäden online falsch sind! Der richtige Weg, um Grunzen zu erhalten und zu browserieren, um Quellkarten für Sie zu generieren, besteht darin, Debugs hinzuzufügen: True in Bündelungen innerhalb von Optionen wie SO:

<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
, dass komplizierte Look -Optionen eingerichtet werden sollen

gulp

gulp ist browserify's Boulevardliebhaber. Artikel rund um das Web kombinieren die beiden ziemlich oft, browserify und schlucken - der in den Himmel gemachte Aufbau -Prozess der neuesten JavaScript -Erstellung. Ich würde nicht sagen, dass Browserify -Fans Gulp verwenden müssen, es ist hauptsächlich eine persönliche Präferenz zwischen den verschiedenen Syntaxen. Sie können (wie Sie oben gesehen haben) NPM oder Grunn verwenden, um Ihre Browserify -Datei zu erstellen. Ich persönlich bin ein Fan des sauberen und einfachen NPM -Erstellungsprozesses für kleinere Projekte.

Um das oben genannte in Gulp zu erledigen, werden wir zunächst Gulp global installieren:

Wir werden unsere Paket.json -Datei aktualisieren, um einige neue DevDependenzen zu enthalten, die wir benötigen:
npm install underscore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben Folgendes hinzugefügt:
browserify js/main.js -o js/findem.js -d
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Watchify - Wir haben dies auch im NPM -Beispiel verwendet. Gleiches Modul.
  • gulp - das ziemlich wichtige Modul, um uns all diese Schlupfgüte zu geben!
  • Vinyl-Source-Stream-Dies ist das Modul, das eine Eingabe aufnimmt und eine Datei zurückgibt, damit wir irgendwo einsetzen können.
  • BrowSerify verfügt über eine Streaming -API für die Ausgabe, die wir direkt in Gulp verwenden können. Eine Reihe von Leitfäden empfiehlt, das Gulp-Browserify-Plugin zu verwenden. Browserify empfehlen dies jedoch nicht und bevorzugt uns die Streaming-API-Ausgabe von Browserify. Wir verwenden Vinyl-Source-Stream, um diese Browserify-Ausgabe aufzunehmen und sie in eine Datei zu setzen, damit wir irgendwo ausgeben können.

Wir erstellen dann eine Datei namens Gulpfile.js im Stammpunkt unseres Projekts. Hier geht die gesamte Gulp -Funktionalität:

Wir beginnen mit dem Importieren in unseren NPM -Modulen, die ziemlich selbsterklärend sind. Wir setzen dann drei Variablen für unseren Build:
<span><span><span><script</span> src<span>="js/findem.js"</span>></span><span><span></script</span>></span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • SourceFile - Der Ort und der Dateiname unserer Browserified -Datei (in diesem Fall js/main.js)
  • destFolder - Der Ordnerspeicherort geben wir die endgültige Datei nach
  • aus
  • destfile - Der Dateiname, den wir in unserer endgültigen Datei
  • haben sollen

Ich werde den Code im Folgenden ein wenig detaillierter erläutern.

Wie Browserify und Schluck zusammenarbeiten

Unsere erste Aufgabe ist unser Browserify, das wir so definieren:

npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt zuerst unsere Main.js -Datei in das Browserify -NPM -Modul:

übergeben:
Error: EACCES, mkdir '/usr/local/lib/node_modules/browserify'
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir verwenden dann die Browserify -Streaming -API, um einen lesbaren Stream mit unserem JavaScript -Inhalt zurückzugeben:
<span>var _ = require('underscore');</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Von dort aus putzen wir sie in eine Datei mit dem Dateinamen findem.js und dann durch, um in unseren JS -Ordner zu versetzen.
<span>var _ = require('underscore'),
</span>  names <span>= ['Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'],
</span>  otherNames <span>= ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen'];
</span>
_<span>.each([names, otherNames], function(nameGroup) {
</span>  <span>findSuperman(nameGroup);
</span><span>});
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir nehmen unsere Eingaben im Grunde über verschiedene Phasen, die in unser endgültiges Projekt auftreten, das eine glänzende neue JavaScript -Datei sein sollte!

kombiniert wachung und gulp

Wie zuvor gelernt, ist es ein wenig ärgerlich, Browserify direkt zu verwenden, da es bei der Aktualisierung der Datei viel einfacher ausgeführt wird. Dazu verwenden wir das Watchify NPM -Modul erneut.

Wir beginnen zunächst eine Aufgabe namens Watch (Sie können es Watchify nennen, wenn Sie möchten ... es liegt wirklich hier an Ihnen):
npm install underscore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir weisen das Bundler -Variable das Watchify -Modul zu, da wir es zweimal verwenden:

browserify js/main.js -o js/findem.js -d
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir fügen dann einen Ereignishandler hinzu, der eine Funktion namens Rebundle () ausführt, wenn das Update -Ereignis aufgerufen wird. Im Grunde genommen wird Rebundle ():
<span><span><span><script</span> src<span>="js/findem.js"</span>></span><span><span></script</span>></span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
ausgeführt, wenn zuwatchify die Datei ändert

Also, was ist Rebundle ()? Es ist ziemlich genau das, was unsere Browserify -Aufgabe oben getan hat:
greatestModuleEver <span>= require('./your_module.js');</span>
Nach dem Login kopieren
Nach dem Login kopieren

Es wäre möglich, sowohl Browserify als auch in einer scharfen JavaScript -Optimierung zusammenzuführen, aber ich habe beschlossen, sie in diesem Artikel getrennt zu belassen, um die Dinge einfach zu halten. Für ein beeindruckenderes und komplexeres Beispiel dafür finden Sie die Starter -Gulp -Datei von Dan Tello.

Um unsere gulpfile.js zu beenden, definieren wir unsere Standardaufgabe, die genauso funktioniert wie die Standardaufgabe in Grunt.
module<span>.exports = function(vars) {
</span>  <span>// Your code
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Um den obigen Gulp -Code auszuführen, haben Sie drei Optionen. Der einfachste Weg ist es, diese von Ihnen er sich gelegene Standardaufgabe auszuführen, für die nur ein Wort in der Befehlszeile erforderlich ist:
module<span>.exports = function() {
</span>  <span>return ['Barry Allen', 'Hal Jordan', 'Kara Kent', 'Diana Prince', 'Ray Palmer', 'Oliver Queen', 'Bruce Wayne', 'Wally West', 'John Jones', 'Kyle Rayner', 'Arthur Curry', 'Clark Kent'];
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

, damit die Browserify -Aufgabe einmal ausgeführt wird, und die Watch -Aufgabe beginnt die Dateien nach Änderungen zu beobachten.

Sie können Ihre Browserify -Aufgabe auch speziell ausführen:
<span>var _ = require('underscore'),
</span>  names <span>= require('./names.js');
</span>
<span>findSuperman(names());
</span>
<span>function findSuperman(values) {
</span>  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

oder Ihre Uhrenaufgabe:
module<span>.exports = function (values) {
</span>  <span>var foundSuperman = false;
</span>
  _<span>.find(values, function(name) {
</span>    <span>if (name === 'Clark Kent') {
</span>      <span>console.log('It\'s Superman!');
</span>      foundSuperman <span>= true;
</span>    <span>} else {
</span>      <span>console.log('... No superman!');
</span>    <span>}
</span>  <span>});
</span>
  <span>return foundSuperman;
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Erzeugen von Quellkarten mit Gulp und Browserify

Um eine Quellkarte für Ihr JavaScript zu generieren, enthalten Sie {Debug: True} in beiden Bündel () -Funktionen.

Unsere Browserify -Aufgabe würde so aussehen:
<span>var _ = require('underscore');
</span>
module<span>.exports = function (values) {
</span>  <span>...</span>
Nach dem Login kopieren
Nach dem Login kopieren

Die Funktion rebundle () in unserer Uhrenaufgabe würde so aussehen:
npm install -g browserify
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schlussfolgerung

Es sind noch ziemlich frühe Tage für Browserify und es wird sich im Laufe der Zeit sicherlich entwickeln und reif. In seinem aktuellen Zustand ist es bereits ein sehr praktisches Werkzeug, um Ihr modulares JavaScript zu strukturieren, und ist besonders brillant für diejenigen, die den Knoten im Backend verwenden. Der Code wird für Knotenentwickler viel sauberer, wenn sie NPM -Module sowohl am vorderen als auch am hinteren Ende eines Projekts verwenden. Wenn Sie Browserify noch keinen Aufschlag gegeben haben, versuchen Sie es in Ihrem nächsten JavaScript -Projekt und prüfen Sie, ob es Ihre Welt rockt.

Andere Ressourcen

Es gibt eine Menge anderer Browserify -Ressourcen. Ein paar praktische Teile, die Sie sich vielleicht ansehen möchten:

  • Das Browserify -Handbuch - James Hallidays ist so wertvolles Handbuch zum Start mit Browserify. Auf jeden Fall einen Lesen wert!
  • GULP BROWSERIFIFIERT: Der alles Beitrag von Dan Tello - Wirklich gründlicher Artikel, der fortgeschrittenere Verwendungen zeigt.
  • Und genau wie dieser Grunzen und Forderung ist nicht mehr um Schluck und Browserify - Martin Genev spricht über seine plötzliche Bekehrung in Browserify und Gulp mit einem Beispiel.
  • Eine Einführung in gulp.js - Weitere Informationen zur Verwendung von Gulp von Craig Buckler.

häufig gestellte Fragen (FAQs) zum Start mit Browserify

Was ist der Hauptzweck des Browserify? Mit dem Browserify können Sie im Browser („Module“) benötigen, indem Sie alle Ihre Abhängigkeiten bündeln. Dieses Tool ist besonders nützlich, da Sie die meisten NPM -Pakete direkt im Browser verwenden können, was den Entwicklungsprozess erheblich beschleunigen kann. Im Gegensatz zu anderen Modulbundlern wurde Browserify speziell entwickelt, damit Entwickler Module im Stil von Node.JS für den Browser schreiben können. Dies geschieht durch rekursive Analyse aller Anforderungsaufrufe in Ihrer App, um ein Bündel zu erstellen, das Sie dem Browser in einem einzigen Skript -Tag dienen können. Browserify verfügt außerdem über ein reichhaltiges Plugin -Ökosystem, mit dem Sie Ihren Build in hohem Maße anpassen können.

Wie kann ich Browserify installieren? Paketmanager). Der Befehl hierfür ist "NPM Install -g -Browserify". Nach der Installation können Sie es aus der Befehlszeile verwenden, um Ihre JavaScript -Dateien zu bündeln.

Wie kann ich Browserify in meinem Projekt verwenden? Das CommonJS -Modulformat. Anschließend können Sie Browserify aus der Befehlszeile verwenden, um Ihre Haupt -JavaScript -Datei zusammen mit allen Abhängigkeiten in eine einzige Datei zu bündeln. Diese gebündelte Datei kann dann mit einem Skript -Tag in Ihrer HTML -Datei aufgenommen werden.

Kann ich ES6 -Module mit Browserify verwenden? . Sie können dies tun, indem Sie Babel und die Babelify -Transformation installieren und diese dann in Ihrem Browserify -Befehl verwenden. Verwenden Sie die meisten NPM -Pakete direkt im Browser. Dazu müssen Sie das Paket zunächst mit NPM installieren. Dann können Sie das Paket in Ihrer JavaScript -Datei benötigen, und Browserify sorgt dafür, dass es in Ihrem Bundle enthalten ist. Verwenden Sie Ihren Code. Beispielsweise können Sie die Babelify -Transformation verwenden, um Ihren ES6 -Code in ES5 -Code zu kompilieren. Transformationen können global oder auf bestimmte Dateien angewendet werden, und Sie können mehrere Transformationen in Ihrem Projekt verwenden.

Wie kann ich meinen gebündelten Code debuggen? Karten, die Ihnen helfen können, Ihren gebündelten Code zu debuggen. Um eine Quellkarte zu generieren, können Sie die Option "–Debug" in Ihrem Browserify -Befehl verwenden. Dies enthält Quellzuordnungsdaten in Ihr Bundle, die dann von den Entwickler -Tools des Browsers verwendet werden können, um Ihren Code zu debuggen. 🎜> Ja, Sie können Browserify mit Aufgabenläufern wie Gulp oder Grunzen verwenden. Sowohl Gulp als auch Grunt haben Plugins zur Verfügung, mit denen Browserify in Ihren Build -Prozess integriert werden kann. Dies kann dazu beitragen, Ihre JavaScript -Dateien zu bündeln.

Wie kann ich mein Bündel für die Produktion optimieren? Eine übliche Methode besteht darin, Ihr Bundle mithilfe eines Tools wie UglifyJs zu minimieren. Sie können auch das Plugin "Tinyify" verwenden, ein Browserify -Plugin, das verschiedene Optimierungen für Ihr Bundle anwendet, um es so klein wie möglich zu machen.

Das obige ist der detaillierte Inhalt vonErste Schritte mit Browserify. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage