热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ECharts从入门到精通——第0篇从环境搭建到上线部署

原文地址作者个人站点零:前言在浏览各类网站时,我发现了不少制作精良的图表,心生喜爱,顿时萌发了“我也来做一个吧!

原文地址
作者个人站点
零:前言
在浏览各类网站时,我发现了不少制作精良的图表,心生喜爱,顿时萌发了“我也来做一个吧!”的念头。于是我在此写下《Echarts从入门到精通》系列文章,其中错漏之处还望读者批评指正。本文的相关代码请参见项目链接。


一、ECharts简介

ECharts是一个使用 Javascript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,原先由百度的团队进行开发维护,现在已经成为apache基金会的孵化项目。
与其它各类前端可视化工具相比,ECharts的功能强大,文档齐备。官网提供了相当详细的教程。本系列文章侧重实战与案例展示,读者可以结合官网提供的文档深入学习ECharts。


二、环境搭建(vue以及webpack)

万事开头难。本文先在此处交代一下环境搭建的过程,如无特殊说明,后续的环境配置方法都与此处相同。
本系列教程主要使用Vue、Webpack以及ECharts,操作系统为Ubuntu 20.4,Windows下的操作方法与之类似。


2.1 安装Vue、webpack

关于Vue的安装方法网上有很多介绍,常用的方法有使用CDN加载或者使用npm安装。
这里使用npm进行安装。原因在于:我们可以结合npm和webpack,非常方便的将所用到的js文件和样式表进行打包,有利于线上部署。
Vue的安装命令为:

npm install -g vue

这里建议大家使用科学上网的方法,否则会比较慢。个人不是特别建议使用cnpm,因为npm还有提供顺带检查漏洞的功能,当然您觉得安装时间过久,可以使用国内的镜像地址。

npm config set registry https://registry.npm.taobao.org

下面安装vue-cli,使用vue-cli可以比较方便的配合webpack搭建项目框架,也就是建立各种项目文件。

npm install -g @vue/cli

安装webpack
Webpack的安装分为全局安装和局部安装。
全局安装方式为:

npm install webpack -g

局部安装方式需要先创建项目,即如果该项目需要使用webpack就进行安装,个人推荐这种方法。具体方法为:
进入项目目录,确定已经有 package.json,没有就通过 npm init 创建,安装 webpack 依赖。

npm install webpack --save-dev

2.2 安装ECharts

ECharts的安装方式与上面类似。

npm install echarts --save

2.3 具体的命令

现在我将项目中需要输入的命令写在下面,请注意,Webpack和ECharts最好先创建项目,再进行安装。
创建项目的命令如下所示,这里project_name用实际的项目名称代替,过程比较慢,请耐心等待:

vue init webpack project_name

在这里插入图片描述
进入项目

cd project_name

安装Webpack

npm install webpack --save-dev

安装ECharts

npm install echarts --save

所有的js项目依赖都放在了本项目目录下的node_modules文件夹中。
运行npm run dev
项目一般运行在http://localhost:8080/,至此一个项目框架就搭建完毕了。我们可以开始进行正式的工作了。


三、Echarts简单使用方法

项目建立之后,项目目录大概是这样的,注意src目录下的comm/js目录是我手动建立的。
在这里插入图片描述

之所以要展示一下目录,是为了提醒一下初学者,对于一个vue项目而言,代码的相对路径是以src目录为基点的。也就是说,如果要引入一个新的js数据包,可以这样引入

import myCharts from './comm/js/myCharts.js'

我们大部分的工作也是要在src文件夹下进行的。
首先我们在src目录下创建comm文件夹及子文件夹js文件夹,在该文件下创建一个文件myCharts.js
我们在该文件中写入具体的ECharts业务代码。
创建完毕后,我们在main.js文件中引入myCharts.js文件。
在这里插入图片描述
下面我们写具体的业务代码,绘制出一个简单的折线图。
在这里插入图片描述
这里Object.defineProperties方法提供了常见的set、get方法。咱们先抛开涉及Vue的相关知识,我们只看涉及ECharts的代码。
如何绘制一个折线图?通常情况下,我们只需要提供x轴和y轴的数据就可以了。

const optionData = {xAxis:{type:'category',data:['1','2','3','4','5','6','7']},yAxis:{type:'value'},series:[{data:[11,22,33,44,55,66,77],type:'line',smooth:true}]};

对于一个可以展示的HTML文档,我们需要先定义一个标签元素上,再将ECharts挂载到该元素上。否则连标签元素都没有,我们自然没办法看到相应图表了。
官网提供的案例如下所示。

div id&#61;"main" style&#61;"width: 600px;height:400px;"></div>// 基于准备好的dom&#xff0c;初始化echarts实例var myChart &#61; echarts.init(document.getElementById(&#39;main&#39;));

完成初始化工作后&#xff0c;这里的myChart就相当于一张空白的画布。
每种图标给我们划定了一个数据输入的接口&#xff0c;我们通过填写配置项&#xff0c;来描述具体的数据是什么&#xff0c;例如上面的x、y和series。
真正展示图片的语句只有一句话&#xff1a;

myChart.setOption(option);

有了这张图&#xff0c;我们现在要告诉浏览器&#xff0c;这张图需要出现在哪里。
秉承模块化设计的原则&#xff0c;我们在main.js里把myCharts注册到Vue里。

import myCharts from &#39;./comm/js/myCharts.js&#39;
Vue.use(myCharts)

这意味着我们可以在其它的vue文件里&#xff0c;例如HelloWorld.vue调用这个折线图。
在这里插入图片描述
至此&#xff0c;一个项目里的基本部分就完成了。我们可以运行该项目看看了。
运行代码为npm run dev
在这里插入图片描述
效果如下所示&#xff1a;
在这里插入图片描述
当然可能会报错&#xff0c;比如&#xff1a;
在这里插入图片描述
大部分错误都是涉及eslint的错误&#xff0c;可以根据错误提示进行修改配置文件。但是一般不用管也不会影响效果呈现。


四、上线部署

对于一个需要上线的项目而言&#xff0c;我们不可能再运行npm run dev
为什么呢&#xff1f;因为我们现在的工作只涉及前端&#xff0c;按理说任意一个浏览器都能展现出我们上面的折线图。理想情况下&#xff0c;我们只需要把静态文件拷贝到服务器上就能实现需要的效果。
要达成上述目的&#xff0c;我们只需要运行npm run build即可。在项目根目录下会生成一个dist文件夹。即使不开启本地服务器&#xff0c;我们双击index.html也可以获得需要的效果。
在这里插入图片描述


五、可能存在的问题

在实际复现上述代码时&#xff0c;可能会出现一系列的问题。下面我列举若干问题&#xff0c;如果您发现还有其它问题&#xff0c;可以在本文下方留言。
首先可能出现的问题是环境安装问题&#xff0c;通常这些问题都是路径问题或者依赖版本问题。这里列举几个常见的问题以及处理方法。
1、Error: Cannot find module &#39;webpack-cli/bin/config-yargs’
对于这个问题&#xff0c;直接把node_modules文件夹删除&#xff0c;再重新安装一下依赖即可&#xff08;命令为npm i&#xff09;。
2、Error: Cannot find module &#39;webpack&#39;
出现这个问题说明webpack没有安装好&#xff0c;需要重新安装&#xff0c;命令为&#xff1a;

npm install --save-dev webpack

3、Vue 项目启动webpack服务器报错&#xff1a; webpack-dev-server: command not found
运行npm i可以解决这个问题。
4、This relative module was not found
出现这个问题说明文件&#xff08;myChart.js&#xff09;的位置没有放对&#xff0c;前文提过&#xff0c;组件代码要放在src文件夹下。
5、Expected indentation of 2 spaces but found 4
执行npm run dev时&#xff0c;可能会报如上错误。其实不用理会这个问题&#xff0c;程序照样运行。如果非要解决这个问题&#xff0c;可以到.eslintrc.js这个文件中找到rules列表&#xff0c;添加&#39;indent&#39;: [&#39;off&#39;, 2]即可。
6、使用npm run build后&#xff0c;出现Loading failed for the with source “file:///static/等问题。
这个问题与打包时的相对路径设置有关。要解决这个问题&#xff0c;用户可以到config文件下修改index.js文件。只需要把build下的assetsPublicPath: &#39;/&#39;,改成assetsPublicPath: &#39;./&#39;即可。注意在同一文件中还有一个devassetsPublicPath配置项。注意不要修改错了。在这里插入图片描述
7、vue 出现 Cannot GET / 的问题
在运行npm run dev时出现这个问题说明assetsPublicPath错误&#xff0c;需要修改config文件夹下面的index.js里面,把dev中的assetsPublicPath: &#39;./&#39;改成“assetsPublicPath: &#39;/&#39;


六、待改进的部分

至此&#xff0c;本文的主要内容就介绍完毕了。但是我们不难发现&#xff0c;打完包后的文件非常大&#xff0c;这不利于提升用户体验。此外本文仅仅介绍了一个非常简单的例子&#xff0c;读者可能看得不是特别过瘾。所以在后续文章中&#xff0c;笔者将一步步介绍ECharts的更深入的使用方法。


推荐阅读
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
author-avatar
林白LS
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有