1.IHRM人力资源后台 - 项目搭建

IHRM人力资源 - 项目搭建

文章目录

  • IHRM人力资源 - 项目搭建
  • 一、项目搭建
    • 1.1 项目搭建
    • 1.2 项目目录
      • 1.2.1 src 目录
    • 1.3 App.vue 根组件解析
    • 1.4 基础设置 settings.js
    • 1.5 导航守卫 permission.js
    • 1.6 VUEX
  • 二、 图标使用
    • 2.1 图标使用
    • 2.2 Icon 图标的解析

一、项目搭建

1.1 项目搭建

拉取基础模板代码

 git clone https://github.com/PanJiaChen/vue-admin-template.git 

其他: core-js版本处理

  • 项目模版中的core-js的版本号有些滞后,需要将其版本号改为“3.25.5”再安装依赖

image-20240102174649927

安装依赖项

yarn

出现这种情况便是安装依赖成功

image-20240102182148728

启动项目

我们在package.json中设定的dev执行命令

yarn dev

image-20240102180054972

启动一下下

image-20240102181922541

image-20240102182326517

下载两个插件

image-20240102182657305

此插件的作用就是帮我们格式化代码,如下图所示,在代码的后面加了一个分号,便提示错误信息

这种格式化的错误很好修改,只需要“Ctrl+Alt+L”即可(使用的webstore),会自动消失

image-20240102182836182

如果是VSCode的话就下载ESLint和Vetur

1.2 项目目录

1.2.1 src 目录

image-20240108160201312

  • src:源代码目录。写的功能、测试都在此目录下4

除了src文件之外我们都可以理解为配置文件

image-20240108151412425

image-20240108151510792

  • api目录:请求模块

我们会把请求单独抽离出来放在api文件目录下

抽离出来有个好处,哪个模块想用直接引用就好了

比如user.js文件按需导出了一些方法

import request from '@/utils/request'export function login(data) {return request({url: '/vue-admin-template/user/login',method: 'post',data})
}export function getInfo(token) {return request({url: '/vue-admin-template/user/info',method: 'get',params: { token }})
}export function logout() {return request({url: '/vue-admin-template/user/logout',method: 'post'})
}
  • assets 目录

存放静态资源,比如图片

image-20240108151901086

  • components 目录

存放组件文件

Breadcrumb 面包屑组件

Hamburger 汉堡组件

SvgIcon 图标组件

这三个组件是公用组件

image-20240108152012905

  • icons 图标目录

我们要实现图片注册、自动引用

  • layout 布局组件目录

  • router 路由目录

路由:地址和组件的映射。一个地址对应一个组件,但一个组件可能会对应多个地址

  • store 目录

VUEX是状态管理框架,在store目录中存放的就是VUEX

  • style 样式目录

存放一些全局样式

  • utils目录

存放工具类

  • views目录

也是存放组件的目录,但是区别与components目录文件夹

views目录存放路由器组件

在router目录index.js文件中地址对应组件,对应的组件就是路由器组件,在views目录中

  • App.vue组件

    汇总所有组件

https://blog.csdn.net/weixin_51351637/article/details/126733697

  • main.js组件

入口文件。当执行完npm run serve命令后会直接执行此文件

一般在这个文件引入一些我们常用的模块、实例化vue、指定容器、挂载路由、渲染根组件、注册Element-ui组件

https://blog.csdn.net/weixin_51351637/article/details/126733697

1.3 App.vue 根组件解析

main.js组件将我们的根组件App.vue渲染到了页面上

那到底做了什么样的工作能够显示我们的登录/首页/布局

如下所示,App.vue组件中代码

<template><div id="app"><!--路由容器组件,一级路由--><router-view /></div>
</template><script>
export default {name: 'App'
}
</script>

App.vue文件中有一个router-view一级路由容器,里面放置的是root里面的一级路由

image-20240108195520441

然后“/”中里面还有二级路由

image-20240108195620361

layout布局是怎么保证二级路由组件的显示呢

/***  Layout @/在vue中代表路径别名*  @ 符号表示当前目录的src*  @/ 表示src下的layout,而layout又是一个目录,所以会拉取index.vue文件*  即index.vue组件就是我们的路由组件,会实现二级路由
* */
import Layout from '@/layout'
{path: '/',component: Layout,redirect: '/dashboard',children: [{path: 'dashboard',name: 'Dashboard',component: () => import('@/views/dashboard/index'),meta: { title: 'Dashboard', icon: 'dashboard' }}]
},

我们也可以分析一下layout中index.vue文件的代码,是如下所示的布局形式

image-20240108200759280

放到我们的页面三个结构如下所示

image-20240108201111746

app-main组件为什么可以展示二级路由

在layout目录的index.vue文件下如下图所示:

image-20240108201428346

我们可以再看一下components文件下AppMain.vue组件

并且在此处还有一个router-view组件(此时是二级组件)

image-20240108201555317

可以看一下layout布局组件的总结

image-20240108201745077

1.4 基础设置 settings.js

导出网站基础设置,保罗网站标题、固定header、显示logo

这个文件中导出了一个对象,里面有许多的属性是key:value的形式

module.exports = {/*** 标题*/title: '人力资源后台管理系统',/*** 是否固定我们的头部组件*/fixedHeader: false,/*** 是否显示侧边栏的logo*/sidebarLogo: false
}

如下所示我们的title

image-20240108202242102

当fixedHeader的值是true时,下图所标注的地方不会随便下拉而看不到,而是一直固定在这里

image-20240108202342462

当sidebarLogo的值为true的时候,就可以看到如下图所示的图标

image-20240108202515981

1.5 导航守卫 permission.js

此文件为了完成权限拦截,负责路由导航守卫

路由守卫

其实就是下面两个函数,路由前置守卫和路由后置守卫

路由前置守卫:路由跳转之前执行

路由后置守卫:路由跳转之后执行

// to到哪个组件
//from从哪个组件来
//next是在执行完一系列判断逻辑之后必须要执行哪个函数,只有执行了next,路由才能完成正常的跳转,完成跳转之后会执行路由后置守卫
async(to, from, next)

image-20240108203047631

1.6 VUEX

VueX

VUEX向外暴露了两个属性,一个modules和一个getters

我们只暴露两个属性说明我们项目的VUEX都放在modules模块中,而getters是向外暴露一些便捷的访问属性,并没有我们常见的state、mutation和action

modules我们称之为模块

getters我们称之为VueX里面的计算属性

image-20240108204539930

index.js文件

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'Vue.use(Vuex)const store = new Vuex.Store({// 模块modules: {app,settings,user},// Vuex中的计算属性getters
})export default store

app和settings控制我们左侧导航的伸缩、控制header的固定、左侧导航的logo展示

user是需要我们做用户权限信息的部分

image-20240108205115521

getters是模块属性的意思,而getters中属性都来自于modules模块中state属性

image-20240108205432951

然后我们可以看到getters.js文件中导出了一些属性

state是根状态

state.app.sidebar是取app模块属性

state.user.token是取user模块属性

所以说我们的getters只是做了一个便捷访问,更便捷的访问模块中的属性

image-20240108205513605

此项目中Vuex的设计思想

  • 页面交互状态(折叠侧边栏-固定头部)使用全局状态Vuex
  • 根据功能拆分成不同的模块(modules)进行状态管理
  • 通过getters建立对于模块中属性的快捷访问

二、 图标使用

图片和图标是有区别的

图片使用png或者gpg,而图标一般是svg形式

图标的目的是装饰和点缀,也没有其他的作用

2.1 图标使用

image-20240108210615027

我们将上面的图标进行使用的时候还需要借助一个组件,此组件已经将图标注册好了,图标就可以正常显示了

image-20240108210719834

<template><div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /><svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners"><use :xlink:href="iconName" /></svg>
</template><script>
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
import { isExternal } from '@/utils/validate'export default {name: 'SvgIcon',props: {iconClass: {type: String,required: true},className: {type: String,default: ''}},computed: {isExternal() {return isExternal(this.iconClass)},iconName() {return `#icon-${this.iconClass}`},svgClass() {if (this.className) {return 'svg-icon ' + this.className} else {return 'svg-icon'}},styleExternalIcon() {return {mask: `url(${this.iconClass}) no-repeat 50% 50%`,'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`}}}
}
</script><style scoped>
.svg-icon {width: 1em;height: 1em;vertical-align: -0.15em;fill: currentColor;overflow: hidden;
}.svg-external-icon {background-color: currentColor;mask-size: cover!important;display: inline-block;
}
</style>

怎么使用

<!--使用svg-incon组件-->
<!--设置iconClass属性=“文件名(没有后缀)”-->
<svg-icon icon-class="dashboard"></svg-icon>
  • src/icons/svg目录下的图标都可以使用

  • 图标文件名直接设置为svg-icon组件的iconClass属性

2.2 Icon 图标的解析

在main.js文件实际上我们引入了icon这个目录,并且在这个目录中有一个index.vue文件

image-20240108211840613

查看一下icon目录下index.vue文件

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg component// 全局注册组件。这也就是为什么后面我们可以直接使用svg-icon
Vue.component('svg-icon', SvgIcon)//require.context(要扫描的目标目录,是否扫描子目录,要扫描的目标文件,是一个正则表达式,以.svg结尾的文件) 扫描目录中的文件
//最终返回值req是是一个函数
const req = require.context('./svg', false, /\.svg$/)//requireAll一个函数
//req.keys()的值是我们所扫描的所有的文件
//map是循环每一个项,也就是每一个svg图片,并且map的参数是一个回调函数
//req函数能够引用图片到项目中,如果svg有一百个,那这个map就执行100次
const requireAll = requireContext => requireContext.keys().map(requireContext)//调用了函数
//将所有的svg都引用到项目中
requireAll(req)

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

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

相关文章

关于中考英语的一些刷题建议

怎么提高英语成绩&#xff1f; 对于英语&#xff0c;我个人认为只需要会刷题&#xff0c;多刷题就能提高&#xff0c;至于你们老师布置的关于直接背单词/语法&#xff0c;我认为提高效果并不是很明显。 为什么你从初一写到现在初三刷了这么多题&#xff0c;英语成绩还是没提高呢…

HiDataPlus 3.3.2-005 搭建(个人的一点心得体会 x86 平台)

HDP 集群搭建 前置安装 yum -y install createrepo yum install -y lrzsz yum install -y wget yum install -y vim修改当前集群机器的主机名 hostnamectl set-hostname XXX​ 这里的 XXX 就是要设置的当前机器的主机名称。主机名称是集群唯一的&#xff0c;一定不要重复&am…

经典文献阅读之--TwinLiteNet(可行驶区域和车道分割的高效轻量级模型)

0. 简介 对于自动驾驶来说语义分割是自动驾驶中理解周围环境的一项常见任务。可行驶区域分割和车道检测对于道路上安全且高效的导航尤为重要。为了满足自动驾驶汽车中可行驶区域和车道分割的高效轻量级&#xff0c;《TwinLiteNet: An Efficient and Lightweight Model for Dri…

项目计划书

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件全配套资料获取&#xff1a;软件开发全套资料-CSDN…

网工每日一练(1月15日)

1.某计算机系统由下图所示的部件构成&#xff0c;假定每个部件的千小时可靠度为R&#xff0c;则该系统的千小时的可靠度为 ( D ) 。 2.以下IP地址中&#xff0c;属于网络 201.110.12.224/28 的主机IP是&#xff08; B &#xff09;。 A.201.110.12.224 B.201.110.12.238 C.20…

App为什么会被破解入侵

App为什么会被破解入侵 文章目录 App为什么会被破解入侵引言正文为什么要进行App加固&#xff1f;加固的原理是什么&#xff1f; 加固的作用及破解风险如何规避加固新版本的风险&#xff1f;白嫖的混淆加密工具总结参考资料 引言 随着黑客技术的普及化和平民化&#xff0c;App…

综合评价 | 基于EW、EW-BP、EW-ELM的地区发展水平综合评价(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 综合评价 | 基于EW、EW-BP、EW-ELM的地区发展水平综合评价&#xff08;Matlab&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复基于EW、EW-BP、EW-ELM的地区发展水平综合评价&#xff08;Matl…

JMeter定时器之同步定时器

JMeter定时器之同步定时器 1. 背景2. 目的3. 介绍4. 例子4.1单个请求4.2多个请求 1. 背景 在实际生活中大家肯定遇到过一种场景&#xff0c;就是在某一时间或某一时刻&#xff0c;某件商品进行抢购&#xff0c;相当于秒杀&#xff1b;但是用JMeter进行测试的时候&#xff0c;如…

手把收来教大家win10电脑分辨率怎么调

win10系统操作界面和方式和win7系统有很大不同&#xff0c;有些用户想要设置屏幕的分辨率&#xff0c;但是却不知道应该怎么操作&#xff1f;屏幕分辨率会影响我们使用电脑的视觉效果&#xff0c;经常使用电脑的朋友通常都会设置一个合适的分辨率。下面小编来教大家win10电脑分…

IDEA、CLion代码智能提示功能忽略大小写

代码提示和补充功能有一个特性&#xff1a;区分大小写。 如果想不区分大小写的话&#xff0c;就把这个对勾去掉。建议去掉勾选。

Oracle-数据库性能变慢问题分析

问题背景: 应用运维报障说最近两天业务数据入库和表查询都变得很慢&#xff0c;需要排查一下数据库的性能问题 问题分析&#xff1a; 登录到服务器上&#xff0c;通过TOP命令快速看了一下&#xff0c;服务器整体的CPU使用%usr不算特别高&#xff0c;但%wa IO等待很高&#xff…

MySQL加锁规则

项目编写涉及到数据持久化一般选择使用MySQL。由于时间原因&#xff0c;数据库使用我选择了无脑三板斧&#xff1a;1. 建立了索引加速查询、2. 关闭自动提交事务、3. 在需要确保原子性的数据库操作之间手动创建和提交事务。 这么一看&#xff0c;仿佛即使是实际开发也与你此前…

蓝桥杯单片机快速教程5——利用状态机思想编程

预习知识&#xff1a; &#xff08;1&#xff09;状态机理论 http://t.csdnimg.cn/lXwjw &#xff08;2&#xff09;基础视频 【蓝桥杯单片机保姆级教学】 https://www.bilibili.com/video/BV1h3411m7Aw/?p119&share_sourcecopy_web&vd_sourcec4fc67867c5218768e783d0…

什么是WhatsApp Business?WhatsApp和WhatsApp Business区别?

什么是WhatsApp Business&#xff1f; WhatsApp Business账号是Meta专为企业设计的WhatsApp账号。不同于消费者层次的应用&#xff0c;WhatsApp Business旨在为企业提供更好的服务支持&#xff0c;方便企业与消费者建立更好的双向沟通渠道。 WhatsApp和WhatsApp Business有什…

为什么有人说PMP是水证,它的含金量到底怎么样?

在我国大陆&#xff0c;有好多证书被商业化得太重了&#xff0c;甚至演变成了个人或一些公司摇钱的工具。所以有些证书受人吹捧它崛起的快&#xff0c;但是活不长&#xff0c;甚至“夭折”&#xff0c;比如以前微软系列的证书&#xff1b; 而PMP认证从国外引进大陆这么多年了&…

可行性研究报告范文模板(可直接套用)-word

1业务需求可行性分析 2技术可行性分析 2.1规范化原则 2.2高度的兼容性和可移植性 2.3人性化、适用性 2.4标准化统一设计原则 2.5先进安全可扩展性原则 3开发周期可行性分析 4人力资源可行性分析 5成本分析 6收益分析 7结论 软件开发全文档获取&#xff1a;软件项目…

[python]pyside6安装和在pycharm配置

安装命令&#xff1a; pip install PySide6 -i https://mirror.baidu.com/pypi/simple Pycharm配置Pyside6 打开Pycharm点击File -> Settings -> Tools -> External Tools&#xff0c;点击&#xff0b;。需要添加 Pyside6-Designer 、 Pyside6-UIC 和 Pyside6-rcc三…

突破界限:首个国产DeepSeek MoE的高效表现

前言 在人工智能技术的快速发展过程中&#xff0c;国产首个开源MoE&#xff08;Mixture of Experts&#xff09;大模型——DeepSeek MoE的推出&#xff0c;不仅标志着中国在全球AI领域的重大突破&#xff0c;而且在计算效率和模型性能上展现了显著的优势。这款160亿参数的模型…

ECharts 多季度连续显示到一个图中。

效果图 二.相关option 以下option可以复制到 echarts的编辑器 进行查看修改 const site test1; const site2 test2;const qtrlyOption function (data: any, titleText: string): any {//获取最大值 。最大最小值的目的是&#xff1a;使左右里边的所有bar使用同一个指标let …

[HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…