web前端之若依项目窗口大小改变或侧边栏伸缩时echarts图表自适应、封装执行文件和模板文件、展开、折叠、ApacheECharts、KeepAlive、RouterView、deactivated

这篇具有很好参考价值的文章主要介绍了web前端之若依项目窗口大小改变或侧边栏伸缩时echarts图表自适应、封装执行文件和模板文件、展开、折叠、ApacheECharts、KeepAlive、RouterView、deactivated。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

如需完整代码请WX私聊: MJ682517
没有任何套路,直接发代码
vue项目中,窗口大小不变(排除window的resize监听),侧边菜单栏折叠展开,导致右边内容区域宽度变化,echarts图表不会自适应。常规解决办法的是使用window.addEventListener(“resize”)来监听窗口变化,但当前窗口大小并没有变,内部元素的宽度变化不会触发resize
这个功能在网上也找到一些解决方案,但是都不全,缺胳膊少腿的都有,又不想使用插件,于是就自己动手实现,希望本文能帮到你。
有兴趣的朋友可以把此功能封装到混入(mixin)中。


效果图

npm publish --force,web前端,Vue,ECharts,前端,web,vue,elementui,echarts


自适应公共方法

handleResize() {
  this.idStackedColumnChart.resize();
},

resize监听需要使用函数作为参数,专门封装handleResize函数来执行echarts实例中的resize方法。


窗口缩小或放大时echarts图表大小自适应

// 窗口缩小或放大时echarts图表大小自适应(开始监听)
window.addEventListener("resize", that.handleResize, true);

侧边栏伸缩时echarts图表大小自适应

// 侧边栏伸缩时echarts图表大小自适应(开始监听)
that.unWatch = that.$watch(
	// 获取全局变量,此变量控制菜单的展开与折叠
	// 当点击菜单栏按钮实现伸缩时此变量会发生变化
  () => that.$store.state.app.sidebar.opened,
  // 执行echarts自适应函数
  // 设置定时器是因为element-ui的菜单组件有300毫秒的动画
  // 需要等到动画加载完毕再执行echarts自适应,否则不起作用
  () => setTimeout(() => that.handleResize(), 300)
);

npm publish --force,web前端,Vue,ECharts,前端,web,vue,elementui,echarts


deactivated

deactivatedkeep-alive组件页面卸载时被触发的生命周期函数。
若依框架使用keep-alive组件包裹router-view路由组件,导致页面卸载时的生命周期函数无法触发。
使用keep-alive组件自带的deactivated生命周期函数来解决页面卸载时的触发问题。

npm publish --force,web前端,Vue,ECharts,前端,web,vue,elementui,echarts


完整代码

html

<template>
  <div class="app_container home">
    <el-row :gutter="20">
      <el-col :sm="24" :lg="24">
        <div id="idStackedColumnChart" class="w_100_ h_268"></div>
      </el-col>
    </el-row>
  </div>
</template>

JavaScript

export default {
  name: "Index",
  data() {
    return {
      // 保存echarts实例,自适应时需要执行自身的resize方法
      idStackedColumnChart: undefined,
      // 保存监听实例,销毁时需要执行
      unWatch: undefined
    };
  },
  // 第一次进入页面时触发
  // 二次进入页面后不会触发
  // 这与keep-alive组件有关
  mounted() {
    this.handleNextTick();
  },
  // 重新进入页面时触发
  // 首次进入页面时不会触发
  activated() {
    this.handleNextTick();
  },
  deactivated() {
  	// 解决窗口缩小或放大时echarts图表大小自适应(卸载监听)
    window.removeEventListener("resize", this.handleResize, true);
    // 侧边栏伸缩时echarts图表大小自适应(卸载监听)
    this.unWatch();
  },

  methods: {
  	handleNextTick() {
      let that = this;
	  
	  // 需要等页面加载完才能获取到DOM元素
	  // 有了DOM元素才能渲染echarts
      that.$nextTick(() => {
      	// 初始化时保存echarts实例
        if (!that.idStackedColumnChart) that.idStackedColumnChart = that.handleInit();
		
		// 窗口缩小或放大时echarts图表大小自适应(开始监听)
        window.addEventListener("resize", that.handleResize, true);
        // 侧边栏伸缩时echarts图表大小自适应(开始监听)
        that.unWatch = that.$watch(
          () => that.$store.state.app.sidebar.opened,
          () => setTimeout(() => that.handleResize(), 300)
        );
		
		// 重新进入页面自适应
        that.handleResize();
      });
    },
    handleResize() {
      this.idStackedColumnChart.resize();
    },
    handleInit() {
      return this.$echartsInit("idStackedColumnChart", "stackedColumnChart", {
        title: {
          text: "堆叠柱形图",
        },
        xAxis: [
          {
            data: ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"],
          },
        ],
        series: [
          {
            name: "红色",
            itemStyle: {
              color: "#ff0000",
            },
            data: [120, 132, 101, 134, 90, 230, 210],
          },
          {
            name: "绿色",
            itemStyle: {
              color: "#00ff00",
            },
            data: [220, 182, 191, 234, 290, 330, 310],
          },
          {
            name: "蓝色",
            itemStyle: {
              color: "#0000ff",
            },
            data: [150, 232, 201, 154, 190, 330, 410],
          },
        ],
      });
    },
  },
};

echarts模板封装

准备工作

utils文件夹中新建名为echartsInit.js文件用来执行echarts模板。


echartsInit.js文件内容


// 在2023-03-31号引入报错
// import echarts from 'echarts';
import * as echarts from 'echarts';

import { stackedColumnChart } from '@/assets/echarts/stackedColumnChart.js';

let formwork = {
    stackedColumnChart
};

// id:元素id或ref
// key:配置参数/数据模板
// option:选项/数据
export const echartsInit = (id, key, option) => {
    // 有的话就获取已有echarts实例的DOM节点
    let dom = echarts.getInstanceByDom(document.getElementById(id));

    // 初始化echarts
    if (!dom) dom = echarts.init(document.getElementById(id));

    dom.setOption(formwork[key]);
    dom.showLoading();
    dom.setOption(option);
    dom.hideLoading();

    return dom;
};

stackedColumnChart.js文件内容

stackedColumnChart.js文件便是echarts的一个模板文件,本案列实现的是堆叠柱状图模板文件。
如需其他echarts类型文件可自行创建,模板文件创建好后,按照echartsInit.js文件中继续添加即可。
引入文件,解构变量,把解构好的变量放到formwork对象中即可。

export const stackedColumnChart = {
    title: {
        text: '默认标题'
    },
    tooltip: {
        trigger: "axis",
        axisPointer: {
            type: "shadow",
        },
    },
    legend: {},
    grid: {
        left: "3%",
        right: "4%",
        bottom: "3%",
        containLabel: true,
    },
    xAxis: [
        {
            type: "category",
        }
    ],
    yAxis: [
        {
            type: "value",
        },
    ],
    series: [
        {
            name: "",
            type: "bar",
            stack: "Ad",
            emphasis: {
                focus: "series",
            },
            data: [],
        },
        {
            name: "",
            type: "bar",
            stack: "Ad",
            emphasis: {
                focus: "series",
            },
            data: [],
        },
        {
            name: "",
            type: "bar",
            stack: "Ad",
            emphasis: {
                focus: "series",
            },
            data: [],
        }
    ],
};

在main.js文件中全局注册echartsInit.js文件

// 初始化echarts
import { echartsInit } from '@/utils/echartsInit.js'

// 全局方法挂载
Vue.prototype.$echartsInit = echartsInit

在页面中使用$echartsInit变量文章来源地址https://www.toymoban.com/news/detail-788625.html

this.$echartsInit("id", "模板文件变量", {数据});

到了这里,关于web前端之若依项目窗口大小改变或侧边栏伸缩时echarts图表自适应、封装执行文件和模板文件、展开、折叠、ApacheECharts、KeepAlive、RouterView、deactivated的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium - 改变窗口大小,不同机型呈现的宽高长度会不一样

    最近接触到 UI 测试,涉及到这样一个场景,改变页面大小,验证页面一个输入框默认提示符会有不同。例如:页面宽度设置成小于等于 1024,应该显示短的提示符,大于 1204 显示长的提示符。Case 在本地都是通过的,但是日常 Jenkins 运行在 Remote VM 上,尽然跟期望的不一致。

    2024年02月02日
    浏览(34)
  • 【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式

    掌握分寸感,找目标一致的人协同你,有效地调配资源,就可以提高效率。 写在前面的话 :博主最近想要搭建自己的前端若依项目,因此此系列博客会做一些记录。我的项目gitee地址: https://gitee.com/xuruicong/rachel-front-show 说明:只运行前端项目,只需要要下载官方项目http:

    2024年01月19日
    浏览(104)
  • web前端开发教学视频,VUE项目配置ESlint后一些报错解决方式,4个改变你编程技能的小技巧

    ‘no-delete-var’: 2, // 禁止出现未使用的变量 ‘no-unused-vars’: [2, {‘vars’: ‘local’, ‘args’: ‘none’}], // 禁止出现空函数 ‘no-empty-function’: 2, // 禁用不必要嵌套块 ‘no-lone-blocks’: 2, // 这条规则强制执行v-on指令样式,您应该使用速记。 ‘vue/v-on-style’: [2, ‘shorthand’], //*

    2024年04月13日
    浏览(36)
  • 若依修改侧边栏

    引用:https://blog.csdn.net/Sabrina_cc/article/details/125871591 子菜单选中后,文字和背景改变:

    2024年01月17日
    浏览(51)
  • 若依项目前端页面跳转的流程

    前端页面跳转的流程 1、登录页面跳转的流程 先找到 views下面的login.vue 文件、查看 login.vue 文件、查找 handleLogin() {} 函数 这里代码登录成功 进行跳转 找到 router下面的index.js 文件 、查看 /的路由跳转配置 找到@/views/index 页面 可以修改index.vue 页面 2、添加新菜单的流程 1、选中

    2024年02月13日
    浏览(36)
  • RuoYi若依框架的使用(新增侧边栏菜单并可以打开)

    2022.12.06今天我学习了如何使用若依框架做一个侧边栏的菜单,并且可以打开对应的页面。 一、菜单管理页面 首先在菜单管理页面新增主目录。 如:   自己设置一个路由地址。 二、新增子菜单 然后在创建好的主菜单中再新增子菜单。 如:   组件路径和权限字符的路径一样

    2024年02月12日
    浏览(42)
  • mac 基于docker搭建若依项目前端(node、nginx),本地搭建若依项目后端,含试错记录

    先一句话总结一下,前后端调通的关键是 IP地址 。 最终项目环境结构:本地部署若依后端服务器,docker部署mysql、redis、node或nginx容器。通过node容器或nginx部署若依前端,并调用部署在本地的后端服务器。 声明:本文所涉及的问题点仅针对本文所处时间以及发布文章时所用的

    2024年02月02日
    浏览(47)
  • 部署若依前端vue3后端SSM项目实战

    前端部署在nginx 后端部署在tomcat 系统 前端服务器 后端服务器 前端项目架构 后端项目架构 win10 nginx1.22.1 tomcat9 vue3 ssm linux 亲测! 环境同样适用。 前端项目修改项目下载地址 GIThub RuoYi-Vue3 vite.config.js 基本不用动, 默认打包为文件夹名 dist , 不用dist可以自定义(我用的自定义) 前

    2024年04月09日
    浏览(42)
  • vue -若依管理后台默认样式修改(侧边栏/主题色/网页logo等)

    修改页面: srcassetsstyleselement-variables.scss 修改后样式:    修改页面:srclayoutcomponentsTagsViewindex.vue 找到  .tags-view-container = .tags-view-wrapper = .tags-view-item = .active  这里: 修改后样式:   【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式_若

    2024年02月12日
    浏览(45)
  • ​VsCode修改侧边栏字体大小——用缩放的方法​

    如果只修改文本编辑区的字体大小,可以在File - Preferences - Settings 中修改font的大小。但是侧边栏的字体不会改变,所以可以使用缩放的方法先修改整个界面的字体大小,再单独修改Text Editor字体。 1、Vscode界面缩放 放大:View - Appearance - Zoom in(快捷键Ctrl + =) 缩小:View -

    2024年01月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包