项目中Antd3与Antd4共存

简介: 本文适合使用Antd Design开发项目的小伙伴阅读。

一、背景


   某天夜里,有位靓仔找到了广东靓仔,"悄悄的"问了个技术问题:antd 3版本和4版本如何共存?


 没过多久,这位靓仔找到的解决方案~

image.png

       广东靓仔回忆起之前有位同事之前也遇到这个问题,后来同事选择了重构。重构确实是最稳的方案,保证项目稳健性的同时又避开了很多未知的坑。但是重构要花费更多的时间精力成本,因此还是要因项目组而异啦。  

旧项目想使用antd新版本组件的API,但又不想重构,相信也有不少小伙伴有过这想法。  

下面我们来具体展开讲讲


二、具体的解决方案


1. 安装  

   安装antd4版本的时候设置下别名,具体代码如下:


npm install antd-v4@npm:antd@4.18.7

   

然后在package.json可以看到如下的依赖:

   image.png


2.配置less-loader


webpack配置less-loader


test: /\.less$/,
include: [/node_modules[\\|\/]antd-v4/],
use: [
  {
    "cache-loader",
    "style-loader",
  }
  {
    loader: "css-loader",
    options: {
        importLoaders: 1
    }
  },
  {
    loader: "less-loader",
    options: {
      javascriptEnabled: true,
      modifyVars: {
        "@ant-prefix": "ant-v4",
        "@primary-color": "rgba(224, 61, 62, 1)", // 全局主色
        "@link-color": "rgba(224, 61, 62, 1)"
      }
    }
  }
]


3.设置prefixCls


ConfigProvider设置prefixCls


<ConfigProvider locale={zhCN} prefixCls="ant-v4">


4.设置语言地址


import locale from 'antd-v4/lib/locale/zh_CN'


 然后就可以在antd3的老项目里面使用antd4了~  


下面我们来梳理下这个less-loader的配置,有兴趣可以继续阅读。


三、webpack配置less-loader说明


   在上面我们添加了打包LESS的规则,我们来梳理下less-loader的配置:
include: [/node_modules[\\|\/]antd-v4/],

这里是指定node_modules路径下的antd-v4文件需要经过 loader 处理

use

从上到下使用了cache-loaderstyle-loader、css-loaderless-loader
cache-loader在一些性能开销较大的 loader 之前添加此 loader,以将结果缓存到磁盘里

style-loader将打包后的css代码<style>标签形式添加到页面头部

css-loader用于加载css文件,importLoaders 为1(postcss-loader)

less-loader自动将 less 转换为 CSS

在less-loader这里有个比较细的点,就是modifyVars,可以更改less 中的变量


四、最后


   在我们评估某项技术需求的时候,需要结合项目组来综合考虑。有些时候技术上的升级,带来的效益如果颇微,那是否升级就有待商榷了。

相关文章
|
JavaScript 前端开发
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整,你有了解吗?
1059 0
|
移动开发 缓存 前端开发
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
5984 0
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
uni-app uni-file-picker 上传组件实战应用
uni-app uni-file-picker 上传组件实战应用
|
4月前
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
857 4
|
JavaScript Ruby
淘宝 NPM 镜像
我们以前介绍过cnpmjs.org,非常棒的npm国内镜像。由于其使用量越来越大,加上淘宝内部也有很多项目使用 NodeJS,于是,淘宝正式基于 cnpmjs 推出了镜像服务。
10447 1
淘宝 NPM 镜像
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
610 1
react项目配合diff实现文件对比差异功能
|
存储 JavaScript 前端开发
操作document.cookie存储和读取Cookies
操作document.cookie存储和读取Cookies
|
小程序
uniapp使用scss 嵌套语法
uniapp使用scss 嵌套语法
465 1
|
JavaScript 容器
富文本的图片添加点击放大功能
思路:富文本加载后,dom出全部img元素,然后各自单独添加点击事件
481 3
|
前端开发
前端 TS 快速入门之六:枚举 enum
前端 TS 快速入门之六:枚举 enum
287 0