老师,我今天开启CSS模块热替换,可是修改了样式后,页面仍然刷新,把JS的操作也刷新成初始化的了?请问为什么没效果呢?谢谢

来源:3-9 Hot Module Replacement 热模块更新(1)

qq_不睡觉的怪叔叔_0

2019-07-02

webpack.config.js:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');  // 导入HtmlWebpackPlugin
const CleanWebpackPlugin = require('clean-webpack-plugin');  // 导入CleanWebpackPlugin
const webpack = require('webpack');                          // 导入webpack

module.exports = {
    mode: 'development',
    entry: {
        main: './src/index.js',             
    },                
    output: {
        filename: '[name].js',                
        path: path.resolve(__dirname, 'dist')    
    },
    devServer: {
        contentBase: './dist',   // 告诉dev-server在哪里查找文件
        port: '8080',            // 端口号
        hot: true,               // 模块热替换
        hotOnly: true            // 如果不能进行模块热替换,则不刷新网页
    },
    module: {
        rules: [
            {
                test: /\.(png|svg|jpg|gif$)/,           // 文件后缀名匹配通配符
                use: [{
                    loader: 'url-loader',               // 使用的loader
                    options: {
                        limit: 10240                    // 当图片小于10kb时,使用base64的方式进行打包
                    }
                }]
            },
            {
                test: /\.scss$/,
                use: [
                    'style-loader',
                    {
                      loader: 'css-loader',
                      options: {
                          importLoaders: 2
                      }  
                    },
                    'sass-loader',
                    'postcss-loader'
                ]
            },
            {
                test: /\.(woff|woff2|eot|ttf)$/,
                use: [
                    'file-loader'
                ]
            },
            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'postcss-loader'
                ]
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'dist.html',              // 将自动生成的html文件的文件名改为dist.html
            template: './src/template.html'     // 模板
        }),
        new CleanWebpackPlugin(),
        new webpack.HotModuleReplacementPlugin()    // webpack内置的模块热替换插件
    ]
};

index.js:

import './div.css';         // 导入样式

let div = document.createElement('div');
div.innerText = 1;
document.body.appendChild(div);

// 创建一个button元素,点击它就增加div元素中的数值
let button = document.createElement('button');
button.innerText = "加1"
button.addEventListener('click', () => {
    div.innerText = parseInt(div.innerText) + 1;
});
document.body.appendChild(button);


div.css:

div {
    background: red;
}
写回答

1回答

Dell

2019-07-07

看起来是没问题的,你有没有重新启动服务器

0
2
Dell
回复
qq_不睡觉的怪叔叔_0
用我的代码跑一下,看好用么
2019-07-12
共2条回复

从基础到实战 手把手带你掌握新版Webpack4.0

知识点+项目实例+原理讲解 全方位解析Webpack4新版本

3627 学习 · 1291 问题

查看课程