VUE电商项目day01--登陆功能

day1:
加载过后端程序,连接了服务器,测试过接口后
开始项目:
1.webstorm打开项目
2.打开终端 git status 查看是否有On branch master
3.创建login分支 git checkout -b login
4.查看所有分支git branch
5.运行vue ui 点击tasks然后开始serve 点击open app
6.清理day01项目 清除App.vue、router下的index关于Home插件配置 删除Home、About
7.创建login组件,

样式是比较重要的 .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; } } 16.添加element组件 在plugins中的element.js加入 import { Button } from 'element-ui' import {Form,FormItem} from "element-ui"; import {Input} from "element-ui";

Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
17.加入输入框、按钮以及样式(包括加入icon)
18、用户名、密码绑定
现在el-form中:model=“loginForm” 然后在script下
data() {
return {
//这是登陆表单的数据绑定对象
loginForm:{
username:“admin”,
password:“zhangsan”
}
}
然后在每个itrm下绑定


19、表单验证绑定
el-form中绑定rules
在script的data中加入rules:{ name:[{},{}],require:[]}
loginFormRules:{
//验证用户名是否合法
username:[
{ required: true, message: ‘请输入用户名’, trigger: ‘blur’ },
{ min: 3, max: 10, message: ‘长度在 3 到 10 个字符’, trigger: ‘blur’ }
],
//验证密码是否合法
password:[
{ required: true, message: ‘请输入登陆密码’, trigger: ‘blur’ },
{ min: 6, max: 15, message: ‘长度在 6 到 15 个字符’, trigger: ‘blur’ }
]
}
对每个el-form-item利用prop=“name”
19、重置功能设置Ref
在el-form中添加ref属性
在重置button上click事件
<el-button type=“info” @click=“resetLoginForm”>重置
添加方法:
methods: {
//点击重置按钮,重置登陆表单
resetLoginForm() {
this.KaTeX parse error: Expected 'EOF', got '}' at position 40: …ields(); }̲ 20.实现登陆前表单数据的欲…refs.loginFormRef.validate(valid => {
if (!valid) return;
});
21、登陆要发送请求肯定要axious
首先引入import axious from ‘axios’
配置请求的根路径axious.defaults.baseURL = ‘http://127.0.0.1:8888/api/private/v1/’
然后Vue.prototype.KaTeX parse error: Expected '}', got 'EOF' at end of input: …{ this.refs.loginFormRef.validate(valid => {
if (!valid) return;
this.$http.post(‘login’,this.loginForm); //其中login是在根路径后的,this.loginForm是请求的数据
});

且打开后端接口 node.\app.js
login() {
this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …t = await this.http.post(‘login’,this.loginForm);//第二步:发起请求,写上请求地址和请求参数
console.log(result)
});
第三个:其中如果没有await那么返回的result是一个Promise对象,加上await,其中await必须前面跟着async,这样就可以返回一个正常的对象
login() {
this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …} = await this.http.post(‘login’,this.loginForm);//发起请求
//服务器返回结果有六个数据,只有data有用所以用{data:res}解构data的信息,重新命名为res
if(res.meta.status !== 200) return console.log(“登陆失败”);
console.log(“登陆成功”)
});
23、登陆提示
引入element-ui的message
import {Button,Form,FormItem,Input,Message} from ‘element-ui’
Vue.prototype. m e s s a g e = M e s s a g e / / m e s s a g e 不 一 样 , 不 可 以 简 单 用 v u e . u s e ( ) i f ( r e s . m e t a . s t a t u s ! = = 200 ) r e t u r n t h i s . message = Message//message不一样,不可以简单用vue.use() if(res.meta.status !== 200) return this. message=Message//messagevue.use()if(res.meta.status!==200)returnthis.message.error(“登陆失败”)

      this.$message.success("登陆成功")

24、完善登陆
// 1.将登陆陈宫之后的token,保存到客户端的sessionStorge中
// 1.1项目中除了登陆之外的其他API接口,必须在登陆之后才能够访问
console.log(res);
window.sessionStorage.setItem(‘token’,res.data.token)
// 1.2 token只应在当前网站打开期间生效,所以将token保存在sessionStroage中
// 2.通过编程式导航跳转转到后台主页,路由地址 /home
this. r o u t e r . p u s h ( ′ / h o m e ′ ) 在 浏 览 器 登 陆 成 功 之 后 可 以 c t r l + I 之 后 看 A p p l i c a t i o n 的 S t r o a g e 中 的 S e s s i o n S t o r a g e 查 看 k e y 和 v a l u e , 就 可 以 看 到 t o k e n 和 对 应 的 值 完 善 跳 转 / h o m e 之 后 的 组 件 , 创 建 h o m e . v u e 组 件 , 在 r o u t e r 的 i n d e x . j s 中 的 引 入 i m p o r t H o m e f r o m ′ . . / c o m p o n e n t s / h o m e . v u e ′ 然 后 再 r o u t e s 中 配 置 c o n s t r o u t e r = n e w V u e R o u t e r ( r o u t e s : [ p a t h : ′ / l o g i n ′ , c o m p o n e n t : L o g i n , p a t h : ′ / h o m e ′ , c o m p o n e n t : H o m e ] ) 25 、 路 由 导 航 守 卫 控 制 访 问 权 限 / / 为 路 由 对 象 , 添 加 b e f o r e E a c h 导 航 首 位 r o u t e . b e f o r e E a c h ( ( t o , f r o m , n e x t ) = > / / t o 代 表 将 要 访 问 的 页 面 , f r o m 代 表 从 哪 个 页 面 跳 转 而 来 , n e x t 代 表 将 要 放 行 的 函 数 / / n e x t ( ) 代 表 放 行 n e x t ( ′ / l o g i n ′ ) 强 制 跳 转 / / 如 果 用 户 访 问 的 登 录 页 , 直 接 放 行 i f ( t o . e a c h = = = ′ l o g i n ′ ) r e t u r n n e x t ( ) / / 从 s e s s i o n S t o r g e 中 获 取 到 保 存 的 t o k e n 值 c o n s t t o k e n S t r = w i n d o w . s e s s i o n S t o r a g e . g e t I t e m ( ′ t o k e n ′ ) / / 没 有 t o k e n , 强 制 跳 转 到 登 录 页 i f ( ! t o k e n S t r ) r e t u r n n e x t ( ′ / l o g i n ′ ) n e x t ( ) ) e x p o r t d e f a u l t r o u t e r / / 别 忘 了 , 不 然 报 错 26 、 退 出 功 能 销 毁 本 地 的 t o k e n 即 可 , 后 续 的 请 求 就 不 会 携 带 t o k e n , 必 须 重 新 登 陆 生 成 一 个 新 的 t o k e n 之 后 才 可 以 访 问 页 面 / / 清 空 t o k e n w i n d o w . s e s s i o n S t r o a g e . c l e a r ( ) / / 跳 转 到 登 录 页 t h i s . router.push('/home') 在浏览器登陆成功之后可以ctrl+I之后看Application的Stroage中的SessionStorage查看key和value,就可以看到token和对应的值 完善跳转/home之后的组件,创建home.vue组件,在router的index.js中的引入 import Home from '../components/home.vue' 然后再routes中配置 const router = new VueRouter({ routes:[ {path:'/login',component:Login}, {path:'/home',component: Home} ] }) 25、路由导航守卫控制访问权限 //为路由对象,添加beforeEach导航首位 route.beforeEach((to,from,next) => { //to代表将要访问的页面,from代表从哪个页面跳转而来,next代表将要放行的函数 //next()代表放行 next('/login')强制跳转 //如果用户访问的登录页,直接放行 if(to.each === 'login') return next() //从sessionStorge中获取到保存的token值 const tokenStr = window.sessionStorage.getItem('token') //没有token,强制跳转到登录页 if(!tokenStr) return next('/login') next() }) export default router //别忘了,不然报错 26、退出功能 销毁本地的token即可,后续的请求就不会携带token,必须重新登陆生成一个新的token之后才可以访问页面 //清空token window.sessionStroage.clear() //跳转到登录页 this. router.push(/home)ctrl+IApplicationStroageSessionStoragekeyvaluetoken/homehome.vuerouterindex.jsimportHomefrom../components/home.vueroutesconstrouter=newVueRouter(routes:[path:/login,component:Login,path:/home,component:Home])25访//beforeEachroute.beforeEach((to,from,next)=>//to访fromnext//next()next(/login)//访if(to.each===login)returnnext()//sessionStorgetokenconsttokenStr=window.sessionStorage.getItem(token)//token,if(!tokenStr)returnnext(/login)next())exportdefaultrouter//26退tokentokentoken访//tokenwindow.sessionStroage.clear()//this.router.push(’/login’)
27、将本地代码提交到码云中
git status看状态,会显示修改过的文件和没有修改过的
git add . 添加到本地中
git commit -m “完成了登陆” 提交,一定要关闭所有文档
git branch 显示*login 就说明此时我们都提交到了login分支
git checkout master 就可以把login合并到master,出现Switched to branch 'master’表示成功
git checkout login 返回login分支
git branch 可以看到在login分支
git push -u origin login因为是第一次建立login分支所以需要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值