电商后台管理项目

电商后台管理项目实现过程

项目地址:https://github.com/2019083310/vue-shop
一,准备阶段

1.电商后台管理需要服务端提供相应的接口,先在vue-shop-serve中启动服务端(node app.js),启动之前要把相应的mysql文件导入数据库,并配置好mysql的用户名密码实现连接,在启动服务端。

2.此项目是前后端模式开发:

前端技术栈:

​ Vue全家桶:core+vue-router+vuex+axios

​ 第三方框架:element-UI

​ 可视化:Echarts

后端技术栈:

​ node+express+mysql+Jwt(状态保持的第三方插件)+Sequelize(操作mysql的第三方插件)

二,Login组件

1.怎么实现状态保持的

	由于存在跨域问题:前端与服务器之间使用token实现状态保持,即登录前输入账号密码-->服务器验证后返回token给客户端保存起来,后续的所有请求都会使用token携带发送数据请求-->服务器验证token是否通过。
	//不存在跨越问题时,客户端通过cookie记录状态,服务端使用session记录状态
	//http是无状态的

2.Login组件的实现

1.使用position:absolut;和transform:translate(-50%,-50%)样式居中。
2.element-ui表单控件的使用:
	npm install element-ui
	全局导入:
		import Element from 'element-ui'
		import 'element-ui/lib/theme-chalk/index.css'
	接下来在element-ui官网查找相应的组件from复制粘贴到相应的位置
3.图标字体的使用:
	element-ui的图标字体很有限,因此需要引入其他的图标字体库(这里用的是阿里图标字体库),复制fonts文件夹到assets目录下,在mian.js中引入.css文件,vue中使用图标格式:
    前置图标prefix-icon='iconfont xxx'
4.表单的数据绑定:<el-from :model=''>通过model属性给表单绑定数据,在子表单项中通过v-model=''等于form绑定的数据中的值,这样就实现了表单的数据绑定,绑定的值就可以在表单中显示。
5.表单的数据验证:
	在表单中<el-from :rules=''>通过绑定rules属性给表单添加验证规则,在校验规则对象中通过<el-from-item prop=''>prop属性绑定相应的rules中的属性值,在某个条件触发时,实现数据校验,trigger属性为什么条件触发,trigger='blur'为在失去焦点时触发校验规则。
6.表单的重置和预验证:(resetFileds()和validate())
	在element-ui表单的最下面有相关的表单的属性和方法,包括数据绑定,数据校验等属性以及表单数据重置等方法,看相应的API做出相应的处理。
	这里登录是涉及到了表单提交到服务器,因此要用axios网络请求,通过post携带data向服务器发送请求,服务器判断data中的数据作出相应返回给客户端status以及response.
7.登录成功后的行为:
	sessionStroge:只在打开网站期间生效,会话机制
    localStroge:网站持久化,任何期间都会生效,关闭页面也不会忘记数据
    在登陆时,通过axios向服务器发送了登录请求,请求成功会返回给客户端一个token,通过-----window.sessionStroge.setItem('token',res.data.token)来保存得到的token,以后的每次服务器请求都要携带token向服务器发送请求来验证身份.
    保存成功后跳转到Home页面,this.$router.push('/home')
	防止别人直接访问`login`以外的路由,而需要调用路由的导航守卫使用 `beforeEach` 离开之前,检查是否有token的存在如果没有就直接跳转到 login 页面
    `router.beforeEach((to, from, next) => {})` to 即将跳转到哪里(到那里去) from 在哪里跳转(从哪里来) next 放行枷(给不给走)
	退出登录: 在home页面设置按钮 清空token并且跳转到 login

3.Home组件的实现

	主页的布局主要分为三个部分,通过element-ui组件实现,分别是头部header,左侧边栏aside,中间内容main。
	//element-ui 提供的组件,每个组件名都是它自己的类名
	1.header布局:
		<el-header>组件实现header布局,用flex实现水平分布,在加入内容即可。
	2.aside布局:
		<el-aside>组件实现侧边栏布局,主要是一级菜单和二级菜单即可.右侧菜单(二级可折叠) `el-menu`(最外层包裹菜单) ``一级菜单 `` 二级菜单(里层)  `