当前位置:   article > 正文

scss :export 中导出的变量与Vue JavaScript共享无效

scss :export

最近在尝试的搭建vue2框架,遇到了一个问题scss中导出的变量,在vue文件js中获取值为undefine

1.首先,在scss中配置要导出的变量

  1. /* variables.scss */
  2. $yellow: #f6d80c;
  3. :export {
  4. yellow: $yellow;
  5. }

2.在vue文件导入变量并使用

  1. <template>
  2. <div>
  3. <h1>This is a H1 Title with color yellow.</h1>
  4. <!-- 这里的active-color可以使用import的variables变量-->
  5. <el-switch v-model="var1" :active-color="variables.yellow"> </el-switch>
  6. </div>
  7. </template>
  8. <script>
  9. /* 引入变量样式文件 */
  10. import variables from '@/style/variables.scss';
  11. export default {
  12. data() {
  13. return {
  14. var1: true,
  15. variables, // 使用scss的:export的变量
  16. };
  17. },
  18. };
  19. </script>
  20. <style lang="scss" scoped>
  21. /* 引入变量样式文件 */
  22. @import "~@/styles/variables.scss";
  23. h1{
  24. color: $yellow;
  25. }
  26. </style>

理论上这样就行了,但是经测试style中进行@import样式是生效的$yellow变量值也是正常传递,但是在js中variables.yellow始终undefine,查看了CSS Modules

你可以通过 <style module> 以开箱即用的方式在 *.vue 文件中使用 CSS Modules。
如果想在 JavaScript 中作为 CSS Modules 导入 CSS 或其它预处理文件,该文件应该以 .module.(css|less|sass|scss|styl) 结尾:

任何以 .module.css (scss最终会翻译成css)为后缀名的 CSS 文件都被认为是一个 CSS modules 文件。导入这样的文件会返回一个相应的模块对象;

解决方案:

将对应文件名variables.scss改为variables.module.scss,

script引入:import variables from '@/style/variables.module.scss';

style引入:@import "~@/styles/variables.module.scss"; 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/82365
推荐阅读