在honeypack中启用HMR

简介: ## honeypack honeypack是一个基于webpack,结合了不同项目开发习惯,编写而成的开源前端打包工具。 #### 功能 1. 支持独立启动一个dev server 2.

honeypack

honeypack是一个基于webpack,结合了不同项目开发习惯,编写而成的开源前端打包工具。

功能

  1. 支持独立启动一个dev server
  2. 支持作为express的中间件
  3. 支持纯打包模式

特性

  • 通过简单地问答就能生成一份完整实用的webpack配置文件,并且自动安装依赖,接着你可以根据自己项目的特点随意修改,想加loader随意加,想改plugin的参数随意改,不想要的配置随意删,没有做不到的定制内容。
  • [计划中]自动升级webpack配置文件,支持最新特性。比如自动把uglifyjs换成terser,让你把全部精力都放在app开发上。

了解更多

HMR

HMR-热更新指的是当前端任何被引用到的文件发生变化时,服务器能自动推送新的文件到浏览器,并且能把修改的地方立即体现出来,而不用刷新页面。

了解更多

如何在honeypack中支持HMR

这里只介绍在中间件形式下开启HMR的方法,如果是独立启动一个server,参考官方文档

  1. 设置参数hot为true

    // honeycomb
    
    webpack: {
      enable: true,
      module: 'honeypack',
      router: '/assets',
      config: {
        hot: true    // <------- 这个
      }
    }
    
    // express
    
    app.use(honeypack({
      config: 'webpack.config.js',
      root: './assets',
      hot: true    // <------- 这个
    }));
  2. 修改webpack.config.js文件

      entry: {
    -   app: './index.jsx'
    +   app: [
    +     `honeypack/client?path=${publicPath}/__webpack_hmr`,
    +     './index.jsx'
    +   ]
      }
    
      plugins: [
    +   new webpack.HotModuleReplacementPlugin(),
      ]
    
    * publicPath为output中的publicPath
    这个时候刷新一下页面,就会发现多了一个`http://${host}/${publicPath}/__webpack_hmr`的请求。
  1. 修改前端项目代码

    1. 集成更新

      1. react

        • 给顶层组件加上hot()方法

          import React from 'react';
          import ReactDOM from 'react-dom';
          import {hot} from 'react-hot-loader/root';
          
          const App = () => <div>Hello Word!</div>;
          const Wrap = hot(App);
          
          ReactDOM.render(<Wrap />, $DOM);
          刷新一下浏览器页面,看见`Hello Word!`后,在文件里把`Word`改成`World`,回到浏览器,就会看见已经是`Hello World!`了

        + [推荐的可选步骤] 在`webpack.config.js`中,给`babel-loader`增加一个plugin
// babel-loader
  plugins: [
+   'react-hot-loader/babel'
  ]
    2. [其他框架](https://webpack.js.org/guides/hot-module-replacement/#other-code-and-frameworks)

2. 手动更新

  手动更新的思路是服务器会主动推送被修改过的文件,然后前端根据不同的文件手动进行不同的操作。

  [了解更多](https://webpack.js.org/guides/hot-module-replacement/#enabling-hmr)
相关文章
|
Kubernetes Ubuntu 测试技术
Docker 与 K8S学习笔记(六)—— 容器的资源限制
我们在启动Docker容器时,默认情况下容器所使用的资源是没有限制的,这样就会存在部分特别耗资源的容器会占用大量系统资源,从而导致其他容器甚至整个服务器性能降低,为此,Docker提供了一系列参数方便我们对容器的CPU、内存、IO等进行限制。为了方便演示,我们这里使用progrium/stress镜
750 0
|
关系型数据库 MySQL 测试技术
Mysql(压缩包)下载与安装
Mysql(压缩包)下载与安装 第一步:百度搜索 MySQL 点击官网进入 或者复制链接进入下载页面:https://downloads.mysql.com/archives/community/ 第二步:选择自己需要的 版本和系统 下载 第三步:放入自己需要安装的位置解压 第四步:配置...
2390 1
|
机器学习/深度学习 人工智能 机器人
学员捷报|鼎纳自动化获1亿元B轮融资,加速构建全自动智能制造与视觉检测解决方案
鼎纳(DINNAR)成立于2010年,作为机器视觉与智能制造专家,鼎纳以机器视觉为核心技术,专注于智能制造,致力于为全球精密制造企业创造价值。
学员捷报|鼎纳自动化获1亿元B轮融资,加速构建全自动智能制造与视觉检测解决方案
|
Oracle 关系型数据库
oracle 左连接 右连接 全连接
---当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符 SQL> SELECT COUNT(*)   2    FROM WCS_...
686 0
|
3天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
14天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1305 5
|
13天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1334 87