vue项目实践教程2:使用vux设计登录注册,并讲解vue路由,切换页面标题等内容
2018-01-22 20:49
1246 查看
上一章笔者介绍vux项目的搭建和简介,这里笔者设计几个登录注册页面,来讲解vux中的相关组件的使用,和vue的相关基础知识。
1.我们在与components文件夹同级的目录下创建一个views文件夹,文件夹中再创建一个user文件夹,用于存放和用户相关的页面操作。
在user文件夹下,笔者先创建一个Regist.vue文件。
2.现在注册组件已经有了,但是我们怎么才能让这个组件显示出来呢?我们知道,vue是组件化机制比较明显的一个框架,我们创建的每个vue文件都是一个组件,那我们怎么才能让这个组件显示在页面上呢?其中一种方式,通过路由的形式,连接到这个组件,让组件显示出来。
我们找到src/router目录,该目录下有一个index.js文件,打开该文件,可以看到有import语句,其中HelloWord就是通过import导入进来的,同样,我们将Regist.vue通过import 的形式导入进来。我们将组件导入进来之后,就需要去使用它,那么怎么使用呢?
仔细往下看,有一个routes数组,这个数组中保存的就是各组件的信息。
我们以这样的形式,将注册组件添加到路由中去,path代表的路由路径,也就是你要访问的链接路径,name代表这个路由的名称,你在后续进行路由跳转的时候,可以通过path跳转,也可以通过name进行跳转,component表示引用的哪个组件。
路由注册成功只有,我们就可以通过访问该路由访问到注册组件。
3.既然我们的注册组件已经可以显示出来了,那么我们就要往这个组件中添加内容。
在vue组件中,template标签内的是要显示在页面中的元素节点,该标签内需要包含一个标签,该组件想要表现的内容需要全部放到这个标签中,如果template标签下的字标签出现了两个同极标签,编译会报错。
script中主要保存一些数据,和写一些逻辑。
style中用于写页面样式,如果我们想要让我们写的样式只针对本组件产生效果,我们需要在style里添加scoped。
由于我们的vue组件最终会打包成一个文件,我们在一个组件内的写的样式有可能会对其他组件产生影响,当然,我们也可以不用加那个字段,那就需要人为可以的防止产生样式冲突。
如果我们用less或者sass编写css,就需要通过lang=”“的方式来声明。在vux项目中,已经通过webpack对less和sass进行了引入声明,因此,我们直接使用就可以。
下面看一下注册的部分代码:
在这里我们用到了vuxUI框架中的XInput,Box, Group, XButton组件,因此,我们需要把他们按需引入进来,引入进来后,需要在components中声明一下,这样才能正常使用相关组件。
对于各个组件的使用,我这里不做过多讲解,同志们可以直接去查看相关技术文档,那里比我这里讲的要详细。
这里需要声明一点,对于XButton按钮的点击事件,我们需要使用@click.native的形式声明。
有读者可能会问,this.$vux.toast.text()是怎么回事,这里调用了vux中的Toast组件,但是我们为什么没有导入声明呢?其实已经导入了,但是不是在这里,而是在main.js 中。
我们打开main.js,加入下面的内容:
我们以插件的形式引入了Toast相关内容,并且通过Vue.use()的形式去声明使用。
上述代码中,data()中的内容主要用于保存数据,这里面返回的数据可以绑定到页面标签内,从而实现页面数据的展示。
methods中主要是写一些逻辑方法,比如上述中的按钮点击事件方法,方法的编写形式,如果刚入门可以按照平时js中函数的编写形式写就行。如果想操作data()中的数据,可以通过“this.变量”的形式拿到数据,然后进行操作。
create()中的内容是干什么的呢?这里是当该vue组件被创建的时候调用的内容,这里涉及到vue声明周期的相关的内容,感兴趣的读者可以直接去官网,或者搜索相关资料了解。
因为我们操作的都是组件,不像那些一个个html我们可以直接写title,所以,如果我们想让每个组件显示不同的标题该怎么办?
通过 window.document.title = ‘注册’ 的形式就可以。该直接放在script标签内也可以,但是最好放在create()内,保证每次组件创建都会修改标题内容。
好,我们看一下页面的表现效果。
同样我们可以将登录组件编写出来,那么这两个组件之间怎么进行跳转呢?答案见上述代码,有这么一句话:
如果我们想要通过点击页面某个元素然后进行跳转,可以通过上述router-link的形式,to表示的是你要跳转的路由组件,我们可以以路经的形式,也可以直接通过路由名称进行跳转,另外to的内容也可以这样写:
同样可以达到效果。
那么,如果我们想要通过js来实现路由跳转,该怎么办呢?在点击事件中通过如下方式来实现路由跳转。
好,如果还有不明白的读者,可以直接访问项目地址,查看源码。
vue零售商城项目源码
1.我们在与components文件夹同级的目录下创建一个views文件夹,文件夹中再创建一个user文件夹,用于存放和用户相关的页面操作。
在user文件夹下,笔者先创建一个Regist.vue文件。
2.现在注册组件已经有了,但是我们怎么才能让这个组件显示出来呢?我们知道,vue是组件化机制比较明显的一个框架,我们创建的每个vue文件都是一个组件,那我们怎么才能让这个组件显示在页面上呢?其中一种方式,通过路由的形式,连接到这个组件,让组件显示出来。
我们找到src/router目录,该目录下有一个index.js文件,打开该文件,可以看到有import语句,其中HelloWord就是通过import导入进来的,同样,我们将Regist.vue通过import 的形式导入进来。我们将组件导入进来之后,就需要去使用它,那么怎么使用呢?
仔细往下看,有一个routes数组,这个数组中保存的就是各组件的信息。
{ path:'/Regist', name:'Regist', component:Regist }
我们以这样的形式,将注册组件添加到路由中去,path代表的路由路径,也就是你要访问的链接路径,name代表这个路由的名称,你在后续进行路由跳转的时候,可以通过path跳转,也可以通过name进行跳转,component表示引用的哪个组件。
路由注册成功只有,我们就可以通过访问该路由访问到注册组件。
3.既然我们的注册组件已经可以显示出来了,那么我们就要往这个组件中添加内容。
在vue组件中,template标签内的是要显示在页面中的元素节点,该标签内需要包含一个标签,该组件想要表现的内容需要全部放到这个标签中,如果template标签下的字标签出现了两个同极标签,编译会报错。
script中主要保存一些数据,和写一些逻辑。
style中用于写页面样式,如果我们想要让我们写的样式只针对本组件产生效果,我们需要在style里添加scoped。
<style scoped lang="less">
由于我们的vue组件最终会打包成一个文件,我们在一个组件内的写的样式有可能会对其他组件产生影响,当然,我们也可以不用加那个字段,那就需要人为可以的防止产生样式冲突。
如果我们用less或者sass编写css,就需要通过lang=”“的方式来声明。在vux项目中,已经通过webpack对less和sass进行了引入声明,因此,我们直接使用就可以。
下面看一下注册的部分代码:
<template> <div class="regist"> <group> <x-input title="" name="mobile" placeholder="请输入手机号" v-model="mobile" keyboard="number" is-type="china-mobile" required></x-input> <x-input title="" type="text" placeholder="请输入验证码" v-model="code" required> <x-button slot="right" type="primary" mini :disabled="getCode.disabled" @click.native="handleGetCode" style="width: 100px;">{{getCode.txt}}</x-button> </x-input> <x-input title="" type="password" placeholder="请设置登录密码" v-model="password" :min="6" :max="16" required></x-input> <x-input title="" type="password" placeholder="确认密码" v-model="passwordC" :min="6" :max="16" required></x-input> </group> <p><span>注册后,您的微信账号和手机号都可以登录</span></p> <box gap="10px 25px"> <x-button type="primary" @click.native="handleRegist">注册</x-button> </box> <p> <router-link to="/Login">已有账号?去登录</router-link> </p> </div> </template> <script> import { XInput, Box, Group, XButton } from 'vux' export default { name: 'regist', data() { return { mobile: '', //手机号 code: '', //验证码 password: '', //密码 passwordC: '', //确认密码 getCode: { txt: '获取验证码', disabled: false, } } }, methods: { handleGetCode() { if(this.mobile) { this.getCode.disabled = true; this.getCode.txt = '获取中...'; let seconds = 60; let self = this; let time = setInterval(function() { --seconds; self.getCode.txt = seconds + 's'; if(seconds <= 0) { clearInterval(time); self.getCode.disabled = false; self.getCode.txt = '获取验证码'; } }, 1000) } else { this.$vux.toast.text('请先填写手机号'); } }, handleRegist() { if(!this.mobile || !this.code || !this.password || !this.passwordC) { this.$vux.toast.text('您有未填项,不能注册') } else if(this.password != this.passwordC) { this.$vux.toast.text('两次输入的密码不一致') } else { this.$vux.toast.text('注册成功') } } }, created() { window.document.title = '注册'; }, components: { XInput, XButton, Group, Box } } </script>
在这里我们用到了vuxUI框架中的XInput,Box, Group, XButton组件,因此,我们需要把他们按需引入进来,引入进来后,需要在components中声明一下,这样才能正常使用相关组件。
对于各个组件的使用,我这里不做过多讲解,同志们可以直接去查看相关技术文档,那里比我这里讲的要详细。
这里需要声明一点,对于XButton按钮的点击事件,我们需要使用@click.native的形式声明。
有读者可能会问,this.$vux.toast.text()是怎么回事,这里调用了vux中的Toast组件,但是我们为什么没有导入声明呢?其实已经导入了,但是不是在这里,而是在main.js 中。
我们打开main.js,加入下面的内容:
import { ToastPlugin, LoadingPlugin } from 'vux' Vue.use(ToastPlugin) Vue.use(LoadingPlugin)
我们以插件的形式引入了Toast相关内容,并且通过Vue.use()的形式去声明使用。
上述代码中,data()中的内容主要用于保存数据,这里面返回的数据可以绑定到页面标签内,从而实现页面数据的展示。
methods中主要是写一些逻辑方法,比如上述中的按钮点击事件方法,方法的编写形式,如果刚入门可以按照平时js中函数的编写形式写就行。如果想操作data()中的数据,可以通过“this.变量”的形式拿到数据,然后进行操作。
create()中的内容是干什么的呢?这里是当该vue组件被创建的时候调用的内容,这里涉及到vue声明周期的相关的内容,感兴趣的读者可以直接去官网,或者搜索相关资料了解。
因为我们操作的都是组件,不像那些一个个html我们可以直接写title,所以,如果我们想让每个组件显示不同的标题该怎么办?
通过 window.document.title = ‘注册’ 的形式就可以。该直接放在script标签内也可以,但是最好放在create()内,保证每次组件创建都会修改标题内容。
好,我们看一下页面的表现效果。
同样我们可以将登录组件编写出来,那么这两个组件之间怎么进行跳转呢?答案见上述代码,有这么一句话:
<router-link to="/Login">已有账号?去登录</router-link>
如果我们想要通过点击页面某个元素然后进行跳转,可以通过上述router-link的形式,to表示的是你要跳转的路由组件,我们可以以路经的形式,也可以直接通过路由名称进行跳转,另外to的内容也可以这样写:
:to="{path:'/Login'}"
同样可以达到效果。
那么,如果我们想要通过js来实现路由跳转,该怎么办呢?在点击事件中通过如下方式来实现路由跳转。
this.$router.push({ path:'/Login' })
好,如果还有不明白的读者,可以直接访问项目地址,查看源码。
vue零售商城项目源码
相关文章推荐
- vue项目实践教程3:中间大的五选项底部切换卡制作及相关问题解决
- [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
- Vue 路由切换时页面内容没有重新加载的解决方法
- vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换
- Vue 路由切换时页面内容没有重新加载
- html—登录及注册页面设计
- bootstrap3.0教程之排版详细使用教程(标题、页面主体、强调、缩略语等用法)
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
- 如何设计页面布局,菜单和正式内容?使用div还是分部视图?
- 十大打动人的注册与登录页面细节设计
- 如何使用 asp.net 4.0 新特性 路由功能 有助于seo优化 给一个 asp.net web项目(网站项目) 增加路由功能 ,继承,给根据路由生成的url的结尾,增加一个有利于seo优化的斜杠 /,跳转到一个路由生成的url页面
- bootstrap3.0教程之排版详细使用教程(标题、页面主体、强调、缩略语等用法)
- 使用ssh框架写一个基本的登录注册页面
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
- 使用Axure RP原型设计实践07,注册判断
- 99个漂亮的注册和登录页面设计(附PSD)
- 使用Axure RP原型设计实践03,制作一个登录界面的原型
- 99个漂亮的注册和登录页面设计(附PSD)
- JSP第四课:用户注册登录设计(内置对象使用)
- 100个漂亮的注册和登录页面设计(附PSD)