VorwortTägliche Tauben, Feuerzange Liu Ming Dies ist ein auf Vite basierendes React-Projekt und die Entwicklungserfahrung ist großartig. Erstellen Sie ein Vite-ProjektGarn erstellen @vitejs/app Wie oben gezeigt, ist die voreingestellte Vorlage react-ts ausgewählt. Wenn ein Projekt wie das folgende erscheint yarn //Abhängigkeiten installieren yarn dev //Entwicklungsumgebung starten Öffnen Sie den Browser und geben Sie http://localhost:3000/#/ ein, wie in der Abbildung oben gezeigt. Dann herzlichen Glückwunsch, Sie können React-Projekte normal entwickeln. Beenden von Sprinkle Flowers Wenn das nicht funktioniert, gehen Sie auf die offizielle Website von Vite. Dort finden Sie ausführlichere Informationen als das, was ich geschrieben habe. RenovierungsprojektDas Obige ist jedoch nur eine grundlegende React-Demo. In tatsächlichen Entwicklungsprojekten reicht dies bei weitem nicht aus und erfordert einige zusätzliche Projektkonfigurationen. VerzeichniskonventionenEntsprechend den täglichen Entwicklungsgewohnheiten erstellen Sie zunächst grundlegende Verzeichniskonventionen ├── dist/ // Standardverzeichnis für Build-Ausgabe └── src/ // Quellcodeverzeichnis ├── asset/ // Verzeichnis für statische Ressourcen ├── config ├── config.js // Grundlegende Konfiguration im Zusammenhang mit dem internen Geschäft des Projekts ├── components/ // Öffentliches Komponentenverzeichnis ├── service/ // Verwaltung von Geschäftsanforderungen ├── store/ // Gemeinsam genutztes Verzeichnis für die Store-Verwaltung ├── till/ // Verzeichnis der Tool-Funktionen ├── pages/ // Seitenverzeichnis ├── router/ // Verzeichnis der Routing-Konfiguration ├── .main.tsx // Haupteintrag der Vite-Abhängigkeit ├── .env // Konfiguration der Umgebungsvariablen ├── vite.config.ts // Auswahl der Vite-Konfiguration, weitere Informationen finden Sie auf der offiziellen Website-API └── Paket.json Konfigurieren von Routen Ändern Sie main.tsx React von „react“ importieren ReactDOM von „react-dom“ importieren importiere { HashRouter, Route, Switch } von 'react-router-dom' importiere routerConfig aus './router/index' importiere './base.less' ReactDOM.render( <Reagieren.StrictMode> <HashRouter> <Schalter> { routerConfig.routes.map((route) => { zurückkehren ( <Routenschlüssel={route.pfad} {...route} /> ) }) } </Schalter> </HashRouter> </React.StrictMode>, document.getElementById('root') ) Router/index.ts-Dateikonfiguration BlogsList aus '@/pages/blogs/index' importieren Importiere BlogsDetail aus '@/pages/blogs/detail' Standard exportieren { Routen: [ { exakt: true, Pfad: '/', Komponente: BlogsList }, { exact: true, Pfad: '/blogs/detail/:article_id', Komponente: BlogsDetail }, ], } Sie können auf die obige Konfiguration verweisen und andere Eigenschaften konfigurieren, z. B. Umleitung, Lazy Loading und andere allgemeine Routing-Konfigurationselemente. Darüber hinaus ziehe ich es persönlich vor, Routen durch Konfiguration zu generieren, und herkömmliches Routing fühlt sich immer unbequem an. Dienstverwaltung Alle Projektanfragen werden in Betrieb genommen. Es wird empfohlen, dass jedes Modul über eine entsprechende Dateiverwaltung verfügt, wie unten gezeigt importiere * als Information aus './information' importiere * als Basis von './base' exportieren { Information, Base } Dies erleichtert das Anforderungsmanagement base.ts ist eine Business-Request-Klasse, in der Sie einige spezielle Geschäftsprozesse abwickeln können importiere { Anfrage } von '../until/request' Konstantenpräfix = "/API" exportiere const getAllInfoGzip = () => { Rückgabeanforderung({ URL: `${prefix}/apis/random`, Methode: 'GET' }) } Als einheitliche Anforderungsmethode kann till/request angepasst und durch Anforderungsbibliotheken wie fetch und axios ersetzt werden. Gleichzeitig kann allgemeine Abfanglogik in dieser Methode gekapselt werden. importiere qs von „qs“ importiere Axios von „Axios“; Schnittstelle IRequest { URL: Zeichenfolge Parameter?: SVGForeignObjectElement Abfrage?: Objekt Header?: Objekt Methode?: "POST" | "OPTIONS" | "GET" | "HEAD" | "PUT" | "DELETE" | undefiniert } Schnittstelle IResponse { Anzahl: Nummer Fehlermeldung: Zeichenfolge klassifizieren: Zeichenfolge Daten: beliebig Detail?: irgendein img?: Objekt } export const request = ({ url, params, query, header, method = 'POST' }: IRequest): Promise<IResponse> => { returniere neues Promise((lösen, ablehnen) => { axios(Abfrage ? `${url}/?${qs.stringify(Abfrage)}` : URL, { Daten: Parameter, Überschriften: Überschrift, Methode: Methode, }) .then(res => { auflösen(res.data) }) .catch(Fehler => { ablehnen(Fehler) }) }) } Informationen zum spezifischen allgemeinen Abfangen finden Sie in der Axios-Konfiguration, oder schreiben Sie sie selbst neu, um sie Ihren eigenen Geschäftsanforderungen anzupassen. Es gibt ein Problem mit den hier mit Axios erstellten Ressourcen. Verwenden Sie sie nicht direkt. Bitte beachten Sie die vorherige Anforderungskapselung und ersetzen Sie sie durch Fetch. Wenn Klassenkameraden sie erfolgreich erstellt haben, hinterlassen Sie bitte eine Nachricht = =! Bei der Entwicklung und Verwendung eines bestimmten Geschäfts können Sie es entsprechend dem Modulnamen importieren, sodass Sie das entsprechende Schnittstellenmodul leicht finden können importiere { Informationen } von "@/service/index"; const { data } = warte auf Informationen.getAllInfoGzip({ id }); Dieser Regelsatz kann auch auf Orte angewendet werden, an denen Module zerlegt werden können, wie z. B. Store, Router, Dienstprogramme usw., was der Projektwartung förderlich ist. Oben sind einige Geschäftsentwicklungskonfigurationen und -vereinbarungen für das Projekt aufgeführt. Die Studierenden können sie entsprechend den Bestimmungen und Präferenzen ihres eigenen Teams ändern. Andere KonfigurationHier geht es hauptsächlich um die Konfiguration von vite.config.ts und einige zusätzliche Konfigurationen für das gesamte Projekt. importiere { defineConfig } von 'vite' importiere reactRefresh von '@vitejs/plugin-react-refresh' importiere vitePluginImp von „vite-plugin-imp“ exportiere Standard-DefineConfig({ Plugins: [ reagierenRefresh(), vitePluginImp({ Bibliotheksliste: [ { Bibliotheksname: "antd-mobile", Stil(Name) { gibt `antd-mobile/lib/${name}/style/index.css` zurück }, }, ] }) ], lösen: { Erweiterungen: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'], Alias: { '@': '/Quelle' } }, Server: { Proxy: { // Option zum Schreiben von '/api': { Ziel: 'https://www.xxx.xxx', changeOrigin: wahr, umschreiben: (Pfad) => Pfad.ersetzen(/^\/api/, '') }, } }, css: { postcss: { Plugins: [ require('postcss-pxtorem')({ // Konvertiere px-Einheiten in rem-Einheiten rootValue: 32, // Konvertierungsbasis, der Standardwert ist 100, daher wird die Schriftgröße des Root-Tags auf 1rem=50px gesetzt, damit du aus dem Designentwurf abmessen kannst, wie viele px du haben möchtest und direkt im Code weitere px hinzufügen kannst propList: ['*'], //Eigenschaftsselektor, * steht für allgemeine Einheitspräzision: 5, //Die Dezimalzahl, auf die die REM-Einheit anwachsen darf, und die Anzahl der Ziffern, die nach dem Dezimalpunkt beibehalten werden. exclude: /(node_module)/, // Standard ist false, Sie können (reg) reguläre Ausdrücke verwenden, um bestimmte Ordner auszuschließen}) ] } } }) Es gibt auch einige grundlegende Inhalte:
{ "Compileroptionen": { "Basis-URL": "./", "Pfade": { "@/*": [ "Quelle/*" ] }, } Sie können „antd-mobile“ durch „antd“ ersetzen, und Sie können auch „postcss“ nach Ihren Wünschen ersetzen. Durch die oben erwähnte einfache Transformation kann nun eine normale Kleinprojektentwicklung durchgeführt werden. Fertig und mit Blumen bestreut! Und ich habe mit dieser Konfiguration ein einfaches H5-Projekt geschrieben und werde die Vorlage im Laufe der Projektiteration schrittweise verbessern. Dies ist das Ende dieses Artikels über die Schritte zum Erstellen eines React-Projekts mit Vite. Weitere Informationen zum Erstellen eines React-Projekts mit Vite finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop
>>: Tutorial zur Installation und Konfiguration von MySql5.7 in Alibaba Cloud ECS centos6.8
Warum ist die Geschwindigkeit beim Öffnen des lok...
Anmerkung des Herausgebers: Dieser Artikel wurde ...
Ich verwende hier das Ubuntu 16.04-System. Instal...
Docker virtualisiert eine Brücke auf dem Host-Rec...
Ich denke, dies ist ein Problem, auf das viele Leu...
Methode 1: Verwenden Sie den Befehl SET PASSWORD ...
Bevor wir awk lernen, sollten wir sed, grep, tr, ...
Der einfache Rechner des WeChat-Applets dient Ihn...
Lernen Sie jeden Tag ein schwebendes jQuery-Plug-...
Sie können die Trigger-Methode verwenden. In JavaS...
Inhaltsverzeichnis Überblick Was ist Lazy Loading...
Ich habe gelernt, wie man https bekommt. Kürzlich...
Wir alle wissen, dass die Leistung von Anwendunge...
Bei der getrennten Entwicklung von Front-End und ...
Originalquelle: www.bamagazine.com Enge Bereiche ...