next.js下css-module和组件的import样式共存的配置方法

Fela函数式样式方案:React中可测试、可组合的CSS-in-JS框架 在现代前端工程中,CSS-in-JS已从语法糖演进为样式状态管理的核心范式。Fela作为以函数式思维重构样式的底层框架,将样式声明抽象为纯函数(props → CSS规则),天然支持memoization、组合与单元测试,显著提升中大型React应用的可维护性与运行时可控性。其核心机制——createRenderer定义样式生成逻辑、Provider实现渲染器注入——使样式具备响应式投影能力,契合React 18并发渲染与Server Components对无副作用计算的要求。广泛应用于Shopify、BB 阅读详情

Next.js是一个轻量级的 React 服务端渲染应用框架。还是头一回用这种服务端渲染的框架,之所以会做服务端渲染,是因为这个项目是一个纯展示性的品牌官网,所以需要为SEO考虑,由于SPA对搜索引擎并不友好,所以选择了Next.js来进行服务端多页渲染。使用了之后发现,其实从编码的思维来看,其实还是组件式的单页思想。

这里想拿出来说说的是在这个项目中,我们开启了css-module,但在后来的开发过程中需要引入其他组件,却发现样式无法加载出来,这里简单记录一下在解决这个问题的一个过程。

这里我们以Tab组件为例,我们使用的是rc-tabs,除了需要引入Tab组件之外,还需要引入其对应的样式,

引入css文件:

 

import 'rc-tabs/dist/rc-tabs.css';

这时发现引入的样式并没有生效,这是由于开启了css-module,webpack会为编译之后的class类名加上哈希值,也就意味着,组件对应样式的class类名发生了变化,但是组件DOM对应的class名并不会变化,这就是样式无法正常使用的原因。所以解决方案是,在过css-module编译时应该忽略组件自带的样式。找到了问题所在,解决之。

修改配置文件,next.config.js的配置如下:

 

const withCss = require('@zeit/next-css');
const withLess = require('@zeit/next-less');
const path = require('path');
const cssLoaderGetLocalIdent = require('css-loader/lib/getLocalIdent.js');

module.exports = withLess(
  withCss({
    exportPathMap() {
      return {
        '/': { page: '/' },
        '/about': { page: '/about' },
        '/article': { page: '/article' },
        '/articleList': { page: '/articleList' },
        '/business': { page: '/business' },
        '/course': { page: '/course' },
      };
    },
    cssModules: true,
    cssLoaderOptions: {
      localIdentName: '[local]___[hash:base64:5]',
      getLocalIdent: (context, localIdentName, localName, options) => {
        const hz = context.resourcePath.replace(context.rootContext, '');
        console.log(hz);
        if (/node_modules/.test(hz)) {
          return localName;
        }
        return cssLoaderGetLocalIdent(context, localIdentName, localName, options);
      },
    },
    distDir: './.next',
    webpack: (config, options) => {
      // Fixes npm packages that depend on `fs` module
      config.node = {
        fs: 'empty',
      };
      config.resolve.alias['@'] = path.join(__dirname);
      return config;
    },
  }),
);

主要看这里:其实就是对CSSLoader配置了一下,在getLocalIdent中忽略了对node_modules下的样式的module化处理~

 

styled-modules:Next.js中CSS模块支持 样式化的模块 Next.js中基于CSS模块支持。 安装 样式化模块使用CSS Loader启用CSS模块,运行以下命令进行安装: npm install css-loader --save-dev 接下来,运行以下命令以安装样式化模块: npm install styled-modules 配置 在Next.js项目目录的根目录中,使用以下命令创建next.config.js : // next.config.js module . exports = { webpack ( config , { dev } ) => { config . module . rules . push ( { test : / \. css $ / , use : [ 'babel-loader' , ' 立即下载

相关推荐

USB2.0基础知识总结

目录 1、协议层: 1.1、域分类 1.2 、USB传输方式: 1、协议层: 域和包定义:包是一次传输的单位,每个包由多个域组成; USB中是按照LSB进行字节传输; 1.1、域分类 1.1.1: 同步域(SYNC field) 所有的包都开始于同步域,在低速和全速通信中SYNC field用7个0和1个1来表示。 由于USB2.0使用了NRZI编码(0用翻转来表示,1用不翻转表示),所以00000001就是上图那样。 ...

qq_32938605的博客 4409

next框架 引入less、less module ,antd、 ant-mobile,配置postcss.config.js文件对移动端文件做适配处理实践

背景 前端项目需要一套同构方案的PC 移动端活动仓库 需求:- pc 标准样式 无需缩放 使用antd UI 组件库 - 移动端 使用vw 做适配 使用antd-mobile less less module 思路 next.config.js 配置文件中处理 less less-module 的用法 pstcss.config.js 文件中处理适配问题 过河 问题一、 postcss配置 参数不正确 postcss-loade

qq_42359718的博客 2798

拆解博世、大陆的EMB方案:自增力机构如何省下83%的能耗?

本文深度解析了博世和大陆的电子机械制动(EMB)技术,重点探讨了自增力机构如何实现83%的能耗节省。通过对比电机直驱型和自增力型EMB的技术参数,揭示了自增力机构在能量优化和系统集成方面的创新优势,为汽车电动化和智能化提供了关键技术支持。

weixin_42665725的博客 394

nextjs13中cssModule设置子标签的样式

最近在学习nextjs中发现,如果在cssModule文件中直接设置子标签的样式比较麻烦,最后在网上看到一种方式可以解决,方式如下。ps: 此方式不一定最优,因为在我看来此代码耦合性太高了,看着不太舒适,因为我的文件目录是包含有一个css样式,所以想把样式统一在css中,后面找到解决办法再更新。

https://ligo100.cn 小何博客欢迎访问。 517

Kotlin kapt插件报错全解析:从Could not load module到彻底解决(含Gradle 8.2.2适配指南)

本文深度解析了Kotlin开发中常见的kapt插件报错“Could not load module”的根源,并提供了从诊断到解决的完整方案。重点探讨了Gradle 8.2.2与Kotlin 1.9.x的兼容性问题,包括JVM IR后端冲突、配置缓存问题及依赖版本对齐,并给出了详细的调试技巧与迁移至KSP的建议。

rrr55的博客 315

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧

本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。

zero1的博客 998

Next.js框架中引用css样式

新版的next.js框架中可以直接引用css样式,不过是全局引入和组件引入是分开的 在样式文件夹中有两个css文件,第一个是全局样式的引入,第二个是组件的css样式,这的css文件后缀名是固定的,改成其他的会报错,不加module next.js框架会误以为是全局样式,会引发冲突报错。 全局样式和第三方库的css样式要统一在_app.js中引入: //_app.js import 'antd/dist/antd.css' export default function MyApp({ Comp

qq_42490210的博客 2582

VirtualBox虚拟机上ubuntu系统安装问题记:显示画面太小、启动就异常退出等

报错:Failed to load R0 module D:/VMMR0.r0: The path is not clean of leading double slashes: ‘D:/VMMR0.r0’ (VERR_SUPLIB_PATH_NOT_CLEAN).解决方法特别简单,就是安装VIrtualBox的时候不要安装在CDE等盘根目录下。首先VirtualBox的下载安装过程是比较简单的,此处就不赘述了。然后E盘下新建个目录,安装到这个目录下就可解决。

qq_42595610的博客 2825

Next.js+React进门记006【理解掌握next.js的CSS Modules管理功能】

大致理解了next.js的样式运用方式后,分别为components文件夹下的Footer.js、Headline.js、Links.js、Main.js组件建立各自独立的样式。接下来在styles文件夹下拷贝一份Home.module.css,粘贴到components文件夹中,并重命名为Headline.module.css,删除无关的样式代码。以Home.module.css样式文件的.container类为例,查看next.js的写法和浏览器中的显示方式。

kaikyou3000的博客 1075

【生物识别模组介绍】静脉识别模组

静脉识别技术是依据流动的静脉血液中的血红蛋白对近红外光有所吸收,通过近红外光照射手指、手掌、面部、腕部呈现的分布图像,再使用特定的算法对图像进行特征提取、分析比对,从而进行身份认证识别。静脉结构相同几率为34亿分之一,每个人的静脉结构具有独特性,而且静脉特征图像自成年后终身不变,不受外部环境、疾病等影响,是人体最稳定的生物特征之一。商务合作联系:newmagicmission@gmail.com图1.0。

upupDay's blog 900

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

nextjs和css的结合

nextjs和css结合 最近学习nextjs,在css上踩了不少的坑,nextjs对于css的约束相比于平常开发要多一些,另外还和css module结合,很容易出错,下面把nextjs和css结合总结下来。 _app.js 在全局的_app.js中nextjs和正常开发使用一样,直接import引入就行 import '../styles/page/comm.css' import 'antd/dist/antd.css' function MyApp({ Component, pageProps })

weixin_45645373的博客 1065

Qt Creator 启动慢、卡顿、无响应 终极解决教程

<think>我们需根据内容生成≤150字的摘要。摘要要涵盖问题、原因、解决方案和效果。注意字数限制。</think>Qt Creator启动慢、卡顿、无响应,主因是配置文件QtCreator.ini膨胀至数十MB(正常<100KB)。删除%APPDATA%\QtProject下的膨胀配置、崩溃备份及qtcreator.db即可,启动从几十秒降至几秒,内存占用恢复正常。辅助优化:关闭有道词典取词、禁用无用插件、调整clangd设置。定期检查配置文件大小,避免多版本共用配置。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 70

为什么土耳其语TTS一直缺这块拼图?alania-speech-captions-tr 与英文 voice-caption 数据集对比解析

alania-speech-captions-tr 是目前唯一的**土耳其语 TTS 语音描述字幕(voice-caption)数据集**:835,267 个土耳其语语音片段、约 2,398 小时,每段都配有"这句话说起来是什么样"的自然语言描述(英/土双语),并附带音高、语速、停顿、噪声等底层测量数据。本文对比它与英文 voice-caption 数据集的差异,讲清这套数据是如何炼成的、能解决什

gitblog_00507的博客 228

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Next.js App Router 与 vanilla-extract 集成指南:用 CSS-in-TS 构建零运行时类型安全样式

> 本指南基于 [examples/with-vanilla-extract](https://link.gitcode.com/i/df5ce515451313426a7d3628a75891d8) 官方示例,系统讲解如何在 Next.js App Router 项目中接入 vanilla-extract:从脚手架创建、插件配置、全局样式到组件级样式的完整写法。读完你将掌握 `globalSty

gitblog_00207的博客 462

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Nx 导入 Next.js 项目专项指南:`nx import` 迁移路径、配置修复与 `@nx/next/plugin` 源码解析

本指南以 Nx 官方技能库中的 `nx import` Next.js 专项参考文档([NEXT.md](https://link.gitcode.com/i/58e9acb1b8028cfb0cb81a9d810f20da))为核心骨架,系统讲解在将 Next.js 项目导入 Nx 工作区时遇到的目标推断、依赖修复、tsconfig 冲突、脚本重写等问题的成因与解决方案,并结合本仓库中 `@nx

gitblog_00100的博客 946

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

在 Next.js 中集成 react-toolbox:借助 react-toolbox-themr 实现 Material Design 主题化组件

本文以仓库中的 [with-react-toolbox 示例](https://link.gitcode.com/i/c3824cf61d51d544a94c79cba56fbf52) 为核心,系统讲解如何在 Next.js(Pages Router)应用中接入 Material Design 风格的 react-toolbox 组件库,并利用 react-toolbox-themr 将主题定制结

gitblog_01187的博客 404

MyBatis-Plus 3.5.8 在 JDK8 下编译报错?快速定位根因与修复路径

MyBatis-Plus 3.5.8 项目在 JDK8 下编译时抛出 `class file has wrong version 55.0, should be 52.0`。报错根源是随版本升级引入的 `jsqlparser-5.0` jar。看到这条报错,基本就是这个情况。 ## 一句话结论 📌 根因:3.5.8 把传递依赖 JSQLParser 升到 5.0,而该版本按 JDK11 字节

gitblog_00625的博客 279

Material UI + Tailwind CSS v4 + Vite + TypeScript 一体化示例工程实战指南

本指南围绕当前仓库中 `examples/material-ui-vite-tailwind-ts` 示例工程展开,它是官方为开发者准备的“开箱即用”工程模板:在 **Vite + TypeScript** 的现代前端基建之上,同时接入 **Material UI**(基于 Emotion 的组件体系)与 **Tailwind CSS v4**(CSS-first 的原子化样式体系),并用一个可运

gitblog_00750的博客 768

vite-plugin-storybook-nextjs 实战指南:在 Vite 与 Vitest 中原生运行 Next.js 特性

`vite-plugin-storybook-nextjs` 是 Storybook 仓库中官方维护的 Vite 插件,它把 Next.js 的应用能力(Image 组件、字体、路由、Server Actions、SWC 编译等)完整移植到纯 Vite 构建链路中,既是 `@storybook/nextjs-vite` 框架的底层基础,也是通过 Vitest 运行 portable stories

gitblog_00570的博客 367

在 Next.js 中集成 tsParticles 粒子动画:with-particles 官方示例全解析

本文围绕 Next.js 官方仓库中的 [examples/with-particles](https://link.gitcode.com/i/205591994e168b46e338dd315ca74299) 示例展开,讲解如何在 Next.js 应用中借助 `react-tsparticles` 与 `tsparticles-engine` 实现全屏粒子背景动画(含连线、悬停抓取与点击扩散等

gitblog_00533的博客 394

在 Next.js 中集成 Convex:解读 convex-backend 官方 quickstart 项目

`npm-packages/private-demos/quickstarts/nextjs` 是 convex-backend 仓库中演示 **Next.js + Convex 前后端一体化开发**的官方快速启动示例。它基于 `create-next-app` 脚手架搭建,并预先接入 Convex 响应式数据库,展示了一条"写函数 → 生成类型 → 前端订阅查询"的最小可用链路。读完本文,你将掌

gitblog_01134的博客 954

ice.js 集成 Fusion 组件指南:@ice/plugin-fusion 按需引入、主题定制与推荐实践

ice.js(基于 React 的渐进式应用框架)项目中可以直接使用 Fusion(`@alifd/next`)组件。本文围绕 [website/docs/guide/advanced/fusion.md](https://link.gitcode.com/i/b3b209d93599eb4e4fb920bbc38fdc32) 展开,系统讲解"是否需要用插件、如何开启插件、三个核心配置项(impo

gitblog_00444的博客 336

next-page-tester Jest配置完整指南:testEnvironment、moduleNameMapper与自动初始化机制详解

🎯 **next-page-tester** 是一个专为 Next.js 提供 **DOM 集成测试** 的开源工具(已标记 DEPRECATED)。它能在 Jest 中直接渲染真实的 Next.js 页面,包括路由、数据获取和 `_app`。要实现这一点,它自身的 Jest 配置做了大量巧思。本文带你完整读懂它的 **testEnvironment、moduleNameMapper 与自动初始

gitblog_00617的博客 394

一步步从 CSS Modules 切换到 Tailwind CSS:用 TaoToken 统一 Key 打通 AI 辅助迁移配置

用 TaoToken 统一 Key 打通 AI 辅助迁移:从 CSS Modules 逐步切换到 Tailwind CSS,先配好 settings.json 与 config.toml 骨架,再让 AI 生成类名映射并单组件验证。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 提供统一 Base URL 与 Key,减少 401 与通道中断,迁移效率提升约三倍。

weixin_42576467的博客 72

在 ice.js 中使用 Fusion 组件:@ice/plugin-fusion 插件完整指南

Fusion(@alifd/next)是阿里前端体系中使用广泛的企业级组件库,而 `@ice/plugin-fusion` 正是 ice.js 官方提供的、用于在基于 React 的 ice.js 应用中无缝接入 Fusion 组件与 Design 主题体系的构建插件。通过阅读本文,你将掌握该插件的安装配置、三大核心选项(`importStyle`、`themePackage`、`theme`)的

gitblog_00052的博客 473
上一篇: 菜鸟学习笔记之React-Quill富文本编辑器
下一篇: p 标签里面不能嵌套 div 标签
天府第5街①号切图仔
博客等级 码龄9年 32粉丝 25原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值