Hintergrund Verwenden Sie in Unternehmensprojekten immer noch „Neue Seite erstellen“ => „Inhalt zur Seite hinzufügen“, wenn Sie auf neue Anforderungen stoßen, z. B. „Vue-Vorlage“ => „Routing hinzufügen“. Finden Sie das nicht lästig? Wenn ja, warum probieren Sie nicht den automatisierten Build aus? Er ist so gut! Wie funktioniert die automatisierte Konstruktion von element-ui? An Open-Source-Projekten, insbesondere an der Entwicklung von UI-Bibliotheken, arbeiten zu viele Leute zusammen und jeder hat andere Programmiergewohnheiten. Darüber hinaus umfasst jede Komponente in der UI-Bibliothek auch Mehrsprachigkeit, Unit-Tests, Routing, Komponenten-Readme.md-Dokumente und andere Dateien. Daher wäre es zu mühsam, diese jedes Mal langsam zu erstellen, und wenn mehrere Personen öffentliche Dateien wie Routing-Dateien ändern, führt dies zu zahlreichen Konflikten. Daher gibt es in Open-Source-Projekten viele Skripte zum automatischen Generieren bestimmter Dateien. Makefile Im Stammverzeichnis des Element-UI-Projekts befindet sich ein Makefile. Die Funktion jedes Befehls steht in den Kommentaren. Windows-Benutzer müssen den Befehl „make“ verwenden, um das herunterzuladende Skript auszuführen. Mac-Benutzer brauchen dies nicht. @# Der Standardkommentar #wird im Protokoll ausgegeben, @# hingegen nicht. Die Rolle von PHONY: Ignorieren Sie die Prüfung auf Konflikte mit den Verzeichnissen dist und test im folgenden Skriptbefehl, was bedeutet, dass der Befehl trotzdem ausgeführt wird. PHONY: dist test @# Beim Ausführen des Make-Befehls wird standardmäßig das Hilfeskript ausgeführt: help @# Das Ausführen von „make build-theme“ bedeutet, dass das Skript „npm run build:theme“ ausgeführt wird. @#: Der auszuführende Befehl steht vor dem Doppelpunkt, und die erste Zeile nach dem Doppelpunkt sollte ein Tabulator sein, gefolgt vom Skriptbefehl @#. Das heißt, das Folgende ist „tab+npm npm build: theme“ # alle Themen erstellen @# Der obige Kommentar zum Build-Theme ist im Screenshot unten zu sehen, und „Build-Theme“ wird im Protokoll ausgegeben: npm führt build:theme aus installieren: npm installieren Entwickler: npm-Ausführung dev @# $() ist die zu verwendende Funktion. @# $@ ist der aktuelle Befehl selbst, z. B. „make new“, $@ ist neu. @# MAKECMDGOALS ist eine spezielle Variable, die die durch die Befehlszeilenparameter angegebene Zielliste aufzeichnet. Das heißt, mit dieser Variable können wir die Befehlszeilenparameter abrufen. @# Wenn wir beispielsweise eine neue Komponente erstellen, verwenden wir das Skript `make new wailen`. MAKECMDGOALS ist gleich wailen @# Filter-out-Antifilterfunktion, filtert alle Inhalte heraus, die $@ in $(MAKECMDGOALS) enthalten. @# Kombiniert mit dem Inhalt von new.js besteht die Bedeutung des folgenden Skripts darin, eine neue Komponente zu erstellen und den Komponentennamen zu übergeben. Der Komponentenname darf nicht „new“ sein. Wenn der Komponentenname „new“ ist, können Sie den folgenden Screenshot „new“ sehen: Knotenbuild/bin/new.js $(Filter-out $@,$(MAKECMDGOALS)) @# Einige Skripte wurden ausgelassen. Wenn Sie interessiert sind, können Sie die Hilfe zum Quellcode lesen: @echo " \033[35mmake\033[0m \033[1mBefehlsanweisungen\033[0m" @echo " \033[35mmake install\033[0m\t\033[0m\t\033[0m\t\033[0m\t--- Abhängigkeiten installieren" @echo " \033[35mmake new <component-name> [Chinesischer Name]\033[0m\t--- Erstellen Sie ein neues Komponentenpaket. Zum Beispiel 'make new button button'" @echo " \033[35mmake dev\033[0m\t\033[0m\t\033[0m\t\033[0m\t--- Entwicklungsmodus" @echo " \033[35mmake dist\033[0m\t\033[0m\t\033[0m\t\033[0m\t--- Kompiliere das Projekt und erzeuge die Zieldatei" @echo " \033[35mmake deploy\033[0m\t\033[0m\t\033[0m\t\033[0m\t--- Demo bereitstellen" @echo " \033[35mmake pub\033[0m\t\033[0m\t\033[0m\t\033[0m\t--- In npm veröffentlichen" @echo " \033[35mmake new-lang <lang>\033[0m\t\033[0m\t\033[0m\t--- Fügt der Site eine neue Sprache hinzu. Zum Beispiel 'make new-lang fr'" # Kommentarausgabe Filtern Sie das neue Schlüsselwort. Wenn der eingehende Parameter neu ist, filtern Sie ihn heraus. Wenn Sie make nicht verwenden möchten, können Sie das Node-Skript natürlich auch direkt ausführen. Beispielsweise entspricht der Komponentenname „make new“ dem Komponentennamen „node build/bin/new.js“. neu.jsnew.js ist die Kerndatei der Automatisierung. Lassen Sie uns zunächst darüber nachdenken. Das Erstellen einer Komponentendatei umfasst nicht mehr als zwei Schritte.
Datei speichern Hauptsächlich über das File-Save-Paket, um Dateien zu erstellen und Inhalte hinzuzufügen. Schauen wir uns zunächst die API an const fileSave = erfordern('Datei speichern'); const Inhalt = "const fs = erfordern('fs');" const callback = () => { console.log('Skriptausführung') } fileSave('Dateipfad') .write('Dateiinhalt wie der obige Inhalt', 'utf8', Rückruf) // Erfolgreiches Schreiben des Inhalts löst den Rückruf aus.write('Weiter Inhalt hinzufügen', 'utf8') .end('\n') // Dateivorgang endet mit einer leeren Zeile Dadurch wird die folgende Datei generiert Weitere Dokumentation finden Sie unter file-save In Element-UI wird ein Files-Array-Objekt verwendet, um den Dateinamen und den Codeinhalt zu verwalten, die erstellt werden müssen. Auf diese Weise können Sie durch direktes Loopen von Dateien die entsprechenden Dateien erstellen. // Paket erstellen // Von der Komponente generiertes Verzeichnis const PackagePath = path.resolve(__dirname, '../../packages', componentname); Dateien.fürJedes(Datei => { fileSave(Pfad.Join(Paketpfad, Datei.Dateiname)) .write(Datei.Inhalt, 'utf8') .ende('\n'); }); Änderung referenzierter Ressourcendateien Darüber hinaus müssen Sie nach dem Erstellen einer Komponente normalerweise die entsprechenden Stellen ändern, an denen auf die Komponente verwiesen werden muss, z. B. die Routing-Konfigurationsdatei. Wir können entsprechende Routen auch durch Dateispeichern hinzufügen. Beim Speichern der Datei selbst wird der Inhalt der vorherigen Datei überschrieben, d. h., die Datei wird nach dem Löschen neu erstellt. Wenn Sie den ursprünglichen Inhalt ergänzen möchten, müssen Sie daher den Inhalt der Originaldatei abrufen und anschließend den neuen Inhalt hinzufügen. Das können wir tun: const fileSave = erfordern('Datei speichern'); const fs = erfordern('fs'); const Inhalt = `const fileSave = erforderlich('Datei speichern'); ` const oldCode = fs.readFileSync('./demo.js') DateiSpeichern('demo.js') .write(alterCode+Inhalt, 'utf8') .ende('\n') Das heißt, lesen Sie den alten Inhalt der Datei über das fs-Modul und fügen Sie ihn dann zusammen. Element-ui macht Folgendes: fs.createWriteStream Das Prinzip der Dateispeicherung besteht darin, die API fs.createWriteStream zu kapseln. const fs = erfordern('fs') //Erstellen Sie ein Objekt der beschreibbaren Stream-Klasse fs.WriteStream, geerbt von <stream.Writable> const writer = fs.createWriteStream('createStream.js', { // Datei suchen und erstellen, falls sie nicht existiert // Der Standardwert ist w. Beim Schreiben von Daten durch Aufrufen der Methode writer.write wird der gesamte Inhalt der Datei direkt überschrieben. // Dadurch werden alle vorherigen Inhalte der Datei gelöscht und neue Daten geschrieben. Flags: „w“ }) //Daten in den Stream schreiben writer.write('Neuer Inhalt dieser Datei') Der Quellcode von file-save kann im folgenden Pseudocode angezeigt werden. const savefs = {} savefs._create_dir = Funktion (fp, Optionen) { mkdirp.sync(fp, opts); } savefs.wstream = Funktion (Datei) { var ws = fs.createWriteStream(Datei); dieser.writer = ws; gib dies zurück; } savefs.write = Funktion(Chunk, Kodierung, cb) { ... } savefs.end = Funktion(Chunk, Kodierung, cb) { ... } savefs.finish = Funktion(cb) { ... } savefs.error = Funktion(cb) { ... } exportiere { savefs } Natürlich können wir die fs.writeFile-API von Node verwenden, um Dateien direkt zu erstellen. fs.writeFile('Dateipfad', 'zu schreibender Inhalt', ['Kodierung'], 'Rückruffunktion'); Sie können feststellen, dass die Parameter die gleichen sind wie beim Speichern von Dateien Zusammenfassen Letztendlich ist die automatisierte Komponentenerstellung nichts anderes als das Hinzufügen von Inhalten zu zwei Kernerstellungsdateien. Diese beiden Vorgänge können über das Dateispeicherpaket erreicht werden. Anschließend können wir den Pfad und den Inhalt der generierten Dateien in Kombination mit unserem eigenen Geschäft konfigurieren und die Verweise einiger öffentlicher Dateien auf die neuen Dateiressourcen ändern. Glauben Sie, dass das Schreiben von Skripten in Node viel interessanter ist als das Schreiben von Backends? Dies ist das Ende dieses Artikels über das Implementierungsbeispiel zur Verwendung von Elementskripten zum automatischen Erstellen neuer Komponenten. Weitere Inhalte zu Elementskripten zum automatischen Erstellen neuer Komponenten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Eine kurze Diskussion über HTML-geordnete Listen, ungeordnete Listen und Definitionslisten
Im Vorstellungsgespräch sollten Sie folgende Szen...
Zuerst müssen Sie Vue-cli installieren: npm insta...
Da ich heute nichts zu tun habe, habe ich ein paa...
Es gibt keine Lösung für die chinesische Eingabem...
Hafen Harbor ist eine Open-Source-Lösung zum Erst...
Wenn Sie den Eindruck haben, dass ein Problem mit...
Remotebereitstellung der MySQL-Datenbank unter Li...
Inhaltsverzeichnis Überblick Erstellen Sie eine T...
Viele Mobiltelefone verfügen mittlerweile über di...
Vorwort Eine der Funktionen eines Interceptors be...
1. Implementierungsprinzip des Scrollens Das Scro...
Heute habe ich ein Problem in HTML gefunden. Es s...
Um mit Standard-CSS3 den Schatteneffekt eines Ele...
Inhaltsverzeichnis Vorwort Aufgabenliste tun Sie ...
Einführung Mit Animation können Sie mithilfe von ...