基本布局已经有了, 现在我们来开始做我们的注册页面~

当然需要注册才能发表文章啊(糟老头子坏得很, 我可以只有我一个人能发啊)。

这里我们设定只有注册才能发表文章,也就淡化了管理员这个概念。在开发中先将原型做出来,然后再对其进行迭代、重构来达到我们最终想要的效果。

准备

  1. 新建 vue 组件,编写注册页面的代码

  2. 为这个组件建立路由对象

这里我们依旧是采用 ElementUI 中的组件,因为是注册,需要提交表单。

因此我们来看看 ElementUI 中表单组件相关的文档:

官方文档:点击查看

实现登录页面

首先先在 views 目录下新建 Signup.vue组件。

然后编写视图代码:

<template>
<div>
<el-form>
<el-form-item prop="username" label="用户名">
<el-input></el-input>
</el-form-item> <el-form-item prop="password" label="密码">
<el-input type="password"></el-input>
</el-form-item> <el-form-item prop="rePassword" label="确认密码">
<el-input type="password"></el-input>
</el-form-item> <el-form-item>
<el-button type="primary" size="small">注册</el-button>
</el-form-item> </el-form>
</div>
</template> <script>
export default {
name: "Signup"
}
</script> <style scoped> </style>

这里只是实现了页面, 还没有实现其他的逻辑。

建立路由对象

其实路由对象应该和组件建立一起,当你的组件新建之后,就应该去为它建一个路由对象。

这样你能够边写代码,边看实际效果。

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue' Vue.use(Router) export default new Router({
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
},
{
path: '/signup',
name: 'signup',
component: () => import('./views/Signup.vue')
}
]
})

好了, 现在我们可以来看看效果:

这个效果有点感人啊,整个元素全部铺开在页面上,完全没有用户体验了。

不行, 我们得改改,虽说不是专业的设计师。但是基本的设计还是要有的

重构布局

这里我们依旧在 ElementUI 中查找看是否有现成的解决方案:

布局文档:点击查看

很好, 这里我们可以利用 el-row, el-col 来进行布局。

它是基于24分栏的栅栏布局,我们想要让这个表单居中应该怎么办呢?

要居中的话, 左右两边的栅栏数相等即可,也就实现了表单这个块元素是位于水平居中的。

代码:

<template>
<div>
<el-row>
<el-col :span="6" :offset="9">
<el-form label-width="80px">
<el-form-item prop="username" label="用户名">
<el-input></el-input>
</el-form-item> <el-form-item prop="password" label="密码">
<el-input type="password"></el-input>
</el-form-item> <el-form-item prop="rePassword" label="确认密码">
<el-input type="password"></el-input>
</el-form-item> <el-form-item>
<el-button type="primary" size="small">注册</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</template> <script>
export default {
name: "Singup"
}
</script> <style scoped> </style>

上面代码中的 69都是计算得来的,总共是24,左右两边又要相等,那么中间的表单占用了 6格,还剩下18格。平分下来每边就是9格了。

现在效果就好很多了:

编写登录逻辑

页面已经完成, 剩下的就是编写注册逻辑:

  • 点击注册,首先验证密码和确认密码是否一致

  • 密码一致则向后端接口发起请求

这里的接口我们使用 postman 模拟出来的接口。

在这之前我们先把数据定义一下, 并且绑定到表单元素中去:

data() {
return {
model: {
username: '',
password: '',
rePassword: ''
}
};
},
<template>
<div>
<el-row>
<el-col :span="6" :offset="9">
<el-form label-width="80px">
<el-form-item prop="username" label="用户名">
<el-input v-model="model.username"></el-input>
</el-form-item> <el-form-item prop="password" label="密码">
<el-input type="password" v-model="model.password"></el-input>
</el-form-item> <el-form-item prop="rePassword" label="确认密码">
<el-input type="password" v-model="model.rePassword"></el-input>
</el-form-item> <el-form-item>
<el-button type="primary" size="small">注册</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</template>

首先给注册按钮添加对应事件:

<el-button type="primary" size="small" @click="submit">注册</el-button>

然后在 methods 中实现此函数:

submit() {
if(this.model.password !== this.model.rePassword){
this.$message.error('两次出入密码不一致.');
return ;
} axios.post('https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io/signup', this.model)
.then(res => {
if(res.data.Code === 200){
this.$message.success("注册成功");
}
});
}

实际效果:

这段逻辑中使用了 axios 库用来向后端接口发起异步请求,具体的使用方式可以查阅官方文档:

看云文档

到底为止,注册功能算是完成了80%了,剩下的等把登录页面写完之后,再加上:

  • 注册成功后跳转到登录页面即可

浅入深出Vue:注册的更多相关文章

  1. 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置

    浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...

  2. 浅入深出Vue:前言

    浅入深出Vue系列文章 之前大部分是在做后端,后来出于某些原因开始接触Vue.深感前端变化之大,各种工具.框架令人眼花缭乱.不过正是这些变化,让前端开发更灵活. 博主在刚开始时,参考官网的各个步骤以及 ...

  3. 浅入深出Vue:环境搭建

    浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...

  4. 浅入深出Vue:工具准备之WebStorm安装配置

    浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...

  5. 浅入深出Vue系列

    浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...

  6. 浅入深出Vue:第一个页面

    今天正式开始入门篇,也就是实战了~ 首先我们是要做一个博客网站,UI 框架采用江湖传闻中的 ElementUI,今天我们就来利用它确定我们博客网站的基本布局吧. 准备工作 新建一个vue项目(可以参考 ...

  7. 浅入深出Vue:代码整洁之封装

    深入浅出vue系列文章已经更新过半了,在入门篇中我们实践了一个小小的项目. <代码整洁之道>一书中提到过一句话: 神在细节中 这句话来自20世纪中期注明现代建筑大师 路德维希·密斯·范·德 ...

  8. 浅入深出Vue:文章列表

    终于到我们小项目的最后一个功能了,那就是列表页展示! 新建组件 先来新建组件 List.vue: <template> <div></div> </templ ...

  9. 浅入深出Vue:代码整洁之去重

    在开始本篇的主题之前,让我们把上次遗留下来的问题都清理一下: 将其他组件中 axios 请求的地方封装起来. 这里就不把代码放在开头了,相关代码都放在文末,有兴趣了解的童鞋可以先往下翻. 好了, 我们 ...

随机推荐

  1. WPF 列表样式

    <Window x:Class="CollectionBinding.MainWindow"        xmlns="http://schemas.micros ...

  2. 编译时MSIL注入--实践Mono Cecil(1)

    原文:编译时MSIL注入--实践Mono Cecil(1) 紧接上两篇浅谈.NET编译时注入(C#-->IL)和浅谈VS编译自定义编译任务—MSBuild Task(csproject),在第一 ...

  3. 我们错过了那么多机会,怎么办(就是预见未来的能力,并且要去做、要去投入,所以要主动学习、储备、选择,要不断的思考)good

    那天在IT职业咨询QQ群里聊天,提到腾讯.阿里,我说跟着这两家公司从小到大的朋友,都获得了不菲的回报,成了富翁或者财务自由了. 有群友感叹说:“是啊,我们错过了那么多机会.” 看到这句话,我心里一动, ...

  4. C# TIFF图像开发

    NuGet安装控件: Install-Package BitMiracle.LibTiff.NET -Version 实现代码: private BitmapSource TiffToBitmap(s ...

  5. 基于VUE实现的新闻后台管理系统-一

    基于VUE实现的新闻后台管理系统 前段时间拿到一个关于新闻后台的API,测试数据库使用SQLite,Restful服务是用Go写的,只要运行特定环境下的脚本(run.*)就会启动一个服务,依次后台为接 ...

  6. asp.net core2.0中网站发布的时候,视图文件不被打包成dll

    项目csproj文件里面加 <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <Target ...

  7. 事件循环和线程没有必然关系(就像Windows子线程默认没有消息循环一样),模态对话框和事件循环也没有必然关系(QWidget直接就可以)

    周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解.从来只看到现象,这次借 dbzhang800 的博 ...

  8. Channel 9视频整理【1】

    David Dong 微软mvp https://www.​facebook.com/​DotNet​Walker http://s​tudyhost.​blogspot.tw/ https://ch ...

  9. Delphi 项目失败的总结

    随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一.技术层面        1.少用指针类型,多用类.            虽然指针类型能有效的节约内存和加快运行速度,但指针远没有类来得 ...

  10. 用Go语言异常机制模拟TryCatch异常捕捉1

    有的同学看到Go和TryCatch一起出现,心里可能会说,难道Go语言升级了,加入了try...catch语句.哈哈,其实Go语言从创建之初就没打算加入try...catch语句,因为创建Go的那帮大 ...