Maison >interface Web >js tutoriel >Comment gérer les fichiers volumineux emballés par Webpack

Comment gérer les fichiers volumineux emballés par Webpack

php中世界最好的语言
php中世界最好的语言original
2018-05-25 14:27:341793parcourir

Cette fois, je vais vous expliquer comment gérer les gros fichiers packagés par webpack, et quelles sont les précautions sur la façon de gérer les gros fichiers packagés par webpack. Voici des cas pratiques, jetons un coup d'œil.

Comparaison d'optimisation :

Avant optimisation : index.html introduit un fichier main.js d'une taille supérieure à 2M.

Après optimisation : index.html introduit main.js, commons.js, charts.js et other.js. Pour atteindre l’objectif de diviser main.js de manière égale. Chaque fichier est contrôlé dans la limite de 300k. (Si vous êtes satisfait, 100k n'est pas un problème)

Un tas de bibliothèques et d'outils utilisés :

vue, webpack, babel, highcharts, echarts, jquery, html2canvas***** Je vais omettre certains codes m

Problème :

Après avoir utilisé webpack dans le environnement de développement, j'ai trouvé un seul fichier js 5m.

L'environnement de production est réduit à 2m grâce à la configuration du webpack de vue-cli.

Solution :

Rechercher diverses solutions : require.ensure, require dépendance, entrées multiples, commonsChunkPlugin****Voici quelques solutions pour économiser des efforts

Il existe trop de solutions comme celle ci-dessous sur Internet, mais elles ne parviennent pas toutes à atteindre les résultats escomptés

entry:{ 
 main:'xxx.js',
  chunks:['c1', 'c2'],
  commons:['jquery', 'highcharts', 'echarts','d3', 'xxxxx.js']  
}
 
plugins:{
new commonsChunkPlugin({
name:'commons',
minChunks:2
})  
}

La solution optimale :

entry:{ 
 main:'xxx.js'
}
 
plugins:{
 new commonsChunkPlugin({
 name:'commons',
 minChunks:function(module){
  // 下边return参考的vue-cli配置
  // any required modules inside node_modules are extracted to vendor
  return (
   module.resource &&
   /\.js$/.test(module.resource) &&
   module.resource.indexOf(
   path.join(dirname, '../node_modules')
   ) === 0
  )
 }
}) ,
// 以下才是关键
new commonsChunkPlugin({
 name:'charts',
 chunks:['commons'] 
 minChunks:function(module){
  return (
   module.resource &&
   /\.js$/.test(module.resource) &&
   module.resource.indexOf(
   path.join(dirname, '../node_modules')
   ) === 0 && ['jquery.js', 'highcharts.js','echarts'].indexOf( module.resource.substr(module.resource.lastIndexOf('/')+1).toLowerCase() ) != -1
  )
 }
}) // 如果愿意,可以再new 一个commonsChunkPlugin
 
}

Je te crois J'ai lu le cas dans cet article. Vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes à suivre pour utiliser le composant intégré select de Vue

Éviter le nouveau rendu lors de l'utilisation de React

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:
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