Maison interface Web js tutoriel Comment Webpack doit-il gérer les styles ?

Comment Webpack doit-il gérer les styles ?

Jun 13, 2018 pm 03:10 PM
webpack 样式

Cet article présente principalement le traitement des styles par webpack. Maintenant, je le partage avec vous et vous donne une référence.

Cet article présente le traitement des styles par webpack et le partage avec tout le monde. Les détails sont les suivants :

Nous pouvons introduire des fichiers de style dans js

require('myStyle.css')
Copier après la connexion

À. cette fois, nous avons besoin d'introduire le chargeur webpack correspondant pour nous aider à analyser ce code.

css-loader avec style-loader

Tout d'abord, nous pouvons introduire css-loader et style-loader pour gérer l'analyse des CSS. Parmi eux, css. -loader est utilisé Pour analyser les fichiers CSS, style-loader est utilisé pour intégrer des fichiers CSS dans des fichiers js

var path = require('path')
module.exports = {
 context: path.join(__dirname, 'src')
 entry: './',
 module: {
 rules: [
  {
  test: /\.css$/,
  include: [
   path.join(__dirname, 'src')
  ],
  use: ['style-loader', 'css-loader']
  }
 ]
 },
 output: {
  path: path.join(__dirname, 'dist'),
  filename: '[name].bundle.[hash].js'
 }
}
Copier après la connexion

Dans le code ci-dessus, l'ordre d'analyse est de droite à gauche, utilisez d'abord css-loader pour analyser Après le fichier CSS, utilisez style-loader pour l'intégrer dans le code js.

Si vous utilisez less pour écrire des styles, vous devez utiliser less-loader pour compiler les fichiers de style en fichiers CSS, puis continuer à utiliser css-loader et style-loader. De plus, le chargeur chargeur peut omettre le -loader suivant. Le code ci-dessus peut donc être abrégé en

module: {
 rules: [
 {
  test: /\.css$/,
  include: [
  path.join(__dirname, 'src')
  ],
  use: ['style', 'css', 'less']
 }
 ]
}
Copier après la connexion

Généralement, dans l'environnement de test, afin de compiler les CSS plus rapidement, cette méthode sera utilisée plus souvent, mais le fichier js compilé de cette manière sera plus gros , ce qui ne convient pas Utilisé dans un environnement de production.

Compiler dans des fichiers séparés

L'approche ci-dessus regroupera CSS et js ensemble, réduisant ainsi le nombre de requêtes réelles, mais comme le fichier js compilé est relativement volumineux, cela gaspille bande passante. Par conséquent, nous utilisons le plug-in extract-text-webpack-plugin pour compiler les fichiers CSS en fichiers indépendants. Nous pouvons utiliser CDN pour transmettre ce fichier au serveur de nœuds ou le charger à la demande, selon le cas, optimisant ainsi le lien de demande du client et accélérant la réponse de la page.

var path = require('path'),
 ExtractTextPlugin = require('extract-text-webpack-plugin')
module.exports = {
 context: path.join(__dirname, 'src'),
 entry: './',
 module: {
 rules: [{
  test: /\.css$/,
  include: [
  path.join(__dirname, 'src')
  ],
  use: ExtractTextPlugin.extract({
  fallback: 'style',
  use: 'css'
  })
 }]
 },
 output: {
  path: path.join(__dirname, 'dist'),
  filename: '[name].bundle.[hash].js'
 },
 plugins: [
 new ExtractTextPlugin('[name].css')
 ]
}
Copier après la connexion

Grâce au code ci-dessus, nous utilisons le plug-in extract-text-webpack-plugin pour traiter tous les fichiers CSS du répertoire src. Tout d'abord, utilisons le plug-in css-loader pour analyser. le code CSS. Si l'analyse échoue, utilisez l'analyse du plug-in style -Loader, et génère enfin le fichier js correspondant dans le répertoire dist

Compatible avec les anciens navigateurs

Lorsque nous écrivions des styles, certains styles devaient être ajoutés pour différents navigateurs. Différents préfixes comme -webkit-. Maintenant que nous avons l'outil de build, nous n'avons plus besoin de prêter attention à ces préfixes. L'outil de build ajoutera automatiquement ces préfixes pour nous.

Pour webpack, nous pensons naturellement que nous devons utiliser un chargeur ou un plugin pour nous aider à faire ces choses. Après vérification, nous avons constaté que l'autoprefixer-loader a été abandonné et n'est plus recommandé. posscss

postcss est utilisé pour Le plug-in js qui convertit les styles CSS en js doit être utilisé avec d'autres plug-ins. C'est la même chose que babel6. C'est juste un convertisseur en lui-même et ne fournit pas de code. fonction d'analyse.

Ici, nous avons besoin du plugin autoprefixer pour ajouter des préfixes à nos styles. Téléchargez d’abord le module.

npm install -D autoprefixer
Copier après la connexion

Ensuite, vous pouvez configurer le webpack

var autoprefixer = require('autoprefixer')
module.exports = {
 ...
 module: {
 loaders: [
  ...
  {
  {
   test: /\.css$/,
   loader: ExtractTextPlugin.extract(["css", "postcss"])
  },
  }
 ]
 },
 postcss: [autoprefixer()],
 ...
}
Copier après la connexion

Regardez le fichier de style extrait et vous constaterez que le préfixe a été ajouté

a {
 display: flex;
}
/*compiles to:*/
a {
 display: -webkit-box;
 display: -webkit-flex;
 display: -ms-flexbox;
 display: flex
}
Copier après la connexion

De plus , préfixe automatique Vous pouvez également générer différents numéros de préfixe en fonction de la version du navigateur cible. Par exemple, si la plupart des utilisateurs de votre application utilisent une version relativement nouvelle du navigateur, vous pouvez la configurer comme suit.

postcss : [autoprefixer({ navigateurs : ['last 2 versions'] })] Le style généré sera légèrement différent, ou l'exemple ci-dessus

a {
 display: flex;
}
/*compiles to:*/
a {
 display: -webkit-flex;
 display: -ms-flexbox;
 display: flex;
}
Copier après la connexion

Style Compression

Pour compresser le code, nous pouvons utiliser le plug-in intégré UglifyJsPlugin de webpack, qui peut compresser à la fois le code js et le code css.

plugins: [
 ...
 new webpack.optimize.UglifyJsPlugin({
 compress: {
  warnings: false
 }
 }),
 ...
]
Copier après la connexion

En fait, on ne peut pas dire qu'il compresse le code CSS. En substance, il compresse le code js puis envoie ce code dans le fichier CSS.

Utilisez CommonsChunkPlugin pour extraire le code commun

Tout d'abord, il doit être clair que CommonsChunkPlugin est utilisé lorsqu'il y a plusieurs entrées, c'est-à-dire lorsqu'il y a plusieurs entrées fichiers, ces fichiers d'entrée Il peut y avoir des codes communs, et nous pouvons extraire ces codes communs dans des fichiers indépendants. Il est très important de comprendre cela. (Il m'a fallu beaucoup de temps pour comprendre quelque chose, hélas~~~~)

Si le même fichier CSS est requis dans plusieurs entrées, nous pouvons utiliser CommonsChunkPlugin pour extraire ces fichiers de style communs dans un fichier de style indépendant.

module.exports = {
 entry: {
 "A": "./src/entry.js",
 "B": "./src/entry2.js"
 },
 ...
 plugins: [
 new webpack.optimize.CommonsChunkPlugin({
 name: "commons", filename: "commons.js"
 }),
 ...
 ]
}
Copier après la connexion

Bien sûr, non seulement le CSS commun sera extrait ici, mais s'il existe du code js commun, il sera également extrait dans commons.js. Il y a un phénomène intéressant ici. Le nom du fichier CSS extrait sera la valeur de name dans le paramètre, et le nom du fichier js sera la valeur de filename.

CommonsChunkPlugin semble extraire uniquement les modules communs à tous les morceaux. S'il existe les dépendances suivantes

// entry1.js
var style1 = require('./style/myStyle.css')
var style2 = require('./style/style.css')

// entry2.js
require("./style/myStyle.css")
require("./style/myStyle2.css")

// entry3.js
require("./style/myStyle2.css")
Copier après la connexion

Après avoir utilisé le plug-in, vous constaterez que le fichier commons.css. n’est pas généré du tout.

Si nous avons seulement besoin d'obtenir le code commun des deux premiers morceaux, nous pouvons le faire

module.exports = {
 entry: {
 "A": "./src/entry.js",
 "B": "./src/entry2.js",
 "C": "./src/entry3.js"
 },
 ...
 plugins: [
 new webpack.optimize.CommonsChunkPlugin({
 name: "commons", filename: "commons.js", chunks: ['A', 'B']
 }),
 ...
 ]
}
Copier après la connexion

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 dans le futur.

Articles associés :

À propos du module child_process dans node (tutoriel détaillé)

Quelles sont les applications des processus enfants dans Node. js Scénario

Interprétation détaillée du système de fichiers et du flux dans nodeJs

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

macOS : Comment changer la couleur des widgets du bureau macOS : Comment changer la couleur des widgets du bureau Oct 07, 2023 am 08:17 AM

Dans macOS Sonoma, les widgets n'ont pas besoin d'être masqués hors écran ou oubliés dans le panneau du Centre de notifications comme c'était le cas dans les versions précédentes de macOS d'Apple. Au lieu de cela, ils peuvent être placés directement sur le bureau de votre Mac – ils sont également interactifs. Lorsqu'ils ne sont pas utilisés, les widgets du bureau macOS s'effacent en arrière-plan dans un style monochrome, réduisant ainsi les distractions et vous permettant de vous concentrer sur la tâche à accomplir dans l'application ou la fenêtre active. Cependant, lorsque vous cliquez sur le bureau, ils reviennent en couleur. Si vous préférez un aspect terne et souhaitez conserver cet aspect d'uniformité sur votre bureau, il existe un moyen de le rendre permanent. Les étapes suivantes montrent comment procéder. Ouvrez l'application Paramètres système

Tutoriel de démarrage VUE3 : empaquetage et création avec Webpack Tutoriel de démarrage VUE3 : empaquetage et création avec Webpack Jun 15, 2023 pm 06:17 PM

Vue est un excellent framework JavaScript qui peut nous aider à créer rapidement des applications Web interactives et efficaces. Vue3 est la dernière version de Vue, qui introduit de nombreuses nouvelles fonctionnalités et fonctionnalités. Webpack est actuellement l'un des packagers de modules et outils de construction JavaScript les plus populaires, qui peut nous aider à gérer diverses ressources dans nos projets. Cet article explique comment utiliser Webpack pour empaqueter et créer des applications Vue3. 1. Installez Webpack

Quelle est la différence entre vite et webpack Quelle est la différence entre vite et webpack Jan 11, 2023 pm 02:55 PM

Différences : 1. La vitesse de démarrage du serveur webpack est plus lente que celle de Vite ; car Vite n'a pas besoin d'être empaqueté au démarrage, il n'est pas nécessaire d'analyser les dépendances du module et de compiler, donc la vitesse de démarrage est très rapide. 2. La mise à jour à chaud de Vite est plus rapide que le webpack ; en termes de HRM de Vite, lorsque le contenu d'un certain module change, laissez simplement le navigateur demander à nouveau le module. 3. Vite utilise esbuild pour pré-construire les dépendances, tandis que webpack est basé sur le nœud. 4. L'écologie de Vite n'est pas aussi bonne que celle du webpack, et les chargeurs et plug-ins ne sont pas assez riches.

Guide pour résoudre le désalignement des pages Web WordPress Guide pour résoudre le désalignement des pages Web WordPress Mar 05, 2024 pm 01:12 PM

Guide pour résoudre les pages Web WordPress mal alignées Dans le développement de sites Web WordPress, nous rencontrons parfois des éléments de page Web mal alignés. Cela peut être dû à des tailles d'écran sur différents appareils, à la compatibilité du navigateur ou à des paramètres de style CSS inappropriés. Pour résoudre ce désalignement, nous devons analyser soigneusement le problème, trouver les causes possibles, puis le déboguer et le réparer étape par étape. Cet article partagera certains problèmes courants de désalignement des pages Web WordPress et les solutions correspondantes, et fournira des exemples de code spécifiques pour aider à développer

Comment utiliser PHP et Webpack pour le développement modulaire Comment utiliser PHP et Webpack pour le développement modulaire May 11, 2023 pm 03:52 PM

Avec le développement continu de la technologie de développement Web, la séparation front-end et back-end et le développement modulaire sont devenus une tendance répandue. PHP est un langage back-end couramment utilisé. Lors du développement modulaire, nous devons utiliser certains outils pour gérer et empaqueter les modules. Webpack est un outil d'empaquetage modulaire très facile à utiliser. Cet article explique comment utiliser PHP et Webpack pour le développement modulaire. 1. Qu'est-ce que le développement modulaire ? Le développement modulaire fait référence à la décomposition d'un programme en différents modules indépendants. Chaque module a sa propre fonction.

Conception d'image d'arrière-plan Web CSS : créez différents styles et effets d'image d'arrière-plan Conception d'image d'arrière-plan Web CSS : créez différents styles et effets d'image d'arrière-plan Nov 18, 2023 am 08:38 AM

Conception d'image d'arrière-plan de page Web CSS : créez divers styles et effets d'image d'arrière-plan, des exemples de code spécifiques sont requis. Résumé : Dans la conception Web, les images d'arrière-plan sont un élément visuel important, qui peut améliorer efficacement l'attractivité et la lisibilité de la page. Cet article présentera certains styles et effets courants de conception d’image d’arrière-plan CSS, et fournira des exemples de code correspondants. Les lecteurs peuvent sélectionner et appliquer ces styles et effets d'image d'arrière-plan en fonction de leurs propres besoins et préférences pour obtenir de meilleurs effets visuels et une meilleure expérience utilisateur. Mots-clés : CSS, image d'arrière-plan, style de conception, effet, représentation du code

Comment Webpack convertit-il le module es6 en es5 ? Comment Webpack convertit-il le module es6 en es5 ? Oct 18, 2022 pm 03:48 PM

Méthode de configuration : 1. Utilisez la méthode d'importation pour placer le code ES6 dans le fichier de code js emballé ; 2. Utilisez l'outil npm pour installer l'outil babel-loader, la syntaxe est "npm install -D babel-loader @babel/core @babel/preset- env"; 3. Créez le fichier de configuration ".babelrc" de l'outil babel et définissez les règles de transcodage ; 4. Configurez les règles de packaging dans le fichier webpack.config.js.

Utilisez Spring Boot et Webpack pour créer des projets frontaux et des systèmes de plug-ins Utilisez Spring Boot et Webpack pour créer des projets frontaux et des systèmes de plug-ins Jun 22, 2023 am 09:13 AM

Alors que la complexité des applications Web modernes continue d’augmenter, la création d’excellents systèmes d’ingénierie frontale et de plug-ins devient de plus en plus importante. Avec la popularité de Spring Boot et Webpack, ils sont devenus une combinaison parfaite pour créer des projets frontaux et des systèmes de plug-ins. SpringBoot est un framework Java qui crée des applications Java avec des exigences de configuration minimales. Il fournit de nombreuses fonctionnalités utiles, telles que la configuration automatique, afin que les développeurs puissent créer et déployer des applications Web plus rapidement et plus facilement. W

See all articles