


Comment implémenter l'optimisation du packaging du projet webpack2 dans vue-cli
Je vais maintenant partager avec vous un article sur l'optimisation du packaging du projet vue-cli webpack2, qui a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde.
Réduire la portée de la recherche de fichiers
Configurer solve.modules
Resolve.modules de Webpack Configurer le emplacement de la bibliothèque de modules (c'est-à-dire node_modules). Lorsque l'import 'vue' apparaît dans js qui n'est pas un chemin relatif ou absolu, il sera trouvé dans le répertoire node_modules. Cependant, la configuration par défaut sera trouvée via une recherche récursive ascendante, mais il n'y a généralement qu'un seul node_modules dans le répertoire du projet, et il se trouve dans le répertoire racine du projet. Afin de réduire la portée de la recherche, vous pouvez directement spécifier le chemin complet de. node_modules; de même, pour les alias (la même chose s'applique à la configuration de `alias) :
function resolve (dir) { return path.join(__dirname, '..', dir) } module.exports = { resolve: { extensions: ['.js', '.vue', '.json'], modules: [ resolve('src'), resolve('node_modules') ], alias: { 'vue$': 'vue/dist/vue.common.js', 'src': resolve('src'), 'assets': resolve('src/assets'), 'components': resolve('src/components'), // ... 'store': resolve('src/store') } }, ... }
Définir raisonnablement le test, l'inclusion et l'exclusion
test : conditions qui doit être rempli (expression régulière, non Ajouter des guillemets pour correspondre aux fichiers à traiter)
exclure : Conditions qui ne peuvent pas être remplies (exclure les répertoires qui ne sont pas traités)
inclure : Le chemin ou un tableau de fichiers que le fichier importé sera converti par le chargeur (put Les répertoires à traiter sont inclus)
Cela peut réduire les traversées inutiles et ainsi réduire la perte de performances.
Remplacer l'outil de compression de code
Le plug-in UglifyJS fourni par Webpack par défaut est lent en raison de la compression à un seul thread
webpack-parallel ; -uglify- Le plugin plugin peut exécuter le plugin UglifyJS en parallèle, permettant une utilisation plus complète et raisonnable des ressources CPU, ce qui peut réduire considérablement le temps de construction
Bien sûr, le plugin doit être utilisé dans l'environnement de production ; plutôt que l'environnement de développement. Après avoir installé le plugin, procédez comme suit Configuration :
// 删掉webpack提供的UglifyJS插件 // new webpack.optimize.UglifyJsPlugin({ // compress: { // warnings: false, // drop_console: true // }, // sourceMap: true // }), // 增加 webpack-parallel-uglify-plugin来替换 const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin'); new ParallelUglifyPlugin({ cacheDir: '.cache/', // 设置缓存路径,不改动的调用缓存,第二次及后面build时提速 uglifyJS:{ output: { comments: false }, compress: { warnings: false } } })
J'ai aussi essayé le même type de plug-in webpack-uglify-parallel, mais il n'était pas aussi efficace que webpack-. parallel-uglify-plugin (cela peut varier d'un projet à l'autre, vous pouvez l'utiliser à des fins de comparaison dans votre projet) ).
Le package produit par le plug-in webpack-parallel-uglify-plugin est légèrement plus grand (mais pas évident) que celui d'UglifyJsPlugin par rapport à la taille accrue, j'ai choisi de rechercher la vitesse (après l'avoir utilisé, il est passé de 40 secondes à 40 secondes à 19 secondes).
Copier les fichiers statiques
Utilisez le plug-in copy-webpack-plugin : copiez les fichiers du dossier spécifié dans le répertoire spécifié ;
var CopyWebpackPlugin = require('copy-webpack-plugin') plugins: [ ... // copy custom static assets new CopyWebpackPlugin([ { from: path.resolve(__dirname, '../static'), to: config.build.assetsSubDirectory, ignore: ['.*'] } ]) ] DllPlugin & DllReferencePlugin
Le concept de Dll doit être emprunté à la dll du système Windows. Un package dll est une bibliothèque purement dépendante. Il ne peut pas s’exécuter seul et est utilisé pour le référencer dans votre application.
Lors de l'empaquetage d'une dll, Webpack créera un index de toutes les bibliothèques incluses et les écrira dans un fichier manifeste. Lors de l'empaquetage, le code qui fait référence à la dll (utilisateur de la dll) n'a besoin que de lire ce fichier manifeste. c'est ça.
1. Ajoutez le fichier webpack.dll.conf.js sous le dossier de construction du projet avec le contenu suivant
var path = require('path') var webpack = require('webpack') module.exports = { entry: { vendor: [ // 这里填写需要的依赖库 'babel-polyfill', 'axios', 'vue/dist/vue.common.js', 'vue-router', 'pingpp-js', "region-picker" ] }, output: { path: path.resolve(__dirname, '../static/js'), filename: '[name].dll.js', library: '[name]_library' }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ } ] }, plugins: [ new webpack.optimize.ModuleConcatenationPlugin(), new webpack.DllPlugin({ path: path.join(__dirname, '.', '[name]-manifest.json'), libraryTarget: 'commonjs2', name: '[name]_library' }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) ] }
2. Ajoutez la section plugin dans le fichier webpack.prod.conf.js :
plugins: [ ... // copy custom static assets new webpack.DllReferencePlugin({ context: path.resolve(__dirname, '..'), manifest: require('./vendor-manifest.json') }) ]
3. Ajoutez index.html dans le répertoire racine du projet Ajoutez le fichier :
<body> <p id="app"></p> <!-- built files will be auto injected --> <script src="<%= webpackConfig.output.publicPath %>spa/js/vendor.dll.js"></script> //添加这句,路径可根据所需修改 </body>
4. Ajoutez la commande pour empaqueter la dll dans package.json
"build:dll": "webpack --config build/webpack.dll.conf.js"
5. Séquence de commandes
npm run build:dll //打包一次之后依赖库无变动不需要执行 npm run build
Avantages
La DLL est indépendante après l'empaquetage Oui, tant que les bibliothèques qu'elle contient ne sont pas ajoutées, supprimées ou mises à niveau, le hachage ne changera pas, de sorte que le code de la DLL en ligne n'a pas besoin d'être mis à jour fréquemment avec les versions.
Une fois le code de la partie App modifié, il vous suffit de compiler le code de la partie App et la partie DLL. Tant que les bibliothèques incluses ne sont pas augmentées, diminuées ou mises à niveau, il n'est pas nécessaire de reconditionner. Cela améliore également considérablement la vitesse de chaque compilation.
Supposons que vous ayez plusieurs projets qui utilisent les mêmes bibliothèques dépendantes, ils peuvent partager une DLL.
19s->15s
Définissez le cacheDirectory de babel sur true
Modifiez babel-loader dans webpack.base.conf.js :
loader: 'babel-loader?cacheDirectory=true',
15s->14s
Set noParse
Si vous êtes sûr qu'il n'y a pas d'autres nouvelles dépendances dans un module, vous pouvez configurer ceci élément, Webpack n'analysera plus les dépendances de ce fichier, ce qui améliorera les performances des bibliothèques de classes relativement volumineuses. Pour plus de détails, veuillez consulter la configuration suivante :
module: { noParse: /node_modules\/(element-ui\.js)/, rules: [ { ... } } happypack
Ce qui précède est ce que j'ai compilé pour tout le monde. J'espère que cela sera utile à tout le monde à l'avenir.
Articles associés :
Contrôle des autorisations utilisateur dans Vue2.0
Explication détaillée de la façon d'implémenter vuex (tutoriel détaillé)
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Comment configurer et optimiser les performances après avoir reçu un nouvel ordinateur ? Les utilisateurs peuvent directement ouvrir Confidentialité et sécurité, puis cliquer sur Général (ID publicitaire, Contenu local, Lancement de l'application, Recommandations de configuration, Outils de productivité ou ouvrir directement la stratégie de groupe locale. Utilisez simplement le éditeur pour effectuer l'opération. Permettez-moi de présenter aux utilisateurs en détail comment optimiser les paramètres et améliorer les performances du nouvel ordinateur Win11 après l'avoir reçu : 1. Appuyez sur la combinaison de touches [Win+i] pour ouvrir Paramètres, puis cliquez sur. [Confidentialité et sécurité] sur la gauche, puis cliquez sur [Général (identifiant publicitaire, contenu local, lancement d'application, suggestions de paramètres, productivité) sous Autorisations Windows à droite Outils)].

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

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

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.

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

Explication détaillée des fonctions VSCode : Comment cela vous aide-t-il à améliorer l'efficacité du travail ? Avec le développement continu de l'industrie du développement de logiciels, la recherche par les développeurs de l'efficacité du travail et de la qualité du code est devenue un objectif important dans leur travail. Dans ce processus, le choix de l’éditeur de code devient une décision cruciale. Parmi les nombreux éditeurs, Visual Studio Code (VSCode en abrégé) est apprécié par la majorité des développeurs pour ses fonctions puissantes et son évolutivité flexible. Cet article présentera en détail certaines fonctions de VSCode et discutera

Le goulot d'étranglement des performances de Laravel révélé : la solution d'optimisation révélée ! Avec le développement de la technologie Internet, l’optimisation des performances des sites Web et des applications est devenue de plus en plus importante. En tant que framework PHP populaire, Laravel peut être confronté à des goulots d'étranglement en termes de performances pendant le processus de développement. Cet article explorera les problèmes de performances que les applications Laravel peuvent rencontrer et fournira des solutions d'optimisation et des exemples de code spécifiques afin que les développeurs puissent mieux résoudre ces problèmes. 1. Optimisation des requêtes de base de données Les requêtes de base de données sont l'un des goulots d'étranglement de performances courants dans les applications Web. exister

1. Appuyez sur la combinaison de touches (touche Win + R) sur le bureau pour ouvrir la fenêtre d'exécution, puis entrez [regedit] et appuyez sur Entrée pour confirmer. 2. Après avoir ouvert l'éditeur de registre, nous cliquons pour développer [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer], puis voyons s'il y a un élément Sérialiser dans le répertoire. Sinon, nous pouvons cliquer avec le bouton droit sur Explorateur, créer un nouvel élément et le nommer Sérialiser. 3. Cliquez ensuite sur Sérialiser, puis cliquez avec le bouton droit sur l'espace vide dans le volet de droite, créez une nouvelle valeur de bit DWORD (32) et nommez-la Étoile.
