• Vue——element-UI框架、JSON Web Tokens、样式穿透


    目录

    一、element-UI框架

    1.安装: 

    2.引入 (全部导入方式)

    3、use的解释

    4、element-ui 的使用

    二、JSON Web Tokens​​​​​​​

    1、安装egg-jwt

    2、配置

    3、如何创建令牌

     4、案例

    三、样式穿透

    1、 什么情况下使用样式穿透

    2、 样式穿透的三种办法

    1. >>>

    2. /deep/

    3. ::v-deep

    4. :deep()  穿透选择器

    3、/deep/ ,>>>,::v-deep的区别


    一、element-UI框架

    1、纯html-ui框架:layui、 bootstrap 、mui 、jQuery-ui... 

    就是一份写好样式的css代码

    2、基于框架的ui框架:Vue、react...

    写好了样式和基于框架语法的组件的组件库

    Element - The world's most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN

    根据Vue框架的语法,已经是实现了很多组件,只需引入然后注册魏组件,再使用就行了

    1.安装: 

    npm i element-ui -S
     

    2.引入 (全部导入方式)

    import ElementUI from 'element-ui';   //引入组件库,但是注意css有可能会冲突

    import 'element-ui/lib/theme-chalk/index.css';   //引入全局的css样式,整个ui框架的风格

    Vue.use(ElementUI);   //注册全局组件,把ElementUI框架提供的所有组件全部注册为全局组件

    1. import Vue from 'vue';
    2. import ElementUI from 'element-ui'; //引入组件库,但是注意css有可能会冲突
    3. import 'element-ui/lib/theme-chalk/index.css';//全局的css样式
    4. import App from './App.vue';
    5. Vue.use(ElementUI);//注册全局组件==>Vue.component("xxxx",{})
    6. new Vue({
    7. el: '#app',
    8. render: h => h(App)
    9. });

    (一般说use是去给原型绑定东西,但是这里不是,它是去全局注册)

    install(arg){arg就是调用use对象,install会直接运行}

    3、use的解释

    main.js

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. import router from './router'
    4. import store from './store'
    5. //一.自定义全局组件
    6. import Gold1 from './components/Gold1.vue'
    7. //Gold1.name Gold1文件中导出的对象的属性
    8. Vue.component(Gold1.name,Gold1)
    9. Vue.component("mygold",Gold1)
    10. //二.use语法
    11. // let obj={
    12. // //有几个函数 自行研究 我只讲install
    13. // install(arg){
    14. // //agr就是调用use的对象
    15. // // install会直接运行
    16. // arg.prototype.hqyj=100
    17. // }
    18. // }
    19. // let install=(arg)=>{
    20. // arg.prototype.hqyj2=100
    21. // arg.component("mygold",Gold1)
    22. // }
    23. // Vue.use(obj)//会执行obj内部的install
    24. // Vue.use(install)//会直接执行传入install
    25. // import mytool from "./mytool.js"
    26. // Vue.use(mytool)
    27. //三.全部导入方式:
    28. //1.引入ui框架 可以引入多个ui框架 但是注意css有可能会冲突
    29. import ElementUI from 'element-ui';
    30. //2.引入全局css整个ui框架的风格
    31. import 'element-ui/lib/theme-chalk/index.css';
    32. //3.把ElementUI框架提供的所有组件全部注册为全局组件
    33. Vue.use(ElementUI)
    34. //四.按需导入方式:
    35. // import 'element-ui/lib/theme-chalk/index.css';
    36. // import {Switch} from 'element-ui';
    37. // // Vue.component(Switch.name,Switch)
    38. // Vue.use(Switch)
    39. new Vue({
    40. router,
    41. store,//让整个vue项目仓库生效
    42. render: h => h(App)
    43. }).$mount('#app')

    4、element-ui 的使用

    什么是布局?怎么排版的-最核心的就是怎么横着排列模块,竖着是无限高

    1、栅格布局 ==>不是css技术,但是每一种ui框架都有,是css实现出来的,比如bootstrap的栅格就是浮动和定位实现的

    2、css3-columns布局

    3、flex弹性布局

    4、表格布局

    5、.......

    树形控件

    二、JSON Web Tokens

    “ JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理,用法和详细的数据结构。 Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。

    网络请求的过程中,记不住密码,把账号密码发给它的后台,就会生成一个token码,下次登录或者请求网站的任何东西的时候,只需要把token码发给它,就可以登录了

    1、安装egg-jwt

    npm install egg-jwt --save

    2、配置

    1. // {app_root}/config/plugin.js
    2. exports.jwt = {
    3. enable: true,
    4. package: "egg-jwt"
    5. };
    1. // {app_root}/config/config.default.js
    2. exports.jwt = {
    3.   secret"123456"
    4. };

    3、如何创建令牌

    const token = app.jwt.sign({ foo: 'bar' }, app.config.jwt.secret);

    把账号密码加密为暗文
              const token = this.app.jwt.sign({ foo: 'bar' },"xiangmu");  

    把发送的token解密为保存的数据
              let re=this.ctx.app.jwt.verify(ziduan.token, "xiangmu");

     4、案例

    1. async login1() {
    2. var ziduan=this.ctx.request.body
    3. // console.log(ziduan)
    4. //把账号密码加密为暗文
    5. const token = this.app.jwt.sign({ foo: 'bar' },"xiangmu");
    6. console.log(token,111);
    7. this.ctx.body={info:"ok",code:200,token} //把token码发送给前端,然后其它页面把token码本地缓存起来
    8. }
    1. async car(){
    2. var ziduan=this.ctx.request.query
    3. //去数据库中验证是否正确,在加密
    4. //把发送的token解密为保存的数据
    5. let re=this.ctx.app.jwt.verify(ziduan.token, "xiangmu");
    6. console.log(re)
    7. this.ctx.body={info:"test"}
    8. }

    三、样式穿透

    1、 什么情况下使用样式穿透

    引入第三方组件库(如element-ui、element-plus),修改第三方组件库的样式
    样式文件中使用了 scoped 属性,但是为了确保每个组件之间不存在相互影响所以不能去除

    就是使用别人的框架,比如layui,elementUI,想把别人写的东西,改一下样式,颜色等

    就是在控制台找到改盒子的class名,给他写你想要的样式,结果发现不生效,因为自己写的没有别人的优先级高


    2、 样式穿透的三种办法

    1. >>>

    适用与 css、stylus,不太推荐,可能会有问题
    外层类 /deep/ 想要修改类名 {修改样式}

    2. /deep/

    适用于 scss、less
    外层类 >>> 想要修改类名 {修改样式}

    3. ::v-deep

    通用,据说可以加快编译速度
    ::deep 想要修改类名 {修改样式}

    4. :deep()  穿透选择器

    3、/deep/ ,>>>,::v-deep的区别

    • css 使用 >>>
    • less 使用 /deep/
    • scss 使用 ::v-deep

    在style经常用scoped属性实现组件的私有化时,要改变element-ui某个深层元素(eg:.el-input__inner)或其他深层样式时,需要使用/deep/,如

    1. .conBox /deep/ .el-input__inner{
    2.     padding:0 10px;
    3. }

    注意:/deep/在vue 3.0会报错,如果/deep/报错,可采用::v-deep,效果基本一样

    1. .conBox ::v-deep .el-input__inner{
    2.     padding:0 10px;
    3. }

    注意:深度作用选择器 >>>只作用于css,但如果是sass/less的话可能无法识别,这时候需要使用 /deep/和::v-deep 选择器。
     

  • 相关阅读:
    Spring Security是什么? - 简单例子(三)
    python 设置Pyplot的动态rc参数、绘图的填充
    python自动化测试平台开发:自动化测试平台简介
    Linux下Qt打包
    22071.11.20作业
    通过五个维度比较分析关键容灾技术
    mybatis判断是否为空或null
    WordPress页脚配置备案号
    会议OA项目(待开会议&所有会议)
    CVPR2022 Oral OGM-GE阅读笔记
  • 原文地址:https://blog.csdn.net/qq_52301431/article/details/126835840