css - Vuejs .vue 文件:动态少导入
问题描述
我有一个由几个标准.vue
文件组成的 Vue 应用程序,如下所示:
<template>
<h1>My App</h1>
</template>
<script>
export default {
name: 'app',
data () {
return {
cssTheme: 'default-theme'
};
}
}
</script>
<style lang="less">
@import "assets/constants";
html, body {
color: @color-ui-text;
}
</style>
在我的assets/constants.less
文件中,我定义了许多要被less使用的 css 变量(颜色、字体等)。
我想为我的应用程序提供一系列可以动态更改的图形“主题”。
给定我可以从界面读取/设置/更改的变量cssTheme
(并将其设置为“green-theme”、“vintage-theme”、“default-theme”等字符串),我如何动态导入和应用适当的less文件放入文件的<style>
一部分.vue
?例如,用户选择“绿色主题”,我想将默认导入文件切换@import "assets/constants";
到@import "assets/constants-green";
例如@color-ui-text;
设置为深绿色而不是标准黑色的位置。
解决方案
如果你使用 vue cli,你可以使用这样的东西:
module.exports = {
css: {
loaderOptions: {
sass: {
data: `
@import "assets/constants";
`
}
}
}
};
它会自动添加@import "assets/constants";
到每个 sass 文件中
注意:我在示例中使用 sass
更多关于这个你可以在这里找到: loaderoptions
推荐阅读
- java - 在 2D 数组中在 0 和 1 之间循环的 for 循环
- bash - 在命令行上获取 git-commit-ids
- c# - 生成列表
在类似参数中使用索引 - postgresql - Psql 格式化数字,使其始终保留两位小数
- excel - 仅在 30k 行上运行但不再运行的宏
- javascript - 旋转html插入符号不会使用css从中心旋转
- codenameone - 桌面版本上的 iOS 主题?
- sql - 在同一个 select 语句中聚合两个值。由于某种原因,第二次聚合的每一行的价值都在下降
- javascript - PeerJS:找到了 ICE 候选人,但没有建立呼叫
- c++ - Drogon C ++如何在没有阻塞的情况下等待未来?