| 目录 一、echarts 图标库 1.echarts的基础 2.项目中的使用 二、execl导出 三、面包屑组件 四、富文本框 五、地图 六、vite 构建配置 七、后端未开跨域资源共享,前端使用代理访问 
 一、echarts 图标库1.echarts的基础概念:将数据转换成图标的形式,更主观的看数据 在?echarts CDN by jsDelivr - A CDN for npm and GitHub?选择?dist/echarts.js,点击并保存为?echarts.js?文件。 在项目中引入 在刚才保存?echarts.js?的目录新建一个?index.html?文件,内容如下: <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <!--1. 引入 ECharts 图标库 -->
    <script src="echarts.js"></script>
  </head>
<body>
  <!-- 2.为 ECharts 准备一个定义了宽高的 DOM -->
  <div id="main" style="width: 600px;height:400px;"></div>
</body>
</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: {//x轴坐标上的数据
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},//y轴
        series: [
          {
            name: '销量',
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      };
      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option);
    </script>
  </body>
</html>
这样你的第一个图表
 重点:数据集 2.项目中的使用(1)安装echarts npm install echarts --save
 (2)在主界面index.html中引入echarts (3)在platform中新建index.vue //在项目中集成echarts的图
<div>
        <!-- 三栏布局定义四个容器 -->
        <el-row>
            <el-col :span="12">
                <div ref="mybar" class="bar-wrap"></div>
            </el-col>
            <el-col :span="12">
                <div ref="chartBar" class="bar-wrap"></div>
            </el-col>
        </el-row>
        <el-row>
            <el-col :span="12">
                <div ref="chartLine" class="bar-wrap"></div>
            </el-col>
            <el-col :span="12">
                <div ref="myangar" class="bar-wrap"></div>
            </el-col>
        </el-row>
    </div>
    // 引入echarts图标库
import * as echarts from 'echarts'
mounted() {
        this.initBar()
        // 调用不同类型的图
        this.onDrawChartBar()
        this.drawLineChart()
        this.drawBarChart()
    },
    // 定义初始化方法
    methods: {
        async initBar() {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(this.$refs.mybar) // mounted生命周期
 动态获取商品数据 柱状图展示 商品名称 商品销量的接口 y轴商品分类中每类的件数 x轴商品分类的类名 //导入接口RequestCategoryList
import { RequestCategoryList } from '@/api/product'
//调接口获取数据
myChart.showLoading() //显示loadding
            // 获取商品列表分类
            let data = await RequestCategoryList()
            let { resultCode, resultInfo } = data
            myChart.hideLoading() //加载完后隐藏loading
            if (resultCode == 1) {
                // 遍历数据获得商品分类名并映射到新的数组list  再将其塞入xAxis中的data中
                let list = resultInfo.list.map(item => item.name)
                // 绘制图表
                myChart.setOption({
                    title: {
                        text: '统计商品分类商品数量',
                    },
                    tooltip: {},
                    xAxis: {
                        data: list,
                    },
                    yAxis: {},
                    series: [
                        {
                            name: '销量',
                            type: 'bar',
                            data: [5, 20, 36, 10, 10, 20,30,18,43],
                        },
                    ],
                })
            }
 二、execl导出(1)安装插件 npm i xlsx@0.17.0 -S  // 处理excel文件的库
npm i file-saver@2.0.5 -S
npm i lodash-es -S   //深克隆工具
 (2)定义按钮并导出数据 <!-- 导出 excel表格按钮   <el-icon><Download/></el-icon> 下载组件-->
        <el-button type="primary" size="small" @click="onHandlerExcel" style="margin-bottom:10px;">
            导出excel <el-icon><Download/></el-icon> 
        </el-button>
//导入excelExport2方法
import {excelExport2} from '@/utils'
//在methods中操作onHandlerExcel方法
onHandlerExcel(){
            excelExport2(
                //数据源
                this.list, 
                //列名
                {
                    id:'序列号',
                    picture:'图片',
                    product:'名称',
                    shop:'店名',
                    oldprice:'原价',
                    price:'现价',
                    categoryname:'分类',
                    putaway:'上下架',
                    detail:'描述'
                },
                '商品列表' // excel文件名称
            )
        }
 三、面包屑组件在components文件中新建一个BreadCrumbCom.vue 封装面包屑组件     <el-breadcrumb separator="/" style="margin-bottom: 10px">
        <el-breadcrumb-item :to="{ path: '/index' }">首页</el-breadcrumb-item>
        <el-breadcrumb-item v-for="(item,index) in routeArr" :key="index">{{item}}</el-breadcrumb-item>
    </el-breadcrumb>
定义一个侦听器侦听路由信息变化
watch:{
        $route:{
            handler(route){
                //判断是不是首页,是首页就清空路由对象的数组
                if(route.path == '/index'){
                    this.routeArr = []
                    return
                }
                // 获取当前路由信息对象route中matched数组路由信息 保存到新数组中
                let routeArr = route.matched.map(item=>item.meta.title)
                this.routeArr = routeArr
            }
        }
    }
 在Home.vue中导入 import BreadCrumbCom from '@/components/BreadCrumbCom.vue'
 四、富文本框应用场景:添加日志 在plateform 文件夹下新建log文件,log文件夹下新建add.vue ,list.vue ,lacation.vue文件 在官网https://www.tiny.cloud/docs-4x/中  下载依赖?Custom HTML Builds | Trusted Rich Text Editor | TinyMCE 下载汉化包?https://download.tiny.cloud/tinymce/community/languagepacks/6/zh-Hans.zip?_ga=2.37613731.2030153498.1660544987-1887555869.1660544987 将tinymce文件夹拷贝到项目public目录下 //在index.html文件中引入汉化包和js文件
  <script src="/tinymce/tinymce.min.js"></script>
  <script src="/tinymce/langs/zh-Hans.js"></script>
 //在add.vue中使用textatea定义一个容器
 <div>
        <textarea id="default-editor"></textarea>
  //保存获取内容
        <el-button type="primary" size="default" @click="onSaveContent" style="margin-top:10px;">确定</el-button>
    </div>
<script>
export default {
    data() {
        return {
        }
    },
//获取内容
    methods:{
        onSaveContent(){
            let content = tinymce.activeEditor.getContent()
            console.log(content);
            //提示
            ElMessage.info('添加日志成功')
        }
    },
    mounted(){
        tinymce.init({
            selector:'textarea#default-editor',
            branding:false, // 取消右下解默认提示,
            height:500,
            plugins: 'advlist link image lists paste', // 使用插件
            paste_data_images: true, // 支持图片粘贴
        })
    }
}
</script>
 五、地图(1)百度地图ak获取流程(需要下载百度app)?jspopularGL | 百度地图API SDK 查找适合的示例直接使用?open | 百度地图API SDK
 //在index.js引入百度地图库
 <script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=LSg5n6zOi54hwFDRk2eRxmOwsNWrniKy"></script>
//在location.vue中写
<template>
    <!-- 地图容器 -->
    <div id="container"></div>
</template>
export default {
    data() {
        return {}
    },
    methods: {
        initMap() {
            var map = new BMapGL.Map('container') // 创建Map实例
            map.centerAndZoom(new BMapGL.Point(104.047628, 30.636962), 16) // 初始化地图,设置中心点坐标和地图级别  16为缩放的大小
            map.enableScrollWheelZoom(true) // 开启鼠标滚轮缩放
            map.setHeading(64.5)
            map.setTilt(73) //平面效果
        },
    },
    mounted() {
        this.initMap()
    },
}
<style scoped>
    //设置高度
#container {
    height: 700px;
}
 六、vite 构建配置打包部署项目 (1)将开发环境下资源编译成浏览器能识别的html、cs、js资源 .vue scss ts (2)压缩 (3)构建工具 webpack vite:npm run build编译打包生成dist 文件夹, 安装nginx web服务器,将dist文件复制到服务器文件夹中 七、后端未开跨域资源共享,前端使用代理访问1、代理服务器:vite.config.js文件中配置 server:{
  proxy:{
    '/api/':{
        target:'//后端网址',
        changeOrigin:true,
        rewrite:path=>replace(/^\/api/,'') //视情况添加,如果后端服务器地址后面有api,则使用替换api为空
     }
   }
}
 2、封装的axios.js文件中将访问后端的地址改为前端服务器地址 八、监控是生产环境还是开发环境 1、process.env.NODE_ENV production 生产环境 :npm run build development 开发环境:npm run dev 2、代码:在封装的axios.js文件中配置 switch (process.env.NODE_ENV) {
	case 'production':
		baseURL = 'https://api.yuguoxy.com'
		break
	case 'development':
		baseURL = 'http://10.7.162.150:8089'
		break
}
 |