你好,我是大圣。

在上一讲中,我给你介绍了如何在 Vue 3 中实现页面和接口的权限管理。我们把 vue-router 的动态路由、导航守卫、axios 的接口拦截等功能配合到一起使用,实现了页面的权限控制,这也算是 Vue 中进阶使用 vue-router 和 axios 的一个方式。

今天,我们再来学习另一个进阶玩法,聊一下如何在 Vue 3 中使用和引入更多的框架。可别小看这里的门道,有的第三方工具框架跟 Vue 耦合性不高,而有的需要做适配,这一讲我就详细给你说说实操中的注意事项,帮助你在提高开发效率的同时少走弯路。

独立的第三方库

首先我们要介绍的第三方框架是 axios,这是一个完全独立于 Vue 的框架,我们可以使用 axios 发送和获取网络接口数据。在 Vue、React 框架下,axios 可以用来获取后端数据。甚至在 Node.js 环境下,也可以用 axios 去作为网络接口工具去实现爬虫。

axios 这种相对独立的工具对于我们项目来说,引入的难度非常低。通常来说,使用这种独立的框架需要以下两步。

以页面进度条工具 NProgress 为例,第一步是,我们先进入到项目根目录下,使用下面的命令去安装 NProgress。

npm install nprogress -D

第二步,就是在需要使用 NProgress 的地方进行 import 的相关操作,比如在页面跳转的时候,我们就需要使用 NProgress 作为进度条。导入 NProgress 库之后,我们就不需要使用 Vue3 的插件机制进行注册,只需要通过 router.beforeEach 来显示进度条,通过 afterEach 来结束进度条就可以了。

import NProgress from 'nprogress' // progress bar
router.beforeEach(async (to, from, next) => {
  // start progress bar
  NProgress.start()
})

router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})

在项目中,我们之后还会依赖很多和 NProgress 类似的库,比如处理 Excel 的 xlsx 库,处理剪切板的 clipboard 库等等。

组件的封装

下面我们以可视化组件为例,来分析复杂组件的封装。之所以选择可视化组件为示例,是因为管理系统中的统计数据、销售额数据等等,都喜欢用饼图或柱状图的方式来展示。

虽然可视化本身和 Vue 没有太大关系,但我们需要在页面中以组件的形式显示可视化图表。对此,我们的选择是用可视化框架 ECharts 去封装 Vue 的组件,来实现可视化组件。

我们再简单介绍一下可视化框架的使用方式,不管你选择用百度的 ECharts,还是蚂蚁的 G2 等框架,在框架的使用方法上,都是类似的。首先,你需要完成图表库的配置,并且填入图表数据,然后把这个数据渲染在一个 DOM 上就可以了。

下面的代码展示了一个 ECharts 的入门案例,代码中我们首先使用 echarts.init 初始化一个 DOM 标签;然后在 options 中配置了图表的结构,包括标题、x 轴等;并且我们还通过 series 配置了页面的销量数据;最后使用 myChart.setOption 的方式渲染图表就可以了。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>ECharts</title>
    <!-- 引入刚刚下载的 ECharts 文件 -->
    <script src="echarts.js"></script>
  </head>
  <body>
    <!-- 为 ECharts 准备一个定义了宽高的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById('main'));
      // 指定图表的配置项和数据
      var option = {
        title: {
          text: 'ECharts 入门示例'
        },
        tooltip: {},
        legend: {
          data: ['销量']
        },
        xAxis: {
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [
          {
            name: '销量',
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      };
      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option);
    </script>
  </body>
</html>

看上面的代码,我们先配置好图表需要的数据,然后使用 setOption 初始化图表,之后在浏览器中打开项目主页面,就可以看到下图所示的这种可视化结果。在你理解了 ECharts 的使用方法后,下一个要解决的问题是,我们该如何在 Vue 3 中集成这个框架呢?答案就是我们自己实现与 ECharts 对应的 Vue 组件即可。