reactjs - 在现有网站(使用范围样式和静态)中注入 React 应用程序(使用 sass 模块)
问题描述
我有一个有一些特殊需求的反应应用程序。反应应用程序规格是:
- 打字稿
- sass 模块(每个组件都导入自己的 scss 文件,该文件导入常用的 sass 项目变量)
- CRA + React-app-rewired(PS:我可以修改 sass 部分以将所有模块移动到单个 scss 入口点,我不喜欢这样做,但如果我必须这样做也可以)
react 应用的需求是:
- 以尽可能简单的方式附加到现有网站(例如:单个脚本资源链接和 html dom 元素)。
- 受到网站样式的“保护”。
一种解决方案是使用 web 组件将 react 应用程序包装在 shadow-root 中。这可能很好,但还有另一个问题。默认的 webpack react 配置在<head>
和<body>
. 由于 shadow-root.react 应用程序无法访问这些文件。
我找到了几个可以解决这个问题的插件(react-web-component和react-web-component-style-loader)但似乎它们只适用于 css-loader (我试图修改 webpack 规则以使用 scss 文件,也许我搞砸了)
config.module.rules.push({
test: /\.scss$/,
use: [
{ loader: "react-web-component-style-loader" },
{ loader: "sass-loader" }
]
});
但我没有成功。我还检查了 defaultmodule.rules
以找到适用于文件的默认规则,以在数组.scss
中添加新加载程序。use
我找到了(config.module.rules[1].oneOf[sassLoaderRuleId].use
),我添加了规则,但没有任何变化。webcomponent 正确加载了 JS 文件,它显示了我的应用程序(这似乎完全可以工作,我还没有测试过)但是 shadow-root 内没有编译的 css/静态资源。
另一种解决方案可能是使用 iframe(在一个简单的 Web 组件中),但我更喜欢将此解决方案用作最后的机会。
有人可以帮我找到解决问题的方法吗?
解决方案
推荐阅读
- python - python 在使用 text_box.get() 时没有将 str 值转换为 int (在 Tkinter 中)
- java - 如何在@PrePersist 方法中获取类对象
- django - corss 域登录问题 sessionid cookie 未在 aws eb 上的 django-graphql 后端 api 中设置
- powershell - 如何根据使用 PowerShell 选择的文件夹自动创建复选框?
- sql - Oracle XMLtable 提供交叉连接的数据
- c# - 从 JavaScript 调用 .razor 页面中的实例方法
- javascript - 基于正则表达式的行删除脚本(JS)不起作用
- java - 有没有办法让 java.awt.Choice 进一步下拉?
- android - Reliance JIO 网络中很少有 Android 应用程序无法/突然无法运行
- python - Scrapy Splash AttributeError:“HtmlResponse”对象没有属性“数据”