人力资源管理后台 === 首页+部署

目录

1.首页-echarts图表的应用

2.首页-echarts图表的按需导入

3.路由模式-将路由改成history模式

4. 打包分析-分析

5.CDN加速

6.项目打包-安装nginx

7.mac/windows环境下nginx部署启动项目

8.nginx解决history的404问题

9.nginx配置代理解决生产环境跨域问题


1.首页-echarts图表的应用

image.png

image.png

  • 安装echarts包
$ npm i echarts 
$ yarn add echarts
  • 放置两个图表的div,并给定高宽,代码位置(src/views/dashboard/index.vue)
 <div class="chart"><!-- 图表 --><div ref="social" style=" width: 100%; height:100% " />
</div><div class="chart"><!-- 图表 --><div ref="provident" style=" width: 100%; height:100% " /></div>
  • 在mounted中初始化图表-代码位置(src/views/dashboard/index.vue)
<script>
import CountTo from 'vue-count-to'
import { mapGetters } from 'vuex'
import { getHomeData, getMessageList } from '@/api/home'
import * as echarts from 'echarts' // 引入所有的echarts
export default {components: {CountTo},data() {return {homeData: {}, // 存放首页数据的对象list: []}},// 计算属性computed: {...mapGetters(['name', 'avatar', 'company', 'departmentName']) // 映射给了计算属性},watch: {homeData() {console.log(this.homeData)// 设置图表this.social.setOption({xAxis: {type: 'category',boundaryGap: false,data: this.homeData.socialInsurance?.xAxis},yAxis: {type: 'value'},series: [{data: this.homeData.socialInsurance?.yAxis,type: 'line',areaStyle: {color: '#04c9be' // 填充颜色},lineStyle: {color: '#04c9be' // 线的颜色}}]})this.provident.setOption({xAxis: {type: 'category',boundaryGap: false,data: this.homeData.providentFund?.xAxis},yAxis: {type: 'value'},series: [{data: this.homeData.providentFund?.yAxis,type: 'line',areaStyle: {color: '#04c9be' // 填充颜色},lineStyle: {color: '#04c9be' // 线的颜色}}]})}},created() {this.getHomeData()this.getMessageList()},mounted() {// 获取展示的数据 设置给图表// 监听homeData的变化this.social = echarts.init(this.$refs.social) // 初始化echart// data中没有声明 不是响应式this.provident = echarts.init(this.$refs.provident)},methods: {async getHomeData() {this.homeData = await getHomeData()},async getMessageList() {this.list = await getMessageList()}}
}
</script>

这里为什么要用watch,因为获取数据在created,初始化图表在mounted,执行mouted时,数据并不能保证能够获取到,所以采用获取watch监听数据变化,只要数据变化,就设置图表的options

为什么 this.social和this.provident 并没有在data中声明,注意,在data中声明的表示它是响应式数据,即它的变化要引起template模板的刷新,但是这里我们只是记录一下当前图表的实例,实例本身会有setOption来影响图表的动态渲染,所以这里并没有必要在data中声明这两个变量

2.首页-echarts图表的按需导入

image.png

image.png

  • echarts图表的按需导入-代码位置(src/views/dashboard/index.vue)
import * as echarts from 'echarts/core' // 引入核心包
import { LineChart } from 'echarts/charts' // 引入折线图
import { GridComponent } from 'echarts/components' // 引入组件
import { CanvasRenderer } from 'echarts/renderers'
echarts.use([LineChart,GridComponent,CanvasRenderer
])

3.路由模式-将路由改成history模式

image.png

  • hash模式带#,#后面的地址变化不会引起页面的刷新

  • history没有#,地址变化会引起页面刷新,更符合页面地址的规范(开发环境不刷新-webpack配置)

  • 将路由模式修改成history模式-代码位置(src/router/index.js)

const createRouter = () => new Router({mode: 'history', // require service supportscrollBehavior: () => ({ y: 0 }),routes: constantRoutes // 默认引入静态路由
})

4. 打包分析-分析

image.png

  • 打包分析代码
$ npm run preview -- --report

image.png

  • 去除main.js中对于mock.js的引用

image.png

5.CDN加速

image.png

image.png

将几个比较大的多在打包时排除,这样可以缩小整体打包的大小,保证js的加载速度,排除的包采用cdn的方式用外链去引入,cdn本名为分发服务器,意为更近的访问区间更快的访问速度将所需要的文件返回给客户端

  • webpack排除打包-代码位置(vue.config.js)
 configureWebpack: {// provide the app's title in webpack's name field, so that// it can be accessed in index.html to inject the correct title.name: name,resolve: {alias: {'@': resolve('src')}},// 配置需要排出的包externals: {'vue': 'Vue','element-ui': 'ELEMENT','cos-js-sdk-v5': 'COS'}},
  • 在html中采用外链引入排除的文件-代码位置(public/index.html)
<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title><%= webpackConfig.name %></title><link href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.13/theme-chalk/index.min.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but <%= webpackConfig.name %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --><script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.6.14/vue.min.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.13/index.min.js"></script><script src="https://cdn.jsdelivr.net/npm/cos-js-sdk-v5/dist/cos-js-sdk-v5.min.js" ></script></body>
</html>

6.项目打包-安装nginx

image.png

  • 执行打包命令
$ npm run build:prod
$ yarn build:prod

得到dist文件包

image.png

  • 安装nginx-mac
$ brew install nginx  # mac安装nginx
  • 查看版本-mac
$ nginx -v  # 查看版本
  • 查看nginx-mac
$ brew info nginx #查看nginx
  • nginx-windows版本

直接解压就可以直接使用

image.png

注意:mac安装可能遇到的问题

image.png


遇到某个包发生错误,直接使用brew安装这个包,再安装nginx

$ brew install pcre2  # 安装出错的包
$ brew install nginx  # 安装nginx

image.png


遇到这个错误,可以直接执行该命令,安装对应的工具,再安装nginx

$  xcode-select --install  # 安装对应工具
$  brew install nginx  # 安装nginx

7.mac/windows环境下nginx部署启动项目

image.png

  • mac查看nginx的相关目录
brew info nginx #查看nginx

image.png

mac-nginx安装目录-/opt/homebrew/Cellar/nginx/1.23.3
mac-配置文件路-/opt/homebrew/etc/nginx/nginx.conf

  • 将打包的文件放置到安装目录/html下

image.png

  • mac-启动服务命令
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx #启动命令
  • mac-重启服务
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx -s stop  #停止命令

注意: mac版本的nginx的默认端口为8080

image.png

  • windows版本启动服务
  • image.png

    image.png

  • windows下停止服务
$ ./nginx -s stop  #停止命令

注意: nginx默认的访问端口为80

image.png

8.nginx解决history的404问题

image.png

  • 修改mac-windows配置文件
location / {try_files $uri $uri/ /index.html;
}

设置不论请求什么地址,都返回index.html

image.png


 

image.png


windows配置文件

image.png

  • mac重启服务
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx -s reload  #重启
  • windows重启服务
$ ./nginx -s reload  #重启

9.nginx配置代理解决生产环境跨域问题

image.png

image.png

  • nginx解决生产环境跨域

image.png

  • 修改配置文件
location /prod-api  {proxy_pass https://heimahr-t.itheima.net;
}
  • mac重启服务
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx -s reload  #重启
  • windows重启服务
$ ./nginx -s reload  #重启

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习草稿】pid控制基础实现--往水桶注水

pid 1&#xff09;非常通俗易懂的PID控制&#xff08;1&#xff09;https://zhuanlan.zhihu.com/p/37515841 球场上运动至指定地点&#xff08;比例控制&#xff09;&#xff1a;有图【很直观的帮助理解】&有文字分析 2&#xff09;初识PID-搞懂PID概念 https://zhuanlan.…

Linux4.6、进程优先级

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 进程优先级是什么&#xff1f; 为什么会有进程优先级&#xff1f; 那么优先级是如何办到的&#xff1f; 最后一个问题&#xff1a;Linux为什么要限制优先级&#xff1f; 进程优先级是什么&#xff1f; 就是进程在访…

2021年06月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共10题,每题3分,共30分) 第1题 执行下列程序,输出的结果为? A:12 B:24 C:8 D:30 答案:B 第2题 执行下列程序,角色说出的内容是? A:2 B:3 C:4 D:5 答案:A 第3题 执行下列程序,输出结果为?

【Flutter】graphic图表实现自定义tooltip

renderer graphic中tooltip的TooltipGuide类提供了renderer方法,接收三个参数Size类型,Offset类型,Map<int, Tuple>类型。可查到的文档是真的少,所以只能在源码中扒拉例子,做符合需求的修改。 官方github示例 官方示例 这个例子感觉像是tooltip和提供的那些属性的…

2023年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 一、问题求解&#xff1a;真题&#xff08;2023-01&#xff09;真题&#xff08;2023-02&#xff09;真题&#xff08;2023-03&#xff09;真题&#xff08;2023-04&#xff09;真题&#xff08;2023-05&#xff09;真题&#xff08;2023-06&#xff09;真题&#xff…

【密码学】【安全多方计算】浅析隐私求交PSI

文章目录 隐私求交的定义隐私求交方案介绍1. 基于DH的PSI方案2. 基于OT的PSI方案3.基于OPRF的PSI方案 总结 隐私求交的定义 隐私集合求交使得持有数据参与方通过计算得到集合的交集数据&#xff0c;而不泄露任何交集以外的数据信息。 隐私求交方案介绍 1. 基于DH的PSI方案 …

Aapche Dubbo 不安全的 Java 反序列化 (CVE-2019-17564)

漏洞描述 Apache Dubbo 是一个高性能的、基于 Java 的开源 RPC 框架。 Apache Dubbo 支持不同的协议&#xff0c;它的 HTTP 协议处理程序是 Spring Framework 的 .org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter Spring Framework 的安全警告显示&am…

计算机系统漫游

编译系统 预处理&#xff08;Preprocessing&#xff09;&#xff1a; 预处理器根据源代码中的预处理指令&#xff0c;如#include和#define等&#xff0c;将源代码转换为另一份源代码。预处理器的输出通常会保存在hello.i的文件中。编译&#xff08;Compilation&#xff09;&…

为什么要坚持每天做公域引流

做公域不一定等于拍视频&#xff0c;真正适合小白的引流方式其实还是做图文内容&#xff0c;比如小红书发帖&#xff0c;知乎问答&#xff0c;微信读书&#xff0c;问一问等。 长期坚持每天做公域引流有以下好处&#xff1a; 提高品牌知名度&#xff1a;每天坚持做公域流量&a…

nodejs+vue+elementui学生竞赛管理系统65o97

高校人才培养计划的重要组成部分&#xff0c;是实现人才培养目标、培养学生体育 能力与创新思维、学生竟赛管理系统检验学生综合素质与实践能力的重要手段与综合性实践教学环节。而我所在学院多采用半手工管理学生竟赛的方式&#xff0c;所以有必要开发学生竟赛管理系统来对学生…

2015年五一杯数学建模B题空气污染问题研究解题全过程文档及程序

2015年五一杯数学建模 B题 空气污染问题研究 原题再现 近十年来&#xff0c;我国 GDP 持续快速增长&#xff0c;但经济增长模式相对传统落后&#xff0c;对生态平衡和自然环境造成一定的破坏&#xff0c;空气污染的弊病日益突出&#xff0c;特别是日益加重的雾霾天气已经干扰…

前端管理制度

数据运营中心的管理形式&#xff1a; 数据运营中心的管理形式 竖向是各小组 横向是项目管理 负责人的定位&#xff1a; 只是工作的内容不同&#xff0c;没有上下级之分 帮助组员找到适合的位置&#xff0c;帮助大家解决问题&#xff0c;给大家提供资源 前端组的工作形式&am…

MySQL数据库如何实现跨服务器访问数据

点击上方蓝字关注我 在使用MySQL数据库时&#xff0c;很多同学经常会问&#xff0c;我能跨服务器访问另一库的数据么&#xff1f;得到的答案很多时候是让人失望的。那么如果真的需要访问&#xff0c;又不想使用拷贝表及数据的方式&#xff0c;可以实现么&#xff0c;又该如何实…

人工智能“涌现”时刻:数据中心如何解题?

随着科技的迅猛发展&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐成为推动社会进步的关键力量。AI技术的广泛应用给我们的生活和工作带来了巨大的改变&#xff0c;而这一切的背后离不开数据中心的支持和创新。数据中心如何解决人工智能的挑战&#xff0c;成为了当今科…

无货源商城搭建的几种方案(电商商品采集API)

随着电商行业的快速发展&#xff0c;越来越多的商家开始考虑搭建自己的电商商城。然而&#xff0c;对于一些没有自己的货源或者想要快速进入电商领域的商家来说&#xff0c;从哪里获取商品成为了他们面临的首要问题。本文将介绍几种无货源商城的搭建方案&#xff0c;帮助商家快…

【创建和排查隐藏进程和隐藏计划任务】

Window 创建隐藏进程和隐藏计划任务&#xff1a; 隐藏进程&#xff1a; 在Windows中&#xff0c;隐藏进程主要通过修改进程属性或使用第三方工具实现。以下是一个使用PowerShell脚本创建隐藏进程的示例&#xff1a; $Script {Start-Process -FilePath "notepad.exe"…

2023全球数字贸易大赛--什么是 DID 身份,中青校园APP,全球碳交易=树根格致,多元空间=购物时代的web3.0,超喵Overview

目录 什么是 DID 身份,为什么需要 DID 1. 中心化身份的问题 2. 为什么 DID 一定会出现 3. DI

设二维数组a[1...m,1...n]()含有m*n个整数。写一个算法判断a中所有元素是否互不相同,并输出相关信息(yes/no)

设二维数组a[1…m&#xff0c;1…n]&#xff08;&#xff09;含有m*n个整数。 写一个算法判断a中所有元素是否互不相同&#xff0c;并输出相关信息&#xff08;yes/no) 分析其时间复杂度 代码思路&#xff1a; 这种如果纯暴力做的话时间复杂度非常高。 我这里考虑把题目中的二…

A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1]

今天调用一个接口&#xff0c;返回的是json数据&#xff0c;但是拿到数据进行转换的报错&#xff0c; JSONObject resultJson new JSONObject(resuStr);报错信息是&#xff1a; Exception in thread "main" org.json.JSONException: A JSONObject text must begin …

navigation无法打开/vscode前面没出现虚拟环境

先做这些&#xff0c;打开navigate 管理员身份打开anaconda prompt conda update anaconda-navigator anaconda-navigator --reset conda update anaconda-client conda update -f anaconda-client anaconda-navigator 之后别再powershell里输命令&#xff0c;在cmd里切 还有cr…