Next.js脚手架进阶 — 完美契合ant-design

2023-05-16

前言

上次入门完了之后感觉意犹未尽,总觉得这个脚手架还是不太完美,还有可以改进的地方,所以为了与人方便也是与己方便,就继续写几篇吧~?,不过既然之前的叫做入门系列,这个就叫做进阶吧~

Next.js新手入门系列地址

Next.js脚手架进阶系列

  • 完美契合ant-design
  • 封装fetch && 增加中间件
  • 部署上线

使用ant-design出现的一些问题

因为Next.js版本不断的在更新,特别是升级到7之后,很多插件都随之配套升级了,因此如果你们用的是Next.js7以下的版本的话,升级须谨慎。因为官方说7速度快了很多,秉着踩坑我优先的原则,开始了我的升级之路,其中遇到问题最多的就算是与ant-design的契合问题了,主要问题出现在三个方面:

  • 各种plugins的升级

    // Next.js 6 version
    "dependencies": {
      "@zeit/next-less": "^0.3.0",
      "babel-plugin-import": "^1.8.0",
      ...
    },
    "devDependencies": {
      "babel-plugin-transform-decorators-legacy": "^1.3.5",
      ...
    }
    
    // Next.js 7 version
    "dependencies": {
      "@zeit/next-less": "^1.0.1",
      "babel-plugin-import": "^1.9.0",
      ...
    },
    "devDependencies": {
      "@babel/plugin-proposal-decorators": "^7.1.0",
      ...
    }
    复制代码

    首先就是next-less这个核心文件需要升级,然后就是babel与antd的插件进行了切换。具体可以在代码里看。

  • 目录结构变化导致静态CSS文件引入路径问题

    首先,以前一直用的是Next.js 6, 所有的css文件会被打包成style.css存放路径是/.next/static/style.css。而Next.js 7以后,应该是webpack优化了CSS编译,编译过后文件夹结构如下:

可以看到不仅结构发生了变化,名称也发生了变化,应该是内置webpack进行了css方面的优化吧。 总之现在这样,再使用v6版本的代码,我们浏览器就会报一个错,如下图所示:

解决办法:移除_app.js的Head头部的link标签,改成在_app.js顶部import样式文件进来import '../asserts/styles.less';

  • 打包后ant-design的custom文件被覆盖的问题

    最后,最头疼的问题,上面都改完了之后,你在开发环境跑起来会发现,OK,升级成功,不过你试试打包一下,打包过后你的custom-css样式就会被ant-design原本样式所覆盖,也就是你的custom-css文件不生效了。

【解决办法】:

  1. 如果你接受不改ant-design的样式,就用它本身框架带的属性就行,那完全OK,什么都不用做了。
  2. 自己clone下来ant-design的包进行更改。以前的文章正好有人给我留言这块。

  1. 以前的我懵懂无知,可能第二种是最好的解决办法,但是直到我发现了下面最完美的解决办法。
// next.config.js
...
// Where your antd-custom.less file lives
  const themeVariables = lessToJS(
    fs.readFileSync(
      path.resolve(__dirname, './asserts/antd-custom.less'),
      'utf8',
    ),
  );
...
withLess({
    lessLoaderOptions: {
      javascriptEnabled: true,
      modifyVars: themeVariables, // 新增modifyVars属性
      localIdentName: '[local]___[hash:base64:5]',
    },
  ...
})
复制代码

上面第三种也是我现在在用的,目前没发现什么问题,大家可以放心使用~

另外官方Demo我也帮助简单的更新了一下,现在create-next-app的 with-ant-design-less的Demo用的就是我pr的这一版。

总结

又水了一篇,这个系列我就想从踩坑入门的那个脚手架一步一步的进行完善,让大家使用起来越来越方便,增加可扩展性吧。所以每一篇文章都只针对一个活着两个点,不长篇大论了就。

脚手架地址:Next-Antd-Scaffold

有意见可以留言, 喜欢的给个Star,万分感谢~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Next.js脚手架进阶 — 完美契合ant-design 的相关文章

随机推荐

  • ERROR: Kernel configuration is invalid.

    最简单的linux hello的驱动源程序 span class hljs comment 下面是驱动源代码 span span class hljs preprocessor include lt linux init h gt span
  • i2c中start和restart的区别

    有的硬件芯片提供了一个个寄存器 xff0c 供我们很好的操作i2c xff0c 但是 xff0c 在用的时候 xff0c 我们是不知道他到地是怎么操作的 xff0c 下边 xff0c 我就探讨下i2c中的start和restart的区别 s
  • Linux——常见的N个问题

    一 如何建立多用户 提醒大家一句 xff0c 别一直使用root用户 xff0c 因为root用户在系统中有着至高无上的权力 xff0c 一不小心 就可能破坏系统 比如我们想删除 temp目录下的文件却将命令不小心输成 rm temp xf
  • animate css组合,Vue---CSS动画之animate.css库

    animation完成一个动画效果 代码基本结构搭建 使用与过渡动画相同的代码结构 hello world change var vm 61 new Vue el 39 root 39 data show true methods hand
  • P1661 扩散

    P1661 扩散 题目描述 一个点每过一个单位时间就会向四个方向扩散一个距离 xff0c 如图 两个点a b连通 xff0c 记作e a b 当且仅当a b的扩散区域有公共部分 连通块的定义是块内的任意两个点u v都必定存在路径e u a0
  • java 返回两个list_Java 获取两个List的交集和差集,以及应用场景操作

    背景介绍 在实际项目中 xff0c 特别是一些管理后台类的项目 xff0c 会遇到底层数据是按照一对多关系的数据表存储的管理界面 列表页是一对多关系中一对应的数据列表 xff0c 二级的详情页中是一对多关系中多对应的多条数据展示 通常二级页
  • 微服务注册中心注册表与hashcode实现golang版

    背景 基于负载均衡的服务调用 基于负载均衡的服务相互调用指的是通过基于Lvs Haproxy Nginx等负载均衡软件来构建一个负载均衡服务 xff0c 所有的服务调用都通过负载均衡器 从负载均衡的这种模式下其实有两个主要的问题 xff1a
  • cookie txt format

    2019独角兽企业重金招聘Python工程师标准 gt gt gt cookies txt Tab separated columns are Domain Only Sent To Creator Path Secure Expires
  • linux环境变量设置 profile,Linux 环境变量 设置 etc profile

    一 Linux的变量种类 按变量的生存周期来划分 xff0c Linux变量可分为两类 xff1a 1 永久的 xff1a 需要修改配置文件 xff0c 变量永久生效 2 临时的 xff1a 使用export命令声明即可 xff0c 变量在
  • Debian 7 桌面美化

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 安装中文字体 1 文泉驿 查找 xff1a apt cache search wqy 可能输出如下信息 xff1a ttf wqy microhei A droid d
  • mysql编程展示数据_Mysql的列修改成行并显示数据的简单实现

    创建测试表 xff1a DROP TABLE IF EXISTS 96 test 96 CREATE TABLE 96 test 96 96 year 96 int 11 DEFAULT NULL 96 month 96 int 11 DE
  • LINUX:window下使用debian安装虚拟环境

    windows系统下 xff0c 使用debian做开发 xff0c 使用的是python编程语言 首先 xff0c 要安装pip 安装命令 xff1a apt install python3 pip 如果使用这个命令后出现如下错误提示 x
  • 如何“优雅地”进行Jetson nano 学习

    RT 其实就是面对多场景应用时 xff0c nano不可能待在同一个地方 xff0c 要么在车上 xff0c 在机器人上 我们扛着一 个大显示器到处跑肯定是不太现实的 xff0c 当然 xff0c 如果想要锻炼身体的同学另说 xff01 改
  • xmake入门,构建项目原来可以如此简单

    前言 在开发xmake之前 xff0c 我一直在使用gnumake makefile来维护个人C C 43 43 项目 xff0c 一开始还好 xff0c 然而等项目越来越庞大后 xff0c 维护起来就非常吃力了 xff0c 后续也用过一阵
  • haproxy负载均衡

    os xff1a root 64 node1 cat etc system release CentOS release 6 4 Final 参考文章 xff1a http www serverlab ca tutorials linux
  • 无线网络wifi (WPA/WPA2)密码破解方法

    无线网络password破解WPA WPA2教程 本教程用于探索无线路由安全漏洞 xff0c 禁止用于非法用途 xff0c 违者法律必究 xff08 与我无关 xff09 在动手破解WPA WPA2前 xff0c 应该先了解一下基础知识 x
  • 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。...

    环境 xff1a 景安快云服务器 xff08 听说很垃圾 xff0c 但是公司买的 xff0c 我也刚来 xff09 xff0c CentOS 6 8 x86 64 xff0c Apache xff0c MySQL5 1 xff0c PHP
  • 【遥感专题系列】微波遥感(三、SAR图像特征)

    SAR是主动式侧视雷达系统 xff0c 且成像几何属于斜距投影类型 因此SAR图像与光学图像在成像机理 几何特征 辐射特征等方面都有较大的区别 在进行SAR图像处理和应用前 xff0c 需要了解SAR图像的基本特征 本文主要包括 xff1a
  • Python可以用来做什么?这4个在平常生活中都可以用到

    Python是一个非常好用的程序语言 xff0c 开发的速度非常快 xff0c 你都知道Python可以用来做什么吗 xff1f 下面我将介绍几个简单的小程序 xff0c 你也可以试一试 xff01 1 网易云音乐批量下载 你可以利用Pyt
  • Next.js脚手架进阶 — 完美契合ant-design

    前言 上次入门完了之后感觉意犹未尽 xff0c 总觉得这个脚手架还是不太完美 xff0c 还有可以改进的地方 xff0c 所以为了与人方便也是与己方便 xff0c 就继续写几篇吧 xff5e xff0c 不过既然之前的叫做入门系列 xff0