Vuejs .vue文件:动态少导入

问题描述 投票:1回答:1

我有一个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文件中,我定义了许多css变量供less使用(颜色,字体等)。

我想为我的应用程序提供一系列可以动态更改的图形“主题”。

鉴于我可以从界面读取/设置/更改变量cssTheme(并将其设置为“green-theme”,“vintage-theme”,“default-theme”等字符串),如何在飞行中导入和应用适当的较少文件到<style>文件的.vue部分?例如,用户选择“绿色主题”,我想将默认导入文件@import "assets/constants";切换到@import "assets/constants-green";,例如,@color-ui-text;设置为深绿色而不是标准黑色。

css vue.js webpack less
1个回答
-1
投票

如果你使用vue cli,你可以使用这样的东西:

module.exports = {
  css: {
    loaderOptions: {
      sass: {
        data: `
          @import "assets/constants";
        `
      }
    }
  }
};

它会自动在每个sass文件中添加@import "assets/constants";

注意:我在示例中使用sass

更多关于这一点,你可以在这里找到:loaderoptions

© www.soinside.com 2019 - 2024. All rights reserved.