Home Web Front-end JS Tutorial Detailed explanation of the use of webpack hot refresh and hot loading

Detailed explanation of the use of webpack hot refresh and hot loading

Apr 28, 2018 pm 04:35 PM
web webpack Detailed explanation

This time I will bring you a detailed explanation of the use of webpack hot refresh and hot loading. What are the precautions for the use of webpack hot refresh and hot loading. The following is a practical case, let's take a look.

Webpack is very powerful, and reasonable scaffolding can save us a lot of tedious and meaningless work. Among them, hot refresh and hot loading greatly improve the development pace compared with traditional development.

Discover the difference between hot refresh and hot loading from scaffolding

I believe that most vue developers start from vue-cli, and many beginners run happily I don’t dare to change the configuration of vue-cli at will while working on the vue project (after all, webpack is indeed very complicated, and vue-cli has also done a lot of work to optimize the experience for beginners).

In contrast, react does not provide a relatively robust scaffolding (at least it is not obviously found by me, I hope you can enlighten me). As far as I know, one is yeoman's generator-react-webpack, react's create-react-app, and a good react-starter-kit (hot loading, and integrates a lot of code, which is highly referenced).
When I was learning react, I discovered that the first two scaffolds of react mentioned above provide hot refresh rather than hot loading.

Simple distinction between hot loading and hot refresh:

Hot refresh: After the file is dynamically changed, the entire page is refreshed without retaining any status (such as input of content) Input form), which is equivalent to webpack pressing F5 to refresh for you
Hot loading: After the file is changed, the changed area is changed at the minimum cost. Try to retain the state before changing the file (after entering the input content, modify the code of other tags)

Although both of them improve the development experience compared with traditional development (manual F5), both The gap is still huge, especially as the project becomes more complex, we must solve this problem once and for all (leaving more time to develop bugs).

Hands-on modification

Configuring from scratch is another area, so we start making changes directly from vue-cli.

The following steps only list the key ones for inspiration reference. For details, please refer to the final github complete project

  1. Delete vue-related dependencies, files, etc. ;Everything in the scr can be deleted

  2. package.json depends on adding babel-loader webpack-dev-server react-hot-loader (the most important thing)

  3. package.json command line setting "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js"

  4. webpack.base.conf Adding .jsx files needs to be processed by babel-loader, configure options:{plugins:['react-hot-loader/babel']}

  5. . Add babelrc presets to react, and add plugins below: ['react-hot-loader/babel']

  6. Create main.js in the src folder (the name must match the of the webpack configuration) Entry file consistent)

import 'core-js/fn/object/assign';
import React from 'react';
import ReactDOM from 'react-dom';
import { hot } from 'react-hot-loader';
import App from './pages/App'; // 自己写吧
import './assets/css/reset.scss';
// Render the main component into the dom
ReactDOM.render(<App/>, document.getElementById('app'));
export default hot(module)(App); // 热加载的关键
Copy after login

At this point, we can happily use react to experience the pleasure of hot loading~

The problem

In fact, we simply modify the main.js file in vue-cli to react-related code (don’t forget to configure babel to process jsx) and still use hot refresh.

After observing and comparing the local code, I found an attractive name:

In the webpack.dev.conf file:

new webpack.HotModuleReplacementPlugin()
Copy after login

OnlineQueryLater I learned that this is the key to realizing hot loading. It requires the code itself to have the modularity property (which means that as long as the three major frameworks can write reusable components, they can take advantage of this property. ), so that hot loading can be achieved by plugging and unplugging code.

The jsx special effects of react cannot be handled by HotModuleReplacementPlugin and can only be refreshed honestly.

In this case, react-hot-loader is ready to come out. In accordance with the official usage method, you can continue to use hot reloading.

ps: For reference only, I am also exploring and learning a lot of react code

Configured project address: gayhub

I believe you have mastered it after reading the case in this article For more exciting methods, please pay attention to other related articles on the php Chinese website!

Recommended reading:

vue-cli multi-module packaging and usage detailed explanation

node token implementation verification

The above is the detailed content of Detailed explanation of the use of webpack hot refresh and hot loading. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Detailed explanation of obtaining administrator rights in Win11 Detailed explanation of obtaining administrator rights in Win11 Mar 08, 2024 pm 03:06 PM

Windows operating system is one of the most popular operating systems in the world, and its new version Win11 has attracted much attention. In the Win11 system, obtaining administrator rights is an important operation. Administrator rights allow users to perform more operations and settings on the system. This article will introduce in detail how to obtain administrator permissions in Win11 system and how to effectively manage permissions. In the Win11 system, administrator rights are divided into two types: local administrator and domain administrator. A local administrator has full administrative rights to the local computer

Detailed explanation of division operation in Oracle SQL Detailed explanation of division operation in Oracle SQL Mar 10, 2024 am 09:51 AM

Detailed explanation of division operation in OracleSQL In OracleSQL, division operation is a common and important mathematical operation, used to calculate the result of dividing two numbers. Division is often used in database queries, so understanding the division operation and its usage in OracleSQL is one of the essential skills for database developers. This article will discuss the relevant knowledge of division operations in OracleSQL in detail and provide specific code examples for readers' reference. 1. Division operation in OracleSQL

Detailed explanation of the role and usage of PHP modulo operator Detailed explanation of the role and usage of PHP modulo operator Mar 19, 2024 pm 04:33 PM

The modulo operator (%) in PHP is used to obtain the remainder of the division of two numbers. In this article, we will discuss the role and usage of the modulo operator in detail, and provide specific code examples to help readers better understand. 1. The role of the modulo operator In mathematics, when we divide an integer by another integer, we get a quotient and a remainder. For example, when we divide 10 by 3, the quotient is 3 and the remainder is 1. The modulo operator is used to obtain this remainder. 2. Usage of the modulo operator In PHP, use the % symbol to represent the modulus

Detailed explanation of the linux system call system() function Detailed explanation of the linux system call system() function Feb 22, 2024 pm 08:21 PM

Detailed explanation of Linux system call system() function System call is a very important part of the Linux operating system. It provides a way to interact with the system kernel. Among them, the system() function is one of the commonly used system call functions. This article will introduce the use of the system() function in detail and provide corresponding code examples. Basic Concepts of System Calls System calls are a way for user programs to interact with the operating system kernel. User programs request the operating system by calling system call functions

Detailed explanation of Linux curl command Detailed explanation of Linux curl command Feb 21, 2024 pm 10:33 PM

Detailed explanation of Linux's curl command Summary: curl is a powerful command line tool used for data communication with the server. This article will introduce the basic usage of the curl command and provide actual code examples to help readers better understand and apply the command. 1. What is curl? curl is a command line tool used to send and receive various network requests. It supports multiple protocols, such as HTTP, FTP, TELNET, etc., and provides rich functions, such as file upload, file download, data transmission, proxy

How to enable administrative access from the cockpit web UI How to enable administrative access from the cockpit web UI Mar 20, 2024 pm 06:56 PM

Cockpit is a web-based graphical interface for Linux servers. It is mainly intended to make managing Linux servers easier for new/expert users. In this article, we will discuss Cockpit access modes and how to switch administrative access to Cockpit from CockpitWebUI. Content Topics: Cockpit Entry Modes Finding the Current Cockpit Access Mode Enable Administrative Access for Cockpit from CockpitWebUI Disabling Administrative Access for Cockpit from CockpitWebUI Conclusion Cockpit Entry Modes The cockpit has two access modes: Restricted Access: This is the default for the cockpit access mode. In this access mode you cannot access the web user from the cockpit

Learn more about Promise.resolve() Learn more about Promise.resolve() Feb 18, 2024 pm 07:13 PM

Detailed explanation of Promise.resolve() requires specific code examples. Promise is a mechanism in JavaScript for handling asynchronous operations. In actual development, it is often necessary to handle some asynchronous tasks that need to be executed in sequence, and the Promise.resolve() method is used to return a Promise object that has been fulfilled. Promise.resolve() is a static method of the Promise class, which accepts a

what does web mean what does web mean Jan 09, 2024 pm 04:50 PM

The web is a global wide area network, also known as the World Wide Web, which is an application form of the Internet. The Web is an information system based on hypertext and hypermedia, which allows users to browse and obtain information by jumping between different web pages through hyperlinks. The basis of the Web is the Internet, which uses unified and standardized protocols and languages ​​to enable data exchange and information sharing between different computers.

See all articles