cssModules可以用于加密和避免重复使用,也就是说可以在当前vue文件中写的样式会生成独一无二的名字,在其他vue文件中是无法调用的,

一、可以直接配cssModules

第一步,配置vue-loader.js文件

const docsLoader = require.resolve('./doc-loader')
module.exports = (isDev) =>{
return {
...
cssModules:{
//在当前vue文件中写的样式会生成独一无二的名字,在其他vue文件中是无法调用的
localIdentName:'[path]-[name]-[hash:base64:5]',
//把css类名为‘-’连接的,转化为驼峰的
//详情见header.vue 如果要vue中css样式用camelCase方法需要在style标签中配置module
camelCase:true
}
... }
}   

第二步 在webpack.config.base.js中配置如下

!!也不一定是webpack.config.base.js  只要是执行用vue-loader 打包vue文件的地址多配置一条即可。

 const createvueLoaderOptions = require('./vue-loader.config')
...
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options:createvueLoaderOptions(isDev)
},
...

第三步  在vue文件中使用module

<template>
<header :class="$style.mainHeader">
<!-- <header :class="$style.mainHeader"> == <header class="main-header">
用了module页面class就生成独一无二的 class="client-layout--header-2AE8s_0"
-->
<h1>JTodo</h1>
</header>
</template>
<!--使用module-->
<style lang="stylus" module>
.main-header{
text-align center
h1{
font-size 100px
color: rgba(175, 47, 47, 0.4)
font-weight 100
margin 20px
}
}
</style>

浏览器中网页生成的class如图

二、如果想使用css-loader的时候也如上可以自定义name如何做呢?

第一步  配置一个option定义一个规则

...
module:{
rules:[
  {
test: /\.styl/,
use: [
'vue-style-loader',
    {
loader:'css-loader',
options:{
module:true,
    //可以开启一个localIdentName
localIdentName:isDev ? '[path]-[name]-[hash:base64:5]':'[hash:base64:5]',
}
},
]
}
]
},
...

 第二步如何使用呢?如下

import '../assets/styles/footer.styl'

export default {
data() {
return {
author: 'Jokcy'
}
},
render() {
return (
<div id="footer">
<span>Written by {this.author}</span>
</div>
)
}
}

  上面的代码 改成如下代码

import classNames from'../assets/styles/footer.styl'

export default {
data() {
return {
author: 'Jokcy'
}
},
render() {
return (
<div id={classNames.footer}>
<span>Written by {this.author}</span>
</div>
)
}
}

  

如图id名字编程了定义好的规则

这样也可以起到一个加密的作用。

有不对的地方请大神多多指教。互相借鉴

vue中cssModules理解可以用于加密和避免重复使用的更多相关文章

  1. vue中v-model详解

    vue中经常使用到<input>和<textarea>这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别.vue使用v-model实现这些标签数据 ...

  2. 关于vue中tamplate和DOM节点浅谈

    前言:在开发前段页面使用vue时,我们能经常看到template标签.这里粗略讲下自己对vue中template理解和使用. 1. 先了解vue vue.js是一个轻巧.高性能.壳组件画的MVVM库. ...

  3. 理解Vue中的Render渲染函数

    理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...

  4. 【转】简单理解Vue中的nextTick

    前言: Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下.其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick ...

  5. 简单理解Vue中的nextTick

    Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下.其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick. 一. ...

  6. vue中config/index.js:配置的详细理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  7. 对vue中 默认的 config/index.js:配置的详细理解 -【以及webpack配置的理解】-config配置的目的都是为了服务webpack的配置,给不同的编译条件提供配置

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  8. vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)

    _ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...

  9. vue中webpack的配置理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

随机推荐

  1. sql 连表

    左外 右外连接 select * from tb1 left   join tb2 on(tb1.id = tb2.id) select * from tb1 right join tb2 on(tb ...

  2. nginx限制IP恶意调用短信接口处理方法

    真实案例: 查看nginx日志,发现别有用心的人恶意调用API接口刷短信: /Jun/::: +] "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) ...

  3. C++中类与结构体的区别

    相信有一点专业知识的人都知道,C语言是一种结构化语言.它层次清晰,便于按模块化方式组织程序,易于调试和维护.在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少 ...

  4. dia无法输入中文的解决

    安装dia后无法输入中文,解决如下: 修改/usr/bin/dia #dia-normal --integrated "$@" dia-normal "$@"

  5. 使用Fragment填充ViewPager

    在上一篇文章中,讲解了使用PagerAdapter作为适配器时的ViewPager的使用方法.然后在实际项目中更多的使用Fragment作为页卡,因为实际开发中每一个页卡要复杂的多.而使用Fragme ...

  6. Django 创建model的一些注意事项

    自增主键字段¶ 默认情况下,Django 会给每个模型添加下面这个字段: id = models.AutoField(primary_key=True) 这是一个自增主键字段. 如果你想指定一个自定义 ...

  7. Oracle创建自增序列

    Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 先建一个测试表了: create table userlogin( id   number(6 ...

  8. BZOJ 2120 数颜色 【带修改莫队】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2120 2120: 数颜色 Time Limit: 6 Sec  Memory Limit: ...

  9. webpack-cli解决办法

    错误信息:Error Cannot find module 'webpack-cli 出现这个错误的原因是因为只全局安装了webpack,没有安装对应的webpack-cli.再打包时是需要webpa ...

  10. C++实现的Buffer类

    写C#的同志一定觉得Byte []比C++的 BYTE * 加 Length的方式好的多.一来,只需要一个对象就可以是表示一段字节流,另一方面,由于C#的特性,不需要象C++那样还要记得删除指针.由于 ...