Dieses Mal werde ich Ihnen die Schritte zur Optimierung mit vue-admin-template ausführlich erläutern. Was sind die Vorsichtsmaßnahmen für die Verwendung von vue-admin-template zur Optimierung? , lass uns einen Blick darauf werfen.
Vorwort
Das Unternehmen verfügt über mehrere Projekte mit Backend-Managementsystemen. Um die Entwicklung zu erleichtern, haben wir uns für die beliebte Backend-Vorlage in vue entschieden. Als Basisvorlage entwickelt. Als ich anfing, es zu verwenden, hat der Autor dies jedoch nicht optimiert. Als das Projekt online ging, stellte ich fest, dass die gepackten Dateien sehr groß waren und nur ein Anbieter ein Volumen von 770 KB hatte (das Bild unten ist die Basisvorlage, alles). ist Ohne gepackte Dateiinformationen hinzuzufügen):
kann über webpack-bundle-analyzer
analysiert werden. Das Volumen stammt hauptsächlich aus der Ele.me-Benutzeroberfläche (Volumen beträgt 500 KB), da es vorhanden ist nein richtig Es führt teilweise geteilte Komponenten ein, was dazu führt, dass Webpack die gesamte Komponentenbibliothek verpackt. Das zweite ist Vue selbst, das eine Größe von 80 KB hat.
Daher ist es dringend erforderlich, die Verpackung zu optimieren.
Optimierung
Die Hauptziele der Optimierung sind:
Beschleunigen Sie das Laden von Ressourcen und reduzieren Sie die Wartezeit des Benutzers und die Zeit auf dem weißen Bildschirm auf der Startseite, um das Benutzererlebnis zu verbessern.
Beschleunigen Sie die Verpackung und verschwenden Sie keine Zeit mit dem Warten auf die Verpackung.
Um das erste Problem zu lösen, werden viele Leute denken, dass Ressourcendateien auf CDN platziert werden können. Ja, dieses Mal werden wir das Ladeproblem über CDN lösen.
CDN – Ladegeschwindigkeit verbessern
Ausgereiftere Frameworks/Komponentenbibliotheken wie Vue und Element UI sind im Allgemeinen kostenlos und mit hoher Geschwindigkeit verfügbar cdn ist für Entwickler gedacht. Da sich die meisten Benutzer in China befinden, wird dieses Mal die bootcdn-Bibliothek verwendet. Die beliebten Ressourcen dieser Bibliothek sind relativ vollständig, in verschiedenen Versionen verfügbar und die inländische Zugriffsgeschwindigkeit ist sehr hoch, was für Entwickler einfach eine gute Nachricht ist.
Führen Sie Vue- und Ele.me-Komponenten in index.html
ein.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Da Abhängigkeiten von außen importiert werden, muss Webpack beim Packen über die Quelle der Abhängigkeiten informiert werden.
Änderungwebpack.base.conf.js
:
1 2 3 4 5 6 7 |
|
Noch einmal verpackt, die Paketgröße wurde tatsächlich stark reduziert, von 700k auf 130k:
Aber dann gibt es Probleme:
Natürlich entwickle ich lokal, aber aufgrund der Einführung der Online-Produktionsversion der Vue-Datei kann dies bei vue-dev-tools nicht der Fall sein debuggt.
Daher müssen wir die Konfiguration des Webpacks erneut anpassen, webpack.base.conf.js
, und das vom Webpack injizierte js befindet sich immer am Ende, daher benötigen wir html-webpack-include-assets-plugin
, um beim Einfügen app.js
nach der entsprechenden Komponentenbibliothek zu helfen :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
OK. Zu diesem Zeitpunkt können Sie nicht nur die Paketgröße berücksichtigen, sondern auch das Vue-Dev-Tool zum Debuggen im Entwicklungsmodus verwenden.
DLL – Paketierungsgeschwindigkeit verbessern
Frontends, die häufig Pakete erstellen, werden dies oft finden, um bestimmte Fehler zu beheben (z. B Versprechen im IE-Fehler unter Safari) und ein neues Polyfill wurde eingeführt. Nach dem Packen wurde jedoch festgestellt, dass sich der Hashwert des Anbieters geändert hat und der gesamte Anbieter nur eine neue Abhängigkeit von es6-promise
hinzugefügt hat, aber der Preis Bezahlt ist, dass der vorherige Anbieter verworfen werden muss. Wenn der Benutzer den Paketanbieter erneut besucht, muss er oder sie erneut einen brandneuen Anbieter auswählen, was ziemlich kostspielig ist.
Derzeit hat die Verwendung der dllPlugin-Verpackung Vorteile. Beim offiziellen Packen können diese Module zunächst übersprungen und nicht mehr wiederholt in den Anbieter gepackt werden. Dies verbessert die Paketierungsgeschwindigkeit und verringert auch die Größe des Anbieters.
如,后台管理系统基础模块基本有以下几个:
axios: ajax 请求。
vuex: 全局状态管理。
js-cookie: 前端处理 cookie
vue-router: 路由管理。
这四个基础模块几乎是必须的,那么可以先提取出来。
step 1 打包基础模块
先在 build
文件夹下新建一个用于打包 dll 的配置文件 webpack.dll.conf.js
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
|
然后在 package.json
中加入一条命令:
1 2 3 4 5 6 7 |
|
执行 yarn build:dll
或者 npm run build:dll
即可完成打包 dll。执行完成后:
1 2 3 4 5 6 7 8 9 10 11 |
|
同时,可以在 build
目录下,找到各个模块对应关系文件 vendors-manifest.json
和 static/js
下的 vendor.dll.js
。
step 2 页面中引入 vendor
打包后的 dll 文件需要手动在 index.html
引入:
1 2 3 |
|
step 3 告诉 webpack 使用 dllPlugin 进行打包
修改 build/webpack.prod.conf.js
:
1 2 3 4 5 6 7 8 9 10 |
|
再次打包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
发现 vendor 现在只有 40k 的体积,减少了一半的体积,而且打包速度也快了 2s,而相对于最开始的基础模板,打包速度快了 12s,这是很让人欣慰。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
如何使用v-model与promise两种方式实现vue弹窗组件
怎样使用Vue+Jwt+SpringBoot+Ldap完成登录认证
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Optimierungsschritte mit vue-admin-template. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!