首页 > 其他分享 >Vue 使用插件 Plugin,管理静态常量

Vue 使用插件 Plugin,管理静态常量

时间:2023-03-10 11:24:37浏览次数:32  
标签:插件 Vue const Plugin BIG SCREEN js CARD

Vue 常量使用

第一种方法

单独定义一个 constant.js,内容如下:

  // 大屏卡片标题
  export const BIG_SCREEN_CARD_TITLE = {
    memberCount: '注册人员数',
    todayCount: '安全培训人数',
    totalCount: '培训统计次数',
  }

  // 大屏卡片 icon 
  export const BIG_SCREEN_CARD_ICON = {
    memberCount: 'big-screen-1',
    todayCount: 'big-screen-3',
    totalCount: 'big-screen-2',
  }

在需要使用的文件中引入
import { BIG_SCREEN_CARD_TITLE, BIG_SCREEN_CARD_ICON } from '@/constant.js'

该方法有一个弊端,不能在 template 模板中使用,只能在 js 代码中使用

第二种方法

使用 plugin 插件的思路,将常量挂载到 Vue.prototype 上,目录结构如下:

  1. 定义常量 /src/constants/module/bigScreen.js
```
// 大屏卡片标题
export const BIG_SCREEN_CARD_TITLE = {
  memberCount: '注册人员数',
  todayCount: '安全培训人数',
  totalCount: '培训统计次数',
}

// 大屏卡片 icon 
export const BIG_SCREEN_CARD_ICON = {
  memberCount: 'big-screen-1',
  todayCount: 'big-screen-3',
  totalCount: 'big-screen-2',
}
```
  1. 收集所有模块的常量,暴露常量 /src/constants/module/index.js
```
const EnumModule = {}

const req = context => context.keys().map(context)

/** 批量导入当前文件夹下所有的.js文件
 * @param {} 要搜索的文件夹目录
 * @param {} 是否还应该搜索它的子目录,
 * @param {} 以及一个匹配文件的正则表达式。
 */
const options = req(require.context('./', true, /\.js$/)) 
options.forEach(option => {
  Object.assign(EnumModule, {...option})
});

export default EnumModule
```
  1. 定义 plugin 插件函数,将所有常量挂载到 Vue 上 /src/constants/enum.js
```
const EnumUtil = {}
EnumUtil.install = function (Vue, data = {}) {
  const constInfo = {...data}
  const Enum = {...data}
  /**
   * @param {} constName    枚举对象的名称 
   * @param {} value        枚举值 
   * @param {} desc         枚举值对应的描述 
   */ 
  Enum.getConst = function(constName, value) {
    if(!constInfo.hasOwnProperty(constName)) {
      return ''
    }
    let constItem = constInfo[constName] // 通过传进来的名字拿到所对应的常量项
    for(let item in constItem) {
      if(constItem[item].value === value) {
        return constItem[item].value
      }
    }
  }
  Vue.prototype.$enum = Enum;  // 挂载到原型上面
}
export default EnumUtil
```
  1. 执行 plugin 函数,挂载到 Vue.prototype 上 /src/constants/index.js
```
import Vue from 'vue'
import Enum from './enum'
import EnumModule from './module'
Vue.use(Enum, EnumModule)
```
  1. 引入到 main.js 入口文件
    // 引入常量
    import '@/constants/'

  2. 使用
    1. 在 js 中使用

    this.$enum['BIG_SCREEN_CARD_TITLE']
    
    1. 在 template 中使用
    <div>{{$enum['BIG_SCREEN_CARD_TITLE']}}</div>
    

标签:插件,Vue,const,Plugin,BIG,SCREEN,js,CARD
From: https://www.cnblogs.com/why-cn/p/17202593.html

相关文章

  • vue2和vue3
    双向绑定更新vue2的双向数据绑定是利⽤ES5的⼀个API,Object.defineProperty()对数据进⾏劫持结合发布订阅模式的⽅式来实现的。vue3中使⽤了ES6的ProxyAPI对......
  • vue3中 defineComponent
    在这个例子中,父组件引用了MyComponent组件,并通过props传递了一个字符串作为message属性的值。在MyComponent组件中,我们可以通过props参数来获取这个值,并在se......
  • vue (或者 javascript ) 打印彩色日志
    typeAny=any/***创建console所需的style样式*@parambgColor*@paramfontColor*/constcreateStyle=function(bgColor:string,fontColor='#fff......
  • 【django-vue】celery延迟任务、定时任务 django中使用celery 秒杀功能 双写一致性
    目录上节回顾字符编码django-redis今日内容1celery执行异步任务,延迟任务,定时任务延时任务定时任务2django中使用celery2.1秒杀功能2.1.1视图2.1.2任务order_task.p......
  • vue获取公网ip
    <template><div><div>YourPublicIP:{{publicIP}}</div></div></template><script>exportdefault{data(){return{publicIP:''......
  • vue3+vite+element-plus按需加载动态图标icon优化方案
    1、问题:element-plus中icon跟element中的icon完全不同,使用也很多变化,最重要的一点就是按需动态加载了,主要用到unplugin-icons这个库根据按需加载icon的使用方法,是无法满......
  • 初识rollup 打包、配置vue脚手架
    rollupjavascript代码打包器,它使用了es6新标准代码模块格式。特点:面向未来,拥抱es新标准,支持标准化模块导入、导出等新语法。treeshaking静态分析导入的代码。......
  • 不坑盒子:强大的word插件,让工作更高效
    不坑盒子简介很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档......
  • 在教学中常被问到的几个vue3.x与typescript的问题,统一解答
    在教学当中,学生在学习vue3.x时,常常会问到typescript和vue3.x之间的关系,感觉这两个技术总是绑在一起的,下面老赵来统一解答一下: 那学vue3.x,为什么要求也要掌握typescrip......
  • ant-design-vue 视频上传组件封装处理
    /**视频上传组件*/<template><div><a-uploadlistType="picture-card":accept="acceptType":action="uploadVideo":fileList="fil......