vue项目day01
目标:
- 回顾vue基础知识
- vant组件库的使用
- 学习如何分析需求,实现功能
- 随堂代码远程仓库地址:gitee.com/chenshaoshe…
自己做的时候可能会发现比较困难,这是比较正常,因为我们刚学完vue基础知识,所以应用起来还是有难度的,树立好正确学习观。
1、项目初始化
-
直接使用脚手架项目开发
-
vue这个命令是如何得到 的?答:因为我们之前全局安装了@vue/cli这个包,只需要安装了这个包,我们就能够得到vue这个命令,那么我也就能够通过这个命令来下载脚手架项目。
- 注:这个@vue/cli只需要全局安装一次即可,以后都可以直接使用vue命令(除非你换了电脑或者重装了系统)
-
vue create hm-project
-
-
清除脚手架项目默认的欢迎界面等信息
- src/assets/所有文件
- src/components/所有文件
- src/App.vue 里面的代码清除
-
引入初始化样式
-
在mian.js中引入预习资料中准备好的reset.less文件
-
import "./style/reset.less"
-
下载less less-laoder
-
npm i less less-loader@5.0.0 -D 有些同学的下载可能出现报错,报错的同学怎么办呢? 答:重新下载最新的less-loader的版本,执行下面命令即可 npm i less less-loader -D
-
引入全局图标库(app.vue中添加)
-
@import "http://at.alicdn.com/t/font_1426139_h6vn3jbl5q.css";
-
-
下载必要的依赖包
-
npm i vant@2 axios vue-router@3
-
-
关闭eslint,在vue.config.js中配置
module.exports = {
lintOnSave: false
}
注意:写完配置之后,一定一定要重启项目才生效
-
启动接口服务器
- 直接双击“启动服务器.bat”文件即可
-
注意:这个启动“接口服务器”的小黑窗是不能关闭,因为关闭的小黑窗,那么服务器也关闭了,也就请求不到数据了
-
使用mac系统的同学,不能通过bat文件启动接口服务器的,需要自己打开终端,执行npm run start命令启动
-
接口服务器地址:
-
http://192.168.77.34:3000 // 大家都可以访问 http://127.0.0.1:3000 // 本机才可以访问
-
认识es6
2、登录(login.vue)
1、创建login.vue组件
2、配置路由
3、布局
-
整体布局,直接从上课资料中复制过来
-
输入框和按钮:直接使用vant组件中的组件来实现
-
1、下载插件: npm i babel-plugin-import -D
-
2、在babel.config.js添加中配置
-
plugins: [ ['import', { libraryName: 'vant', libraryDirectory: 'es', style: true }, 'vant'] ]
-
-
3、配置完成后重启项目,我们的配置才生效
-
按钮组件
-
<van-button type="danger" icon="star-o" round block>登录</van-button>
-
4、实现功能
分析功能:
普通用户角度分析:进入网站,输入账号密码,点击登录按钮,登录成功跳转到首页。
程序员角度分析:获取用户输入的账号密码,给登录按钮绑定点击事件,并声明事件处理函数,事件处理函数中调用登录接口,并给接口传入账号密码,接口返回登录成功,跳转到首页,接口返回失败则弹出提示框。
根据分析拆解步骤:
-
1、获取用户输入的账号密码,声明变量v-model双向绑定输入框
-
2、给登录按钮绑定点击事件,并声明事件处理函数
-
3、在函数中调用登录接口
- 3-1、封装请求的基础路径,src/utils/reques.js
- 3-2、封装接口函数,src/api/xxx.js
- 3-3、在登录页面,引入接口函数,在点击登录的事件处理函数中调用。
-
4、登录成功跳转首页,失败则弹出提示框。
-
5、优化,调用接口之前,添加校验,校验账号密码是否为空。
- 我们直接使用vant组件库中提供的校验
/deep/ 样式穿透是less预处理器提供的语法
注意:样式穿透针对局部样式,也就是style标签上必须写上scoped属性样式穿透才生效。
3、注册(register.vue)
1、创建register.vue组件
2、配置路由
3、布局
4、实现功能
用户角度分析:进入页面,输入手机号码,昵称和密码,然后点击注册按钮,实现注册,跳转登录页面。
‘程序员角度分析:获取用户输入信息,绑定点击事件,调用注册接口,实现注册功能,注册成功跳转到登录页面,失败提示用户。
拆解步骤:
- 1、获取用户输入信息,声明变量,v-model双向绑定输入框。
- 2、给注册按钮,绑定点击事件,并声明事件处理函数
- 3、封装接口函数
- 4、在注册页面引入接口函数,然后事件处理函数中调用接口,完成注册功能
- 5、判断注册成功跳转到登录页面,否则弹出提示框
- 6、优化:调用注册接口之前,添加校验用户信息是否为空,只有校验通过才能进行注册
正则核验手机号
4、个人中心(personal.vue)
1、创建personal.vue组件
2、配置路由
3、布局
4、实现功能
1、个人信息的渲染
2、退出
1、个人信息的渲染
用户角度分析:用户进入个人中心页面,立刻看到个人信息。
程序员角度分析:在created中调用“获取用户信息”的接口,请求并保存数据,然后根据数据进行渲染。
拆解步骤:
-
1、封装 “获取用户信息” 的接口函数
-
2、在个人中心页面吗引入接口函数,然后在created中调用接口函数,请求并保存数据
-
3、根据数据进行渲染
2、退出
分析:用户点击退出按钮,跳转到登录页面
拆解步骤:
- 1、给按钮绑定点击事件,并声明事件处理函数
- 2、在事件处理函数中清除登录时保存的token和用户ID
- 3、最后跳转到登录页面
页面权限-添加导航守卫
导航守卫(路由守卫)是什么?答:就是路由跳转之前会触发的一个函数,这个函数就是beforeEach。
黑马头条项目中:个人中心必须要登录后才能访问,就是可以使用到导航守卫来实现此功能
在src/router/index.js添加如下代码即可
router.beforeEach((to, from ,next)=>{
let token = localStorage.getItem("75-token")
// 当用户跳转的页面为“个人中心”且 没有登录的时候 ,跳转到登录页面,否则直接放行
if(to.path == "/personal" && !token){
next("/login")
}else{
next()
}
})