3.1 登录概述
如果不存在跨域问题,就用cookie和session维持登录状态
如果存在,就用token方式。
3.2 登录 —token原理分析
3.3 梳理项目结构
main.js是整个项目的入口文件
App.vue文件的结构
创建Login.vue,写好UI,行为,css
然后再路由里面配置好路径。
最后去App.vue里面使用
在assets下新建css文件夹,新建global.css当做全局css文件
在main.js下要导入这个全局css
如何让一个盒子居中?
<template>
<div class="login_container">
<div class="login_box"></div>
</div>
</template>
<style lang="less" scoped>
.login_container {
background-color: #2b4b6b;
height: 100%;
}
.login_box {
width: 450px;
height: 300px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
让头像放在盒子的中上方,怎么放?
<template>
<div class="login_container">
<div class="login_box">
<div class="avatar_box">
<img src="../assets/logo.png" alt="" />
</div>
</div>
</div>
</template>
<style lang="less" scoped>
// 省略上面盒子的代码
.avatar_box {
height: 130px;
width: 130px;
border: 1px solid #eee;
border-radius: 50%;
padding: 10px;
box-shadow: 0 0 10px #ddd;
position: absolute;
left: 50%;
transform: translate(-50%, -50%);
background-color: #fff;
img {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #eee;
}
}
</style>
总结:调位置都是通过 position:absolution(left,right,top,bottom) transform: translate 来调的
Element UI
element ui 是按需导入,所以用到Form,FormItem的时候要手动导入。
plugins 已经在main.js里导入了,所以这个需要导入有关element的内容,直接在这里导入就可以了。
添加前后图标
- 赋值fonts文件夹到assets下
- 在main.js里导入这个模块
- 使用基类 图标名字来引用图标
数据绑定、表单验证
- v-bind:value=”test”
- :model
- v-model
vue一般自己new一个实例,然后通过el标签和前面html元素绑定。接下来就可以使用vue里的data数据。
重置功能
表单验证函数(如果通过了发送请求)
配置ajax请求
在main.js 把axios挂载到vue实例上
实现登录(await是为了简化返回结果。 data:res也是为了解构await简化后的结果(相当于又简化一次))
导入element-ui的 弹框提示组件
这个和前面的略微有些不同,这个组件需要挂载到vue原型上
存储token,并且通过路由跳转页面
挂载路由守卫,实现没有token返回登录页面
两层for循环,渲染出侧边菜单栏
设置一二级菜单的图标
侧边收起
用户侧边栏连接改造
用index,并开启路由模式
设置卡片的长度和组件的间隙距离(el-row :gutter负责间隙)
把状态渲染成开关
分析添加用户、编辑用户、删除用户,数据验证逻辑
先说添加:
- 给模板区按钮 添加点击事件,实现显示添加面板。 是否显示添加面板数据在data区
行为区分成:data()数据区、生命周期函数created()、methods()方法。
- 当 是否显示属性 改变后,会双向绑定到视图端。视图端的添加用户面板通过:visiable感知到变化,然后显示或隐藏自己
: visible指的是属性绑定,表示弹框的显示隐藏,当:visible的值为ture的时候,弹框显示,当为false的时候,弹框隐藏 后面的.sync是什么意思呢,指的就是同步动态双向的来表示visible的值,当我们关闭窗口的时候,这个弹框隐藏了,visible的值发生了变化,但是关闭窗口这个动作,我们没法用确定的动作去判断这个值,所以用到了vue中的双向绑定的原则,在vue中统一加上了.sync来表示同步的修改了visible的值。
- 添加面板里: @close=”关闭函数”、 :model、v-model和data()区里的对象属性双向绑定、 : rules用来绑定验证规则、ref这个面板对象的名字(以后可以用这个名字来指代这个面板)
关闭函数在method()里,关闭的时候重置 文本框里的值
addForm在data()区
addUser()在method()区
表单验证规则对象在 数据区,而且这里面又调用了数据区里的具体的验证规则。
为什么在项目中data需要使用return返回数据呢?
分页逻辑
当 size改变、或者当前页改变的时候 调用methods()区里的函数。
其他调用 数据区里的数据即可。
很简单,不说了