Vue.js简单的登录界面实现
Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。Vue.js介绍学习Vue2.x。
目录
Vue.js简介
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。 详情点击:Vue.js介绍
文章的内容是基于Vue.2x版本的框架实现的,有需要可以点击此处进行学习:学习Vue2.x
登录界面实现
npm安装
Element
为了更加快速便捷的实现页面,我们可以使用一个工具来搭建我们的界面,Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
打开Elenent,点击组件,然后在右侧点击安装,将命令复制。
右击“vue.config.js” 点击在集成终端打开,确保是在文件的根目录打开终端,然后将命令粘贴在命令窗口,回车进行安装。
Axois
随着网络技术的不断发展,Web 技术日新月异。在早期的互联网时代,用户访问网页时,一次向服务器请求一个完整的页面,于是,当从一个页面跳转到另一个页面时,浏览器窗口就会出现一段时间的“白屏”,影响用户体验。另外,即使页面中只有一小部分内容发生改变,也需要将整个页面一起更新,效率很低。后来,业内逐渐产生了 AJAX 技术,实现了页面的局部刷新,使 Web 应用的用户体验得到了大幅提升。随着Vue.js 等框架的出现,SPA(单页应用)逐渐普及,AJAX 更成为 Web 项目中不可缺少的重要组成部分。
Axios 是一个专门用来处理 AJAX 相关工作的库。将Axios 和 Vue,js 结合后,即可方便地在 Web项目中使用AJAX技术。
与“element-ui”的安装一样 将以下的命令复制粘贴自终端,回车进行安装。
npm install(或简写为 i) axios
安装成功判断
安装成功后,我们可以在这个文件中可以看到他们的版本号。
ES6的模块导入
模块导入才能使用Element中的组件,以及使用axios。
菜单点击快速上手,找到引入引入Element,复制两条语句。
打开“main.js”文件,粘贴上去。
axios的模块引入则是要在你需要制作的页码中通过引入 。
代码实现
在view文件夹中新建添加文件并在route文件夹中的index.js添加一条路由
登录效果展示
在Element 寻找自己需要的代码进行复制粘贴修改
登录界面代码
template部分
<template>
<div class="login">
<div class="box">
<h1>mall-admin</h1>
<el-form
ref="ruleForm"
:model="ruleForm"
:rules="rules"
class="demo-ruleForm"
>
<el-form-item prop="name">
<el-input
prefix-icon="el-icon-user-solid"
v-model="ruleForm.name"
placeholder="用户名"
></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
prefix-icon="el-icon-lock"
v-model="ruleForm.password"
placeholder="密码"
show-password
></el-input>
</el-form-item>
<el-form-item>
<el-button
class="login-btn"
type="primary"
@click="submitForm('ruleForm')"
@keydown.enter="submitForm('ruleForm')"
>登录</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
scpript部分
<script>
//引入
import axios from "axios";
export default {
name: "LoginView",
data() {
return {
ruleForm: {
name: "",
password: "",
},
rules: {
name: [{ required: true, message: "请输入用户名", trigger: "blur" }],
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
},
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
//调用登录的接口,实现登录功能
//判断:成功,弹出来登录成功
//失败,以弹窗形式弹出失败的错误信息
axios
.post("http://106.52.94.26:3001/user/login", {
"username": this.ruleForm.name,
"password": this.ruleForm.password,
})
.then((res) => {
console.log(res);
localStorage.setItem("userinfo", JSON.stringify(res.data.user));
if (res.data.code == 200) {
this.$message({
message: "登录成功",
type: "success",
});
this.$router.push("/home");
}
})
.catch((err) => {
console.log(err);
this.$message.error(err.response.data.msg);
});
} else {
console.log("error submit!!");
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
},
};
</script>
style部分
<style scoped>
/* 加了scoped 样式只影响当前页面 */
.login {
color: red;
display: flex;
justify-content: center;
}
.box {
width: 350px;
box-shadow: #ccc 0px 0px 8px;
padding: 50px;
margin-top: 150px;
}
h1 {
text-align: center;
}
.login-btn {
width: 350px;
}
</style>
更多推荐
所有评论(0)