require或者import引入的模块,怎么移除?

目的:动态切换主题样式
思路:根据选中的主题加载对应的css文件
问题:当切换主题样式时怎样才能将上一次引入的css文件移除

试过删除require的缓存delete require.cache[key],缓存确实是删了,但样式文件并没有被移除;

阅读 8.7k
3 个回答

最终方案,require和import引入的模块无法移除,故采用静态资源引入的方式。
如引入主题样式文件,在webpack配置CopyWebpackPlugin插件,将需要引入的模块复制到静态资源目录,然后通过link标签将文件引入。
通过link标签实现了动态引入,那自然可以给link标签加上ID,便于匹配替换href实现切换和移除等功能

在浏览器里,任何加载到网页的东西,在网页关闭之前都无法“移除”。
正常人实现切换主题的方案都是顶层加一个类名等标记,作为命名空间,然后分别写样式,切换这个命名空间就等于切主题了。靠“移除”样式表文件还是头一回听说。
当然,既然 DOM 可以操作,没准 CSSOM 也可以,可以找找相关的 API 。

给样式包namespace不是才是换皮常规操作么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题