Maison interface Web js tutoriel Comment accélérer et optimiser le code vue-cli

Comment accélérer et optimiser le code vue-cli

Apr 13, 2018 pm 03:49 PM
vue-cli 代码 优化

Cette fois, je vais vous montrer comment accélérer et optimiser le code vue-cli Quelles sont les précautions pour accélérer et optimiser le code vue-cli. cas, jetons un coup d'oeil.

Avant-propos

Avec la mondialisation de Vue, divers frameworks de composants Vue sont devenus de plus en plus parfaits, depuis les premiers éléments-ui jusqu'à vux, iview et d'autres projets de haute qualité, l'utilisation de Vue pour la construction frontale est déjà une tâche d'ingénierie, Modularisation, choses agiles

Parmi eux, je pense que de nombreuses personnes choisiront le modèle de projet d'initialisation officiel vue-cli, puis le développeront et le construiront en introduisant des frameworks et des outils de composants tiers. Je recommande personnellement fortement cette approche. Cependant, le modèle de projet initialisé par vue-cli s'adresse à tous les développeurs après tout, et il y aura certains compromis en termes de compatibilité. Je pense que de nombreuses personnes ont recherché divers articles sur l'optimisation de la construction de webpacks, mais beaucoup d'entre eux sont soit trop anciens, soit peu rigoureux

Cet article espère trouver un équilibre entre une optimisation fastidieuse et une amélioration des performances de build, c'est-à-dire passer le moins de temps et apporter le moins de modifications au modèle officiel pour obtenir une amélioration maximale des performances de build

Pensées

Dans les premières versions de vue-cli et webpack2, les configurations optimisées suivantes circulaient sur Internet, mais en fait, les nouvelles versions de vue-cli et webpack3 ne nécessitent plus

  1. Utilisez ParallelUglifyPlugin pour remplacer UglifyPlugin (la nouvelle version d'UglifyPlugin prend déjà en charge et active la construction parallèle multithread par défaut, cette étape n'est donc pas nécessaire)

  2. Activer Scope Hoisting de webpack3 (la nouvelle version de vue -cli a été configuré avec webapck3, Et cette configuration a été activée par défaut)
  3. Faites bon usage de l'alias (la nouvelle version de vue-cli a déjà fait ce travail)
  4. Configurer CommonsChunkPlugin pour extraire le code public (la nouvelle version de vue-cli l'a déjà fait)
Pour la nouvelle version de vue-cli et webpack3, la configuration simple suivante peut augmenter la vitesse de construction d'au moins 2 fois après optimisation

  1. Référence sur demande

  2. Activer le projet de construction multicœur happypack
  3. Modifier la configuration de la carte source
  4. Activer DllPlugin et fichiers de bibliothèque précompilés DllReferencePlugin

Pratique

1. Devis sur demande

1.1 Presque tous les frameworks de composants tiers fournissent des méthodes de référence à la demande pour les composants. En prenant iview comme exemple, en utilisant le plug-in babel-plugin-import, vous pouvez charger des composants à la demande et réduire la taille du fichier. pour modifier le fichier .babelrc

npm install babel-plugin-import --save-dev
// .babelrc
{
 "plugins": [["import", {
 "libraryName": "iview",
 "libraryDirectory": "src/components"
 }]]
}
Copier après la connexion
1.2 Introduisez ensuite les composants nécessaires pour réduire la taille

import { Button } from 'iview'
Vue.component('Table', Table)
Copier après la connexion

2. Activer le projet de construction multicœur happypack

Après avoir installé happypack, modifiez le fichier /build/webpack.base.conf.js

npm install happypack --save-dev
// /build/webpack.base.conf.js
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
// 增加HappyPack插件
plugins: [
 new HappyPack({
  id: 'happy-babel-js',
  loaders: ['babel-loader?cacheDirectory=true'],
  threadPool: happyThreadPool,
 })
 ]
// 修改引入loader
{
 test: /\.js$/,
 // loader: 'babel-loader',
 loader: 'happypack/loader?id=happy-babel-js', // 增加新的HappyPack构建loader
 include: [resolve('src'), resolve('test')]
}
Copier après la connexion

3. Modifier la configuration de la carte source

3.1 Modifiez d'abord le fichier /config/index.js

// /config/index.js
dev环境:devtool: 'eval'(最快速度)
prod环境:productionSourceMap: false(关闭source-map)
Copier après la connexion
3.2 Modifiez ensuite le fichier /src/main.js et désactivez les informations de débogage de l'environnement de production

// /src/main.js
const isDebug_mode = process.env.NODE_ENV !== 'production'
Vue.config.debug = isDebug_mode
Vue.config.devtools = isDebug_mode
Vue.config.productionTip = isDebug_mode
Copier après la connexion

4. Activer les fichiers de bibliothèque précompilés DllPlugin et DllReferencePlugin

C'est l'étape la plus compliquée et la plus évidente pour améliorer l'effet. Le principe est de compiler et de conditionner les fichiers de bibliothèques tierces séparément une fois. Il n'est pas nécessaire de compiler et de conditionner les bibliothèques tierces dans les versions suivantes

4.1 Ajoutez le fichier build/webpack.dll.config.js et configurez les modules qui doivent être DLL séparément

4.2 Ajoutez les plug-ins suivants
const path = require("path")
const webpack = require("webpack")
module.exports = {
 // 你想要打包的模块的数组
 entry: {
  vendor: ['vue/dist/vue.esm.js', 'axios', 'vue-router', 'iview']
 },
 output: {
  path: path.join(dirname, '../static/js'), // 打包后文件输出的位置
  filename: '[name].dll.js',
  library: '[name]_library'
 },
 plugins: [
  new webpack.DllPlugin({
   path: path.join(dirname, '.', '[name]-manifest.json'),
   name: '[name]_library',
   context: dirname
  }),
  // 压缩打包的文件
  new webpack.optimize.UglifyJsPlugin({
   compress: {
    warnings: false
   }
  })
 ]
}
Copier après la connexion

à build/webpack.dev.conf.js et build/webpack.prod.conf.js 4.3 Ajoutez la commande
new webpack.DllReferencePlugin({
  context: dirname,
  manifest: require('./vendor-manifest.json')
})
Copier après la connexion

dans /package.json 4.4 Ajouter une introduction JS basée sur DLL dans /index.html (doit être introduit en premier)
"dll": "webpack --config ./build/webpack.dll.config.js"
Copier après la connexion

4.5 Exécuter le build
<script src="/static/js/vendor.dll.js"></script>
Copier après la connexion

npm run dll(这一步会生成build/vendor-manifest.json和static/js/vendor.dll.js)
npm run dev 或 npm run build
Copier après la connexion
Post-scriptum

Une fois les quatre étapes principales ci-dessus terminées, nous avons terminé l'optimisation et l'amélioration de la construction du projet de modèle vue-cli. Bien que cela ne semble toujours pas simple, c'est déjà l'optimisation la plus simple, et il y a plus de trucs et astuces par coïncidence. Je ne l'ai pas étendu car je pense que trop de configuration d'optimisation n'a que peu d'importance, mais apportera trop de redondance et de complexité au projet

L'effet réel de la construction de tests de la configuration ci-dessus a été réduit des 13 secondes d'origine à environ 6 secondes, et le déploiement à chaud a même duré des millisecondes

La chose la plus importante est que la configuration la plus simple peut être facilement reconfigurée et utilisée après la mise à niveau future de vue-cli et webpack vers de nouvelles versions. Après une configuration compétente, il ne faut que 5 minutes environ pour restaurer la configuration. Le simple fait de modifier la configuration en 5 minutes peut augmenter la vitesse de chaque build de plus de 2 fois. N'êtes-vous pas un peu excité :)

. Permettez-moi de dire quelques mots supplémentaires ici. En fait, la mise à niveau de webpack2 vers webpack3 est assez décevante, car elle ne résout toujours pas fondamentalement le problème d'une configuration trop complexe en tant que produit construit dans le but d'occuper tous les projets Web. dans le monde, cela devrait être considéré davantage du point de vue de la facilité d'utilisation/de l'humanité

Chaque fois que je regarde les différents .babelrc, .postcssrc.js... et divers .confs dans les fichiers du projet webpack , et même divers fichiers principaux, d'index et d'application. Je ne peux m'empêcher de me plaindre de la raison pour laquelle la construction frontale s'est développée ainsi. Dans un bon projet, il y a plus d'une douzaine de fichiers de configuration<.> , est-ce vraiment nécessaire ? Au départ, je pensais que webpack3 simplifierait tout cela, mais ce n'est pas le cas. Mais comme il n'y a aucun moyen de le changer pour le moment, ce que nous pouvons faire est de comprendre les principes autant que possible et de faire de notre mieux pour simplifier/. optimiser Je pense que vous maîtrisez la méthode de lecture de cet article. Pour plus de passionnant, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !

Lecture recommandée :

HTML+JS pour implémenter une horloge numérique roulante


Comment utiliser la garde de navigation de VueRouter


Explication détaillée des étapes pour implémenter la pagination des tableaux à l'aide de vue+element

                                    

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Discussion sur la stratégie d'optimisation gc de Golang Discussion sur la stratégie d'optimisation gc de Golang Mar 06, 2024 pm 02:39 PM

Le garbage collection (GC) de Golang a toujours été un sujet brûlant parmi les développeurs. En tant que langage de programmation rapide, le garbage collector intégré de Golang peut très bien gérer la mémoire, mais à mesure que la taille du programme augmente, certains problèmes de performances surviennent parfois. Cet article explorera les stratégies d'optimisation GC de Golang et fournira quelques exemples de code spécifiques. La collecte des déchets dans le garbage collector de Golang Golang est basée sur un balayage de marque simultané (concurrentmark-s

Créer et exécuter des fichiers Linux '.a' Créer et exécuter des fichiers Linux '.a' Mar 20, 2024 pm 04:46 PM

Travailler avec des fichiers dans le système d'exploitation Linux nécessite l'utilisation de diverses commandes et techniques qui permettent aux développeurs de créer et d'exécuter efficacement des fichiers, du code, des programmes, des scripts et d'autres éléments. Dans l'environnement Linux, les fichiers portant l'extension « .a » sont d'une grande importance en tant que bibliothèques statiques. Ces bibliothèques jouent un rôle important dans le développement de logiciels, permettant aux développeurs de gérer et de partager efficacement des fonctionnalités communes sur plusieurs programmes. Pour un développement logiciel efficace dans un environnement Linux, il est crucial de comprendre comment créer et exécuter des fichiers « .a ». Cet article explique comment installer et configurer de manière complète le fichier Linux « .a ». Explorons la définition, l'objectif, la structure et les méthodes de création et d'exécution du fichier Linux « .a ». Qu'est-ce que L

Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Jun 01, 2024 am 11:19 AM

La complexité temporelle mesure le temps d'exécution d'un algorithme par rapport à la taille de l'entrée. Les conseils pour réduire la complexité temporelle des programmes C++ incluent : le choix des conteneurs appropriés (tels que vecteur, liste) pour optimiser le stockage et la gestion des données. Utilisez des algorithmes efficaces tels que le tri rapide pour réduire le temps de calcul. Éliminez les opérations multiples pour réduire le double comptage. Utilisez des branches conditionnelles pour éviter les calculs inutiles. Optimisez la recherche linéaire en utilisant des algorithmes plus rapides tels que la recherche binaire.

L'Université Tsinghua et Zhipu AI open source GLM-4 : lancent une nouvelle révolution dans le traitement du langage naturel L'Université Tsinghua et Zhipu AI open source GLM-4 : lancent une nouvelle révolution dans le traitement du langage naturel Jun 12, 2024 pm 08:38 PM

Depuis le lancement du ChatGLM-6B le 14 mars 2023, les modèles de la série GLM ont reçu une large attention et une grande reconnaissance. Surtout après que ChatGLM3-6B soit open source, les développeurs sont pleins d'attentes pour le modèle de quatrième génération lancé par Zhipu AI. Cette attente a finalement été pleinement satisfaite avec la sortie du GLM-4-9B. La naissance du GLM-4-9B Afin de donner aux petits modèles (10B et moins) des capacités plus puissantes, l'équipe technique de GLM a lancé ce nouveau modèle open source de la série GLM de quatrième génération : GLM-4-9B après près de six mois de exploration. Ce modèle compresse considérablement la taille du modèle tout en garantissant la précision, et offre une vitesse d'inférence plus rapide et une efficacité plus élevée. L’exploration de l’équipe technique du GLM n’a pas

Interprétation approfondie : Pourquoi Laravel est-il aussi lent qu'un escargot ? Interprétation approfondie : Pourquoi Laravel est-il aussi lent qu'un escargot ? Mar 07, 2024 am 09:54 AM

Laravel est un framework de développement PHP populaire, mais il est parfois critiqué pour sa lenteur comme un escargot. Qu'est-ce qui cause exactement la vitesse insatisfaisante de Laravel ? Cet article fournira une explication détaillée des raisons pour lesquelles Laravel est aussi lent qu'un escargot sous plusieurs aspects, et la combinera avec des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce problème. 1. Problèmes de performances des requêtes ORM Dans Laravel, ORM (Object Relational Mapping) est une fonctionnalité très puissante qui permet

Décoder les goulots d'étranglement des performances de Laravel : les techniques d'optimisation entièrement révélées ! Décoder les goulots d'étranglement des performances de Laravel : les techniques d'optimisation entièrement révélées ! Mar 06, 2024 pm 02:33 PM

Décoder les goulots d'étranglement des performances de Laravel : les techniques d'optimisation entièrement révélées ! Laravel, en tant que framework PHP populaire, offre aux développeurs des fonctions riches et une expérience de développement pratique. Cependant, à mesure que la taille du projet augmente et que le nombre de visites augmente, nous pouvons être confrontés au défi des goulots d'étranglement en matière de performances. Cet article approfondira les techniques d'optimisation des performances de Laravel pour aider les développeurs à découvrir et à résoudre les problèmes de performances potentiels. 1. Optimisation des requêtes de base de données à l'aide du chargement différé d'Eloquent Lorsque vous utilisez Eloquent pour interroger la base de données, évitez

Créez un agent en une phrase ! Robin Li : L'ère approche où tout le monde sera développeur Créez un agent en une phrase ! Robin Li : L'ère approche où tout le monde sera développeur Apr 17, 2024 pm 02:28 PM

Le grand modèle bouleverse tout, et arrive finalement à la tête de cet éditeur. C'est aussi un Agent qui a été créé en une seule phrase. Comme ça, donnez-lui un article, et en moins d'une seconde, de nouvelles suggestions de titres sortiront. Par rapport à moi, on ne peut dire que cette efficacité est aussi rapide que l'éclair et aussi lente qu'un paresseux... Ce qui est encore plus incroyable, c'est que la création de cet Agent ne prend en réalité que quelques minutes. L'invite appartient à tante Jiang : Et si vous souhaitez également ressentir ce sentiment subversif, désormais, sur la base de la nouvelle plateforme intelligente Wenxin lancée par Baidu, chacun peut créer gratuitement son propre assistant intelligent. Vous pouvez utiliser les moteurs de recherche, les plates-formes matérielles intelligentes, la reconnaissance vocale, les cartes, les voitures et autres canaux écologiques mobiles Baidu pour permettre à davantage de personnes d'utiliser votre créativité ! Robin Li lui-même

Le modèle de code open source Mistral monte sur le trône ! Codestral est fou de formation dans plus de 80 langues, et les développeurs nationaux de Tongyi demandent à participer ! Le modèle de code open source Mistral monte sur le trône ! Codestral est fou de formation dans plus de 80 langues, et les développeurs nationaux de Tongyi demandent à participer ! Jun 08, 2024 pm 09:55 PM

Produit par 51CTO Technology Stack (WeChat ID : blog51cto) Mistral a publié son premier modèle de code Codestral-22B ! Ce qui est fou avec ce modèle, ce n'est pas seulement qu'il est formé sur plus de 80 langages de programmation, dont Swift, etc., que de nombreux modèles de code ignorent. Leurs vitesses ne sont pas exactement les mêmes. Il est nécessaire d'écrire un système de « publication/abonnement » en langage Go. Le GPT-4o ici est en cours de sortie, et Codestral remet le papier si vite qu'il est difficile de le voir ! Le modèle venant tout juste d’être lancé, il n’a pas encore été testé publiquement. Mais selon le responsable de Mistral, Codestral est actuellement le modèle de code open source le plus performant. Les amis intéressés par la photo peuvent se déplacer vers : - Faire un câlin : https

See all articles