【发布时间】:2020-05-12 00:07:31
【问题描述】:
我正在尝试仅为我的管理组件导入 Material SCSS。
这在本地开发时效果很好,但是一旦我将网站部署到 Firebase 托管,材料样式就会应用于我的所有 SPA,包括客户端。
我试过了:
// Importing the SCSS files within the Admin component ID
#admin {
@import "../../../../node_modules/vue-material/dist/vue-material.min.css";
@import "../../../../node_modules/vue-material/dist/theme/default.css";
}
然后
// Importing the SCSS files within the Admin component CLASS
.admin {
@import "../../../../node_modules/vue-material/dist/vue-material.min.css";
@import "../../../../node_modules/vue-material/dist/theme/default.css";
}
然后我在组件本身中尝试了它
// Importing the SCSS files within the Admin components beforeCreate lifecycle hook
beforeCreate() {
// Ensuring style files only get loaded if this component is used
import("vue-material/dist/vue-material.min.css")
import("vue-material/dist/theme/default.css")
},
最后:
// Importing the SCSS files within the Admin components, which is only rendered if in the
// main App component its v-if is true.
<script>
.
.
.
import "vue-material/dist/vue-material.min.css"
import "vue-material/dist/theme/default.css"
.
.
我认为这可能是因为浏览器中的一些缓存,但是我已经尝试重新加载 Chrome 并尝试了多个不同的浏览器,但问题仍然存在。
此外,我尝试注释掉 CSS 导入并重新部署,这确实有效。所以问题出在Admin 组件中,它是如何导入和加载样式的。
另外奇怪的是,我在组件的created 钩子中添加了一个控制台日志,只是为了检查它是否被创建,即使它不应该创建,但它没有。所以我不知道样式是如何进入的。我认为它们会与构建过程中的所有其他部分混在一起。
我确信有一个简单的解决方案,但我已经用完了。
【问题讨论】:
-
(注意:假设您使用
webpack)请确保它们尚未被其他模块(脚本)加载。另请注意,一旦导入 CSS 模块,您将无法卸载它。 -
我添加了一个新编辑:此外,我尝试注释掉 CSS 导入并重新部署,这确实有效。所以问题出在 Admin 组件中,它是如何导入和加载样式的。所以我确信它不是由双重导入引起的。 @Jin-ohKang
-
您发布的所有代码似乎都很好。构建配置可能有问题,我从未真正使用过 Firebase。
-
请查看stackoverflow.com/questions/49653931/scope-bootstrap-css-in-vue 这是相同的用例,但使用引导 scss 而不是材料。您可能可以使用那里描述的完全相同的解决方案。
-
这行不通,因为它只绑定到
admin类而不是其中的其余元素。
标签: javascript vue.js sass