Vue-封装公共方法

一、创建公共方法文件

首先,创建一个 JavaScript 文件(例如 utils.js)来存放公共方法。

// utils.js
export function formatDate(date) {
  // 将日期对象转换为字符串,格式为 YYYY-MM-DD
  const year = date.getFullYear();
  const month = (date.getMonth() + 1).toString().padStart(2, '0');
  const day = date.getDate().toString().padStart(2, '0');
  return `${year}-${month}-${day}`;
}

export function sumArray(arr) {
  // 计算数组元素的总和
  return arr.reduce((total, num) => total + num, 0);
}

二、在 Vue 组件中使用公共方法

在 Vue 组件中,可以通过导入的方式使用这些公共方法。

<template>
  <div>
    <p>Formatted Date: {{ formattedDate }}</p>
    <p>Sum of Array: {{ arraySum }}</p>
  </div>
</template>

<script>
import { ref } from 'vue';
import { formatDate, sumArray } from './utils.js';

export default {
  setup() {
    const currentDate = new Date();
    const array = [1, 2, 3, 4, 5];

    const formattedDate = formatDate(currentDate);
    const arraySum = sumArray(array);

    return {
      formattedDate,
      arraySum
    };
  }
};
</script>

三、创建 Vue 插件(可选)

如果希望将公共方法作为 Vue 插件使用,可以创建一个插件文件。

// plugin.js
import { formatDate, sumArray } from './utils.js';

export default {
  install(app) {
    app.config.globalProperties.$formatDate = formatDate;
    app.config.globalProperties.$sumArray = sumArray;
  }
};

然后在 main.js 中使用该插件:

// main.js
import { createApp } from 'vue';
import App from './App.vue';
import MyPlugin from './plugin.js';

const app = createApp(App);
app.use(MyPlugin);
app.mount('#app');

这样,在任何 Vue 组件中都可以通过 this.$formatDatethis.$sumArray 来使用这些公共方法:

<template>
  <div>
    <p>Formatted Date: {{ $formatDate(currentDate) }}</p>
    <p>Sum of Array: {{ $sumArray(array) }}</p>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const currentDate = new Date();
    const array = [1, 2, 3, 4, 5];

    return {
      currentDate,
      array
    };
  }
};
</script>

四、解释

  1. 创建公共方法文件:
    utils.js 文件包含了多个导出的函数,如 formatDate 和 sumArray,它们可以执行特定的任务,如日期格式化和数组求和。这些函数是纯函数,接收输入并返回结果,不依赖 Vue 的内部状态。
  2. 在 Vue 组件中使用公共方法:
    通过 import 语句导入公共方法,在 setup 函数中调用它们,并将结果存储在响应式变量中,如formattedDate 和 arraySum。这些变量可以在模板中使用。
  3. 创建 Vue 插件(可选):
    plugin.js 文件将公共方法作为 Vue 插件导出。install 函数接收 Vue 应用实例 app,并使用app.config.globalProperties 将公共方法挂载到 Vue 实例上。
    在 main.js 中,通过 app.use(MyPlugin) 注册插件,使其在整个 Vue 应用中可用。
    在组件中,可以使用 this.$formatDatethis.$sumArray 调用这些方法,利用 Vue 的全局属性机制。
    这样你就可以在 Vue3 中封装和使用公共方法了,根据具体需求可以扩展和修改这些方法。
### 创建可复用的 ECharts 组件 为了在 Vue 2 中创建一个可复用的 ECharts 组件,可以通过定义一个通用的基础组件来实现。这个基础组件能够接收配置项并通过 props 来传递给 ECharts 实例化对象。 #### 安装依赖包 首先安装 echarts 和 vue-echarts: ```bash npm install echarts vue-echarts --save ``` #### 基础组件结构设计 构建名为 `BaseEcharts` 的基础组件文件如下所示: ```vue <template> <v-chart :options="chartOptions"/> </template> <script> import ECharts from &#39;vue-echarts&#39; import &#39;echarts&#39; export default { name: "BaseEcharts", components: { &#39;v-chart&#39;: ECharts }, props: [&#39;chartData&#39;], data() { return {}; }, computed: { chartOptions() { let options = this.chartData; return options; } }, mounted(){ // 初始化图表大小适应容器宽度高度自适应 window.addEventListener(&#39;resize&#39;,this.resizeHandler); }, beforeDestroy(){ window.removeEventListener(&#39;resize&#39;,this.resizeHandler); }, methods:{ resizeHandler(){ this.$refs.echartsChart && this.$refs.echartsChart.resize(); } } } </script> <style scoped> .v-chart { width: 100%; height: 400px; } </style> ``` 此代码片段展示了如何设置一个基本的 ECharts 组件[^2]。通过这种方式,任何想要使用的父级组件都可以向 BaseEcharts 发送特定的数据集和样式选项,从而轻松地重用该组件并展示不同类型的图表。 #### 使用示例 假设有一个页面需要同时显示柱状图和饼图,则可以在相应视图中这样调用上述封装好的组件: ```html <div id="app"> <!-- 柱状图 --> <base-echarts :chart-data="barChartData"></base-echarts> <!-- 饼图 --> <base-echarts :chart-data="pieChartData"></base-echarts> </div> ``` 其中 barChartData 和 pieChartData 是预先准备好的两组不同的 ECharts 图表配置参数,它们分别描述了各自要呈现的内容特性[^3]。 #### 处理多实例问题 当尝试在同一页面上多次使用相同的 ECharts 组件时可能会遇到仅渲染第一个图表的情况。为了避免这种情况发生,确保每次初始化新的 ECharts 实例之前都销毁之前的实例,并且为每个图表分配唯一的 DOM 节点 ID 或者利用 ref 属性区分各个图表实例[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值