Maison interface Web js tutoriel Explication détaillée des étapes pour créer un environnement de développement React avec Webpack

Explication détaillée des étapes pour créer un environnement de développement React avec Webpack

May 21, 2018 pm 02:02 PM
react web webpack

Cette fois, je vais vous apporter une explication détaillée des étapes pour créer un environnement de développement React avec webpack Quelles sont les précautions pour créer un environnement de développement React avec webpack. Voici des cas pratiques, prenons. un regard.

1.Initialiser le projet

mkdir react-redux && cd react-redux
npm init -y

2. Installer le webpack

npm i webpack -D

npm i -D est l'abréviation de npm install --save-dev, qui fait référence à l'installation de modules et à leur enregistrement dans devDependencies dans package.json, principalement des packages de dépendances dans l'environnement de développement. Si vous utilisez la version webpack 4+, vous également. besoin d'installer la CLI.

npm install -D webpack webpack-cli

3. Créer une nouvelle structure de projet

react-redux
 |- package.json
+ |- /dist
+  |- index.html
 |- /src
  |- index.js

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<p id="root"></p>
<script src="bundle.js"></script>
</body>
</html>

index.js

document.querySelector('#root').innerHTML = 'webpack使用';

Packaging sous installation non globale.

node_modules\.bin\webpack src\index.js --output dist\bundle.js --mode development

Ouvrez le code HTML dans le répertoire dist pour afficher le webpack Utiliser

Configurer le webpack

1. Fichier de configuration

const path=require('path');
module.exports={
  entry:'./src/index.js',
  output:{
    filename:'bundle.js',
    path:path.resolve(dirname,'dist')
  }
};

commande d'exécution : node_modules.binwebpack --mode production peut être empaqueté 2.Scripts NPM (scripts NPM) Ajoutez un script npm (script npm) dans package.json : "build": "webpack --mode production" exécutez npm run build Prêt à empaqueter

Utiliser webpack pour créer un serveur local

webpack-dev-server fournit un serveur Web simple et peut Rechargement en direct.

1. Installer npm i -D webpack-dev-server Modifier le fichier de configuration webpack.config.js

const path=require('path');
module.exports={
  entry:'./src/index.js',
  output:{
    filename:'bundle.js',
    path:path.resolve(dirname,'dist')
  },
  //以下是新增的配置
  devServer:{
    contentBase: "./dist",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true,//实时刷新
    port:3000,
    open:true,//自动打开浏览器
  }
};

Exécuter webpack-dev-server --progress, ouvrir localhost:3000 dans le navigateur et modifier le code en temps réel Affichez les résultats modifiés. Ajoutez le script scripts et exécutez npm start pour ouvrir automatiquement http://localhost:8080/

"start": "webpack-dev-server --open --mode development"

Après avoir démarré webpack-dev-server, vous ne pouvez pas voir. la version compilée dans le dossier cible. Les fichiers compilés en temps réel sont sauvegardés en mémoire. Par conséquent, lorsque vous utilisez webpack-dev-server pour le développement, vous ne pouvez pas voir les fichiers compilés

2. Mise à jour à chaud

Configurez un plug-in fourni avec webpack et incluez-le également dans le fichier principal js Vérifiez s'il existe module.hot

plugins:[
    //热更新,不是刷新
    new webpack.HotModuleReplacementPlugin()
  ],

Ajoutez le code suivant au fichier js principal

if (module.hot){
  //实现热更新
  module.hot.accept();
}

Activez la mise à jour à chaud dans webpack.config.js

devServer:{
    contentBase: "./dist",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true,//实时刷新
    port:3000,
    open:true,//自动打开浏览器
    hot:true //开启热更新
  },

Les mises à jour à chaud permettent de mettre à jour divers modules au moment de l'exécution sans avoir besoin d'une actualisation complète

Configuration des modèles HTML

1. . Installez le plug-in html-webpack-plugin

npm i html-webpack-plugin -D

2. Référencez le plug-in

const path=require('path');
let webpack=require('webpack');
let HtmlWebpackPlugin=require('html-webpack-plugin');
module.exports={
  entry:'./src/index.js',
  output:{
    //添加hash可以防止文件缓存,每次都会生成4位hash串
    filename:'bundle.[hash:4].js',
    path:path.resolve('dist')
  },
  //以下是新增的配置
  devServer:{
    contentBase: "./dist",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true,//实时刷新
    port:3000,
    open:true,//自动打开浏览器
    hot:true //开启热更新
  },
  plugins:[
    new HtmlWebpackPlugin({
      template:'./src/index.html',
      hash:true, //会在打包好的bundle.js后面加上hash串
    })
  ]
};

dans webpack.config.js et exécutez npm run build pour l'empaquetage. cela se produira à chaque fois que npm exécutera build Créez de nombreux packages packagés dans le répertoire dist Vous devez effacer les fichiers du répertoire dist avant chaque package, puis y placer les fichiers packagés. Le plug-in clean-webpack-plugin est utilisé ici. . Installez-le via la commande npm i clean-webpack-plugin -D Puis référencez le plug-in dans webpack.config.js

const path=require('path');
let webpack=require('webpack');
let HtmlWebpackPlugin=require('html-webpack-plugin');
let CleanWebpackPlugin=require('clean-webpack-plugin');
module.exports={
  entry:'./src/index.js',
  output:{
    //添加hash可以防止文件缓存,每次都会生成4位hash串
    filename:'bundle.[hash:4].js',
    path:path.resolve('dist')
  },
  //以下是新增的配置
  devServer:{
    contentBase: "./dist",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true,//实时刷新
    port:3000,
    open:true,//自动打开浏览器
    hot:true //开启热更新
  },
  plugins:[
    new HtmlWebpackPlugin({
      template:'./src/index.html',
      hash:true, //会在打包好的bundle.js后面加上hash串
    }),
     //打包前先清空
    new CleanWebpackPlugin('dist')
  ]
};

Après l'empaquetage, aucun fichier supplémentaire ne sera généré

Compilez es6 et jsx

1. Installez babel

loader babel-preset-env : compilez uniquement les fonctionnalités qui ne sont pas encore prises en charge en fonction de l'environnement configuré. babel-preset-react : Convertir jsx en jsnpm i babel-core babel-loader babel-preset-env babel-preset-react babel-preset-stage-0 -D babel-loader: babel

2. Ajouter le fichier de configuration .babelrc

{
 "presets": ["env", "stage-0","react"] //从左向右解析
}
3. Modifier webpack.config.js

const path=require('path');
module.exports={
  entry:'./src/index.js',
  output:{
    filename:'bundle.js',
    path:path.resolve(dirname,'dist')
  },
  //以下是新增的配置
  devServer:{
    contentBase: "./dist",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true//实时刷新
  },
  module:{
    rules:[
      {
        test:/\.js$/,
        exclude:/(node_modules)/, //排除掉nod_modules,优化打包速度
        use:{
          loader:'babel-loader'
        }
      }
    ]
  }
};
<.>

Séparation de l'environnement de développement et de l'environnement de production1. Installez webpack-merge

2. Créez un nouveau fichier nommé webpack.common. js En tant que configuration publique, écrivez le contenu suivant :
npm install --save-dev webpack-merge

3. Créez un nouveau fichier nommé webpack.dev.js en tant que configuration d'environnement de développement
const path=require('path');
let webpack=require('webpack');
let HtmlWebpackPlugin=require('html-webpack-plugin');
let CleanWebpackPlugin=require('clean-webpack-plugin');
module.exports={
  entry:['babel-polyfill','./src/index.js'],
  output:{
    //添加hash可以防止文件缓存,每次都会生成4位hash串
    filename:'bundle.[hash:4].js',
    path:path.resolve(dirname,'dist')
  },
  plugins:[
    new HtmlWebpackPlugin({
      template:'./src/index.html',
      hash:true, //会在打包好的bundle.js后面加上hash串
    }),
    //打包前先清空
    new CleanWebpackPlugin('dist'),
    new webpack.HotModuleReplacementPlugin() //查看要修补(patch)的依赖
  ],
  module:{
    rules:[
      {
        test:/\.js$/,
        exclude:/(node_modules)/, //排除掉nod_modules,优化打包速度
        use:{
          loader:'babel-loader'
        }
      }
    ]
  }
};

4. nouveau fichier nommé webpack Le fichier .prod.js est utilisé comme configuration de l'environnement de production
const merge=require('webpack-merge');
const path=require('path');
let webpack=require('webpack');
const common=require('./webpack.common.js');
module.exports=merge(common,{
  devtool:'inline-soure-map',
  mode:'development',
  devServer:{
    historyApiFallback: true, //在开发单页应用时非常有用,它依赖于HTML5 history API,如果设置为true,所有的跳转将指向index.html
    contentBase:path.resolve(dirname, '../dist'),//本地服务器所加载的页面所在的目录
    inline: true,//实时刷新
    open:true,
    compress: true,
    port:3000,
    hot:true //开启热更新
  },
  plugins:[
    //热更新,不是刷新
    new webpack.HotModuleReplacementPlugin(),
  ],
});

const merge = require('webpack-merge');
 const path=require('path');
 let webpack=require('webpack');
 const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
 const common = require('./webpack.common.js');
 module.exports = merge(common, {
   mode:'production',
   plugins: [
     new UglifyJSPlugin()
   ]
 });

Configurer React1. ,

2. Créez un nouveau App.js et ajoutez le contenu suivant.
react-dom npm i react react-dom -S

3. Ajoutez le contenu suivant à index.js.
import React from 'react';
class App extends React.Component{
  render(){
    return (<p>佳佳加油</p>);
  }
}
export default App;
import React from 'react';
import ReactDOM from 'react-dom';
import {AppContainer} from 'react-hot-loader';
import App from './App';
ReactDOM.render(
  <AppContainer>
    <App/>
  </AppContainer>,
  document.getElementById('root')
);
if (module.hot) {
  module.hot.accept();
}

4.安装 react-hot-loader

npm i -D react-hot-loader

5.修改配置文件 在 webpack.config.js 的 entry 值里加上 react-hot-loader/patch,一定要写在entry 的最前面,如果有 babel-polyfill 就写在babel-polyfill 的后面

6.在 .babelrc 里添加 plugin, "plugins": ["react-hot-loader/babel"]

处理SASS

1.安装 style-loader css-loader url-loader

npm install style-loader css-loader url-loader --save-dev

2.安装 sass-loader node-sass

npm install sass-loader node-sass --save-dev

3.安装 mini-css-extract-plugin ,提取单独打包css文件

npm install --save-dev mini-css-extract-plugin

4.配置webpack配置文件

webpack.common.js

{
  test:/\.(png|jpg|gif)$/,
  use:[
    "url-loader"
  ]
},

webpack.dev.js

{
  test:/\.scss$/,
  use:[
    "style-loader",
    "css-loader",
    "sass-loader"
  ]
}

webpack.prod.js

const merge = require('webpack-merge');
 const path=require('path');
 let webpack=require('webpack');
 const MiniCssExtractPlugin=require("mini-css-extract-plugin");
 const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
 const common = require('./webpack.common.js');
 module.exports = merge(common, {
   mode:'production',
   module:{
     rules:[
       {
         test:/\.scss$/,
         use:[
           // fallback to style-loader in development
           process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader,
           "css-loader",
           "sass-loader"
         ]
       }
     ]
   },
   plugins: [
     new UglifyJSPlugin(),
     new MiniCssExtractPlugin({
       // Options similar to the same options in webpackOptions.output
       // both options are optional
       filename: "[name].css",
       chunkFilename: "[id].css"
     })
   ]
 });

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理

Nodejs发布自己的npm包并制作成命令行工具步骤详解

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

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 !

Article chaud

Rimworld Odyssey Comment pêcher
1 Il y a quelques mois By Jack chen
Puis-je avoir deux comptes Alipay?
1 Il y a quelques mois By 下次还敢
Guide du débutant de Rimworld: Odyssey
1 Il y a quelques mois By Jack chen
Porce de variable PHP expliquée
3 Il y a quelques semaines By 百草

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)

Sujets chauds

Tutoriel PHP
1508
276
L'écosystème de React: bibliothèques, outils et meilleures pratiques L'écosystème de React: bibliothèques, outils et meilleures pratiques Apr 18, 2025 am 12:23 AM

L'écosystème React comprend des bibliothèques de gestion d'État (telles que Redux), des bibliothèques de routage (telles que Reactrouter), des bibliothèques de composants d'interface utilisateur (telles que Material-UI), des outils de test (tels que la plaisanterie) et de la construction d'outils (tels que WebPack). Ces outils fonctionnent ensemble pour aider les développeurs à développer et à maintenir efficacement les applications, à améliorer la qualité du code et l'efficacité de développement.

L'avenir de React: Tendances et innovations dans le développement Web L'avenir de React: Tendances et innovations dans le développement Web Apr 19, 2025 am 12:22 AM

L'avenir de React se concentrera sur l'ultime dans le développement des composants, l'optimisation des performances et l'intégration profonde avec d'autres piles technologiques. 1) React simplifiera encore la création et la gestion des composants et promouvra l'ultime dans le développement des composants. 2) L'optimisation des performances deviendra le centre d'attention, en particulier dans les grandes applications. 3) React sera profondément intégré à des technologies telles que GraphQL et TypeScript pour améliorer l'expérience de développement.

React: La puissance d'une bibliothèque JavaScript pour le développement Web React: La puissance d'une bibliothèque JavaScript pour le développement Web Apr 18, 2025 am 12:25 AM

React est une bibliothèque JavaScript développée par Meta pour la création d'interfaces utilisateur, avec son cœur étant le développement des composants et la technologie DOM virtuelle. 1. Gestion des composants et de l'État: React gère l'état à travers les composants (fonctions ou classes) et les crochets (tels que UseState), améliorant la réutilisabilité et la maintenance du code. 2. Dom virtuel et optimisation des performances: via Virtual Dom, React met à jour efficacement le DOM réel pour améliorer les performances. 3. Cycle de vie et crochets: les crochets (tels que l'utilisation d'effet) permettent aux composants de la fonction de gérer les cycles de vie et d'effectuer des opérations à effet secondaire. 4. Exemple d'utilisation: des composants de Basic Helloworld à la gestion avancée de l'État mondial (UseContext et

Développement frontal avec React: Avantages et techniques Développement frontal avec React: Avantages et techniques Apr 17, 2025 am 12:25 AM

Les avantages de React sont sa flexibilité et son efficacité, qui se reflètent dans: 1) la conception basée sur les composants améliore la réutilisabilité du code; 2) La technologie DOM virtuelle optimise les performances, en particulier lors de la gestion de grandes quantités de mises à jour de données; 3) L'écosystème riche fournit un grand nombre de bibliothèques et d'outils tiers. En comprenant comment React fonctionne et utilise des exemples, vous pouvez maîtriser ses concepts principaux et les meilleures pratiques pour créer une interface utilisateur efficace et maintenable.

Comprendre la fonction principale de React: la perspective du frontend Comprendre la fonction principale de React: la perspective du frontend Apr 18, 2025 am 12:15 AM

Les principales fonctions de React incluent la pensée composante, la gestion de l'État et le DOM virtuel. 1) L'idée de la composante permet de diviser l'interface utilisateur en parties réutilisables pour améliorer la lisibilité et la maintenabilité du code. 2) La gestion de l'État gère les données dynamiques via l'état et les accessoires, et les modifications déclenchent des mises à jour de l'interface utilisateur. 3) Performances d'optimisation virtuelle DOM, mettez à jour l'interface utilisateur à travers le calcul du fonctionnement minimum de la réplique DOM en mémoire.

React and Frontend Development: un aperçu complet React and Frontend Development: un aperçu complet Apr 18, 2025 am 12:23 AM

React est une bibliothèque JavaScript développée par Facebook pour créer des interfaces utilisateur. 1. Il adopte la technologie DOM composinalisée et virtuelle pour améliorer l'efficacité et les performances du développement de l'interface utilisateur. 2. Les concepts de base de la réact incluent la composante, la gestion de l'État (comme UseState et UseEffect) et le principe de travail du DOM virtuel. 3. Dans les applications pratiques, réagir les supports du rendu de base des composants au traitement avancé des données asynchrones. 4. Les erreurs courantes telles que l'oubli pour ajouter des attributs clés ou des mises à jour de statut incorrectes peuvent être déboguées via ReactDevTools et les journaux. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation de react.memo, la segmentation du code et le maintien du code lisible et le maintien de la fiabilité

Utilisation de React avec HTML: Rendre des composants et des données Utilisation de React avec HTML: Rendre des composants et des données Apr 19, 2025 am 12:19 AM

L'utilisation de HTML pour rendre les composants et les données dans React peut être réalisée via les étapes suivantes: L'utilisation de la syntaxe JSX: React utilise la syntaxe JSX pour intégrer les structures HTML dans du code JavaScript et exploite le DOM après compilation. Les composants sont combinés avec HTML: les composants React transmettent des données via des accessoires et générent dynamiquement le contenu HTML, tel que. Gestion du flux de données: le flux de données de React est unidirectionnel, passé du composant parent au composant enfant, garantissant que le flux de données est contrôlable, tels que les composants de l'application qui passent le nom à la salutation. Exemple d'utilisation de base: utilisez la fonction MAP pour rendre une liste, vous devez ajouter un attribut clé, tel que le rendu d'une liste de fruits. Exemple d'utilisation avancée: utilisez le crochet USESTATE pour gérer la dynamique de l'état et implémenter

La puissance de la réaction dans HTML: développement Web moderne La puissance de la réaction dans HTML: développement Web moderne Apr 18, 2025 am 12:22 AM

L'application de la réaction dans le HTML améliore l'efficacité et la flexibilité du développement Web par composant et DOM virtuel. 1) L'idée de composant réagit décompose l'interface utilisateur en unités réutilisables pour simplifier la gestion. 2) Performances d'optimisation Virtual DOM, minimiser les opérations DOM via un algorithme de difficulté. 3) La syntaxe JSX permet d'écrire HTML en JavaScript pour améliorer l'efficacité du développement. 4) Utilisez le crochet UseState pour gérer l'état et réaliser des mises à jour dynamiques de contenu. 5) Les stratégies d'optimisation incluent l'utilisation de React.Memo et Usecallback pour réduire le rendu inutile.

See all articles