vue-cli 下的 CSS Modules

目录

  • [在 js 中使用](#在 js 中使用)
    • [省略 .module](#省略 .module)
  • [在 vue 中使用](#在 vue 中使用)

在 js 中使用

vue-cli 参考

在 Js 中作为 CSS Modules 导入 CSS 或其它预处理文件时,该文件应该以 .module.(css|less|sass|scss|styl) 结尾。

需要安装对应的预处理器和 loader。以 less 为例,需要安装 lessless-loader

举例

foo.module.less

css 复制代码
@color: red;
.container {
  color: @color;
}

test.vue

html 复制代码
<template>
  <div :class="lessStyles.wrap">下雪天的夏风</div>
</template>

<script>
import lessStyles from "./styles/foo.module.less";
export default {
  data() {
    return {
      lessStyles,
    };
  },
};
</script>

注意点:lessStyles 这个对象的 key 是定义的 class 类名,value 是自动生成的字符串。而元素最终添加的类名是 value

渲染结果:

html 复制代码
<div class="index_wrap_AglVD">下雪天的夏风</div>

省略 .module

如果你想去掉文件名中的 .module,可以设置 vue.config.js 中进行设置

1,vue-cli@4.x 版本

js 复制代码
// vue.config.js
module.exports = {
  css: {
    requireModuleExtension: false
  }
}

2,vue-cli@5.x 版本

来自这个 issue解决

js 复制代码
// vue.config.js
module.exports = {
  css: {
    loaderOptions: {
      css: {
        modules: {
          auto: () => true
        }
      }
    }
  }
}

在 vue 中使用

不过赘述,配置参考 官网详细文档

使用举例

html 复制代码
<template>
  <p :class="$style.red">This should be red</p>
</template>

<style module>
.red {
  color: red;
}
.bold {
  font-weight: bold;
}
</style>

以上。

相关推荐
永远是我的最爱1 分钟前
基于.NET的小小便利店前台收银系统
前端·sqlserver·.net·visual studio
从文处安1 分钟前
「九九八十一难」第一难:前端数据mock指南(TS + VUE)
前端
Zhencode21 分钟前
Vue3 响应式依赖收集与更新之effect
前端·vue.js
x-cmd26 分钟前
[x-cmd] jsoup 1.22.1 版本发布,引入 re2j 引擎,让 HTML 解析更安全高效
前端·安全·html·x-cmd·jsoup
天下代码客43 分钟前
使用electronc框架调用dll动态链接库流程和避坑
前端·javascript·vue.js·electron·node.js
weixin199701080161 小时前
【性能提升300%】仿1688首页的Webpack优化全记录
前端·webpack·node.js
冰暮流星1 小时前
javascript之数组
java·前端·javascript
晚霞的不甘2 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
weixin79893765432...2 小时前
Vue 渲染体系“三件套”(template 模板语法、h 函数和 JSX 语法)
vue.js·h函数·template 模板·jsx 语法
xkxnq2 小时前
第五阶段:Vue3核心深度深挖(第74天)(Vue3计算属性进阶)
前端·javascript·vue.js