javascript 如何在React中以编程方式从node_modules导入CSS文件?

unftdfkk  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(80)

我在一个网站上工作,我需要在暗模式和亮模式之间切换。这两种模式使用来自node_modules(来自一个包)的不同CSS文件。现在,我们如何动态导入和使用来自node_modules的CSS文件?
常规导入import cssfile from 'package-name/path/to/cssfile'工作,但是将链接href分配给'package-name/path/to/cssfile'会导致Not Found错误。
使用import语句导入时,CSS文件可以正常工作。但是,要求是基于切换导入文件。

8ljdwjyq

8ljdwjyq1#

您不能以这种方式继续,因为node_modules包在运行时无法直接访问。
在你的项目中,你必须声明两个css,比如“dark.css”和“light.css”。
dark.css上,你可以使用@import(或者任何你想要的,取决于你是在sass,less等)从node_modules导入css:@import '~package-name/path/to/cssfile_dark'你必须对light.css做同样的事情。
这样,在构建项目时,您将生成2个CSS(检查您的conf以添加它们),dark.css和light.css将在运行时访问,这意味着使用href链接。
最好的,
El

knpiaxh1

knpiaxh12#

我认为这不是动态加载css的问题。
对于基本的解决方案,必须以不同的方式应用暗模式。

  • 选项1:动态切换<link />标记(不推荐,你尝试过的)。
  • 不建议使用,因为可能存在样式冲突或样式延迟的问题。
  • 为此,您必须首先将CSS从node_modules复制到public目录,或者按照Errol Lebron的方式(可能需要对其进行构建设置)。
  • 选项2:切换<html><body>等标记上用于标识暗模式的类或属性。
  • 例如:参见tailwindcss - 'class'策略
  • 这可能需要完全编辑CSS。(PostCSS使其变得很简单。)

相关问题