.Vue创建简单的登录页面

主要步骤:

1、创建登录界面和主页  2、配置路由   3、配置main.js  4、配置App.vue   5、登录界面   6、主页面

一、创建登录界面和主页

二、配置路由

const routes =[

{

 path: '/login',

    name: 'login',

    component: () => import('../views/LoginView.vue'),

    meta:{

      title:"登录"

}

    },

{

 path: '/main',

    name: 'main',

    component: () => import('../views/MainView.vue'),

    meta:{

      title:"主页"

}

}

]

三、配置main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

import App from './App'
import router from './router'

Vue.config.productionTip = false;

Vue.use(ElementUI)

/* eslint-disable no-new */
var app = new Vue({
  el: '#app',
  /* 创建和挂载根实例 */
  router,
  components: { App },
  template: '<App/>'
})

四、配置App.vue

<template>
  <div id="app">
    <el-container v-if="$route.meta.keepalive">
      <el-header class="header">
        <keep-alive>
          <v_Header></v_Header>
        </keep-alive>
      </el-header>
      <el-container>
        <el-aside style="width:200px; height:600px">
          <keep-alive>
            <v_leftmenu></v_leftmenu>
          </keep-alive>
        </el-aside>
        <el-container>
          <el-main>
            <keep-alive>
              <router-view></router-view>
            </keep-alive>
          </el-main>
          <el-footer style=" padding-left: 0px;padding-right: 0px;">
            <v_footer></v_footer>
          </el-footer>
        </el-container>
      </el-container>
    </el-container>
    <router-view v-if="!$route.meta.keepalive"></router-view>
  </div>
</template>

<script>
import LeftMenu from "./components/LeftMenu"
import Header from "./components/Header"
import  Footer from './components/Footer'

export default {
  name: 'App',
  components: {
    'v_Header': Header,
    'v_leftmenu': LeftMenu,
    'v_footer': Footer
  }
}
</script>

<style>
  #app {
    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
  }
  .header{
    line-height: 60px;
    background-color: #545c64;
    text-color: white;
  }
</style>

五、登录界面

<template>
  <div class="login">
    <div>
      <el-input placeholder="请输入用户名" v-model="name" clearable class="input_style"></el-input>
      <span v-if="error.name" class="err-msg">{{error.name}}</span>
    </div>
    <div>
      <el-input placeholder="请输入密码" v-model="pwd" show-password class="input_style"></el-input>
      <span v-if="error.pwd" class="err-msg">{{error.pwd}}</span>
    </div>
    <div>
      <el-button type="primary" @click="login" class="login_style">登录</el-button>
    </div>
  </div>
</template>

<script>
  export default {
    name: "Login",
    data(){
      return {
        name: '',
        pwd : '',
        error : {
          name: '',
          pwd : ''
        }
      }
    },
    methods:{
      login(){
        const { name, pwd, $router} = this
        this.$router.push({
          name: "Main",
          params: {
            username: this.name
          }
        });
      }
    }
  }
</script>

<style>
  .login{
    margin-top: 200px;
  }
  .input_style{
    width: 200px;
    margin-bottom: 10px;
  }
  .login_style{
    width: 200px;
  }
</style>

六、主页面

<template>
  <div class="main">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        msg: 'Welcome to the main vue '
      }
    }
  }
</script>

<style>
  .main {
    font-size: 30px;
    color: #000000;
  }
</style>
 

Vue3中实现路由需要使用Vue Router。下面是一个简单的实现登陆界面的路由示例: 首先需要安装Vue Router: ```bash npm install vue-router@4.0.6 ``` 然后在项目中创建一个router.js文件,代码如下: ```javascript import { createRouter, createWebHashHistory } from 'vue-router'; import Home from './views/Home.vue'; import Login from './views/Login.vue'; const routes = [ { path: '/', name: 'Home', component: Home, meta: { requiresAuth: true // 设置需要登录才能访问 } }, { path: '/login', name: 'Login', component: Login } ]; const router = createRouter({ history: createWebHashHistory(), routes }); // 导航守卫,用于控制访问权限 router.beforeEach((to, from, next) => { if (to.meta.requiresAuth && !localStorage.getItem('token')) { next('/login'); } else { next(); } }); export default router; ``` 在这个文件中,我们首先导入了Vue Router的必要函数和我们需要的组件,然后定义了两个路由:Home和Login。在Home路由中设置了一个meta属性,标记该路由需要登录才能访问。最后使用createRouter创建了一个路由实例,并使用导航守卫实现了登录访问控制。 接下来在main.js中引入并使用router.js: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; const app = createApp(App); app.use(router); app.mount('#app'); ``` 以上就是一个简单Vue3路由实现登陆界面的示例。当用户尝试访问需要登录才能访问的路由时,会被重定向到登录页面。如果用户已经登录,则可以顺利访问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值