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. Maven高级应用--编译全模块包-dist包

    1. 在需要生成dist包的模块级别,新建文件夹xxx-xxxx-dist 2. 进入目录,新建pom.xml,建议copy 3. dependencies节点,把要编译成全局包的应用引入进来 < ...

  2. Python函数式编程(进阶2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6411915.html 本文出自:[Edwin博客园] Python函数式编程(进阶2) 1. python把 ...

  3. 一个理解PHP面向对象编程(OOP)的实例

    <?php //定义一个“人”类作为父类 class Person{ //声明一个新变量公共变量$name,可被任何包中的类访问 public $name;//人的名字 public $sex; ...

  4. 【[POI2006]OKR-Periods of Words】

    很妙的一道题 感觉又加深了对\(KMP\)还有\(next\)数组的理解 先来看看这个鬼畜的题意,大致就是给你一个字符串,对于这个字符串的每一个前缀,要去找到这个前缀的一个最长的前缀,使得前缀成为这个 ...

  5. boost tss.hpp源码分析

    tss.hpp定义了thread_specific_ptr,使用thread local storage 技术 1.在thread目录下的win32和pthread目录下thread_data.hpp ...

  6. PHP 中的 cURL 爬虫实战基础

    最近准备入手 PHP 爬虫,发现 PHP 的 cURL 这一知识点不可越过.本文探讨基础实战,需要提前了解命令行的使用并会进行 PHP 的环境搭建. cURL 的概念 cURL,Client URL ...

  7. spring mvc(4)处理模型数据

    处理模型数据 Spring MVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加 模型数据 – Map ...

  8. ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系

    ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景. ...

  9. P2894 [USACO08FEB]酒店Hotel

    P2894 [USACO08FEB]酒店Hotel 简单的线段树维护区间信息. 维护三个值,一个是从左端点能拓展的长度,一个是从右端点能脱产的的长度.另一个是整个区间内的最大连续零一长度. 记录这三个 ...

  10. (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)

    (CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...