如何在vue-cli中使用css-loader实现css module


Posted in Vue.js onJanuary 07, 2021

【前言】

无论是vue还是react的css模块化解决方案都是依赖loader来实现的 在使用上,vue中用scoped属性实现样式的私有化,利用深度作用选择器/deep来实现样式的去私有化。

例子:

<div>
  <div class="demo">
    <div class="child"></
    div>
  </div>
</div>
<script>
// some code
<script/>
<style lang="less" scoped>
 .demo {
  height: 100px;
  padding-top: 20px;
  background-color: grey;
  /deep/.child {
   color: red;
  }
 }
</style>

在react中使用上是这么搞的(基于css-loader):

//test.less
.demo {
  height: 100px;
  padding-top: 20px;
  background-color: grey;
  :global(.child) {
    color: red
  }
}
import styles from './test.less'

// some code

<div className={styles.demo}>
  <div class="child"></div>
</div>

不得不说,在使用上还是vue比较方便。

如果硬要在vue中使用css-loader实现css module的这套解决方案呢?这里以vue-clie 3.x为例。

无论在vue的脚手架vue-cli中还是在react的脚手架umi中,,现在都使用了webpack-chain来实现配置webpack.

这里在vue-cli脚手架创建的项目根目录下,新建vue.config.js,并写入如下内容:

module.exports = {
 chainWebpack: (config) => {
  config.devServer
   .proxy({
    '/api': {
     target: 'http://localhost:3000',
     pathRewrite: { '^/api': '', },
    },
   })
   .port(9000);

  config.module
  .rule('less')
  .oneOf('normal-modules')
  .test(/.less$/)
  .use('css-loader')
  .tap(options => {
   return Object.assign(options, {
    modules: {
     localIdentName: '[name]__[local]___[hash:base64:5]',
     auto: /\.less$/i,
    },
   })
  });

 },
};

本来其实也不用写这段内容,默认情况,vue-cli的脚手架已经配置了css-loader的模块化,但是需要把less文件命名成xxx.module.less的形式,这和umi那套不同,也不方便,这样配置然后重启,就能像react一样写css了,另外把引入的style存入data中。这里只是说下可以在vue-cli使用css-loader的那套解决方案,但最佳实践还是用vue自带的那套。

以上就是如何在vue-cli中使用css-loader实现css module的详细内容,更多关于vue-cli中使用css-loader实现css module的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
Vue实现简单购物车功能
Dec 13 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
vue 给数组添加新对象并赋值
Apr 20 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
vue3中轻松实现switch功能组件的全过程
Jan 07 #Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 #Vue.js
详解Vue2的diff算法
Jan 06 #Vue.js
vuex的使用步骤
Jan 06 #Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 #Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 #Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 #Vue.js
You might like
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
python和php学习哪个更有发展
2020/06/17 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
地道战观后感500字
2015/06/04 职场文书
春风化雨观后感
2015/06/11 职场文书
Apache POI的基本使用详解
2021/11/07 Servers