Vue電商後臺管理系統項目第1天-基本環境搭建&登陸功能

基本環境搭建完成

安裝npm包:npm -S i vue vue-router axios element-uijavascript

配置Eslint:css

打開設置,搜索Eslint拓展,而後將下面代碼覆蓋進去便可
{
  "editor.fontSize": 17,
  "cssrem.rootFontSize": 32,
  "liveServer.settings.donotShowInfoMsg": true,
  "javascript.updateImportsOnFileMove.enabled": "always",
  "eslint.autoFixOnSave": true,
  "files.autoSave": "off",
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "vue-html",
    {
      "language": "vue",
      "autoFix": true
    },
    "html",
    "vue"
  ],
  "eslint.autoFixOnSave": true,
  // 須要 npm install -g eslint-plugin-vue
  "eslint.options": {
    "extensions": [
      ".js",
      ".vue"
    ]
  },
  "editor.tabSize": 2,
}
Eslint配置代碼

 

 登陸功能

  • 登錄界面--用到element-uihtml

  • 涉及到用戶數據的驗證vue

  • 發起axios請求java

  • 接收返回值,實現路由跳轉react

 

添加登錄組件 :login.vue,在src下面建立用於存放頁面組件的文件夾:viewsios

全部組件的展現都是基於路由git

建立路由。添加路由配置:將路由建立爲單獨的模塊:src/router.jsgithub

讓Vue使用vue-router和讓Vue使用router對象是兩碼事vue-router

  1. Vue.use(vue-router):就能夠在Vue實例中使用全部路由相關功能,包含router-view,router-link.....

  2. Vue.use(router):僅僅是可能 使用路由配置

 

登錄界面的製做過程:login.vue

咱們須要使用element-ui中的什麼組件來實現登錄頁面

  1. 使用form表單 > 表單驗證

  2. 複製代碼,複製數據,複製功能函數

  3. 刪除不須要的結構:刪除不要的表單元素

  4. 修改已有代碼

<el-form
      :model="ruleForm" // 當前表單所對應的數據,這個數據對象中的成員通常與接口文檔的須要相關,這個時候必定要去仔細的閱讀接口文檔,將這個對象中的成員的屬性名稱要命名爲和接口文檔 的徹底一致,這樣作有一個好處:後期收集數據的時候更簡潔
      :rules="rules" // 驗證規則
      ref="ruleForm" // 表單標識
      label-width="100px" // 標籤的寬度,能夠去除
      class="demo-ruleForm"
    >

 

刪除不須要的label,同時刪除對於label寬度的設置代碼

<template>
  <div class="login">
    <div class="container">
      <img src="../assets/avatar.jpg" alt class="avatar">
      <el-form :model="loginForm" :rules="rules" ref="loginForm" class="demo-ruleForm">
        <el-form-item prop="username">
          <el-input v-model="loginForm.username" placeholder="請輸入用戶名"></el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input v-model="loginForm.password" placeholder="請輸入密碼"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" class="login-btn">登錄</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

如何實現用戶數據驗證

 Form 組件提供了表單驗證的功能,只須要經過 rules 屬性傳入約定的驗證規則,並 Form-Item 的 prop 屬性設置爲需校驗的字段名便可

1.設置prop屬性

2.根據prop屬性的值添加相同名稱的規則

3.規則解釋

{ required: true, message: '請輸入活動名稱', trigger: 'blur' }
required:必填項
message:若是不知足規則所給出的提示信息文本
trigger:觸發:何時觸發,blur是指失去焦點時觸發

 

細節:若是名稱不對應,那麼規則將沒法起效果

data () {
    return {
      loginForm: {
        username: '',
        password: ''
      },
      //   添加驗證規則
      rules: {
        username: [
          { required: true, message: '請輸入用戶名', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '請輸入密碼', trigger: 'blur' }
        ]
      }
    }

 

 

讓界面好看一些--添加自定義樣式

  1. 複製咱們所提供的樣式文件,如重置樣式代碼

  2. 複製樣式所對應的資源文件,如字體文件

  3. 在main.js文件中引入複製過來的index.less

import '@/styles/index.less'

 

在login.vue文件中添加以下樣式

<style lang="less" scoped>
.login {
  position: fixed;
  width: 100%;
  height: 100%;
  background-color: #2f4050;
  .container {
    position: absolute;
    left: 0;
    right: 0;
    width: 400px;
    padding: 0px 40px 15px 40px;
    margin: 200px auto;
    background: white;
    .avatar {
      position: relative;
      left: 50%;
      width: 120px;
      height: 120px;
      margin-left: -60px;
      margin-top: -60px;
      box-sizing: border-box;
      border-radius: 50%;
      border: 10px solid #fff;
      box-shadow: 0 1px 5px #ccc;
      overflow: hidden;
    }
    .login-btn {
      width: 100%;
    }
  }
}
</style>

 

  1. 常見錯誤:

    緣由:咱們尚未引入element-ui,你就須要下載+引入

  • 添加圖標

    • 咱們得去找到可以添加圖片的文本框,分析裏面的代碼

    • 組件>input輸入框

    • prefix-icon:添加自定義的前置圖標

    • suffix-icon:添加自定義的後置圖標

  • 添加驗證功能

    • 以前的rules僅僅是一個用戶提示信息,並不會阻止用戶提交

    • 因此咱們能夠爲表單添加一個validate函數,這個函數能夠實現 用戶數據的驗證,它會返回一個值給回調函數,以此來判斷驗證是否經過

 

 //   登錄
login () {
    //   實現用戶的數據驗證,由於以前的rules只是一個提示信息佈局,並不會真正的阻止用戶的登錄請求
    // 登錄驗證的時候,表單有一個validate函數,這個函數能夠真正的實現表單元素的數據驗證,這個驗證與以前的、rules規則對應,當驗證完成以後,會返回一個值給回調函數,若是是true,說明驗證難過,不然就不經過
    this.$refs.loginForm.validate((valid) => {
        if (valid) {
            //   驗證經過,就去發起登錄請求
            console.log('ok')
        } else {
            // 給出用戶提示
            console.log('no')
            return false
        }
    })
}

 

添加用戶提示

  • 介紹element-ui中的消息提示框

  • 找到提示框組件:組件>Message 消息提示

  • 特色:顯示以後會自動 消失

  • 分析裏面的結構和屬性

    • message:提示信息

    • type:提示信息的類型,不一樣的類型有不一樣的顏色

  • 應用

else {
    // 給出用戶提示
    this.$message({
        message: '數據輸入不合法',
        type: 'error'
    })
    return false
}

 

實現登錄功能
  1. 下載axios

  2. 引入

  3. 看接口文檔

    1. 接口名稱:login

    2. 請求方法:post

    3. 參數:{username:'',passwrod:''}

  4. 將users表的數據操做封裝爲一個單獨的文件:src/api/users.js

import axios from 'axios'
// 設置基準路徑
axios.defaults.baseURL = 'http://localhost:8888/api/private/v1/'

// 添加登錄驗證方法
// 在vue中,暴露成員可使用export
export const userlogin = (data) => {
  // 咱們不但願經過回調的方式在這邊進行操做以後的方法調用,由於post方法返回一個promise,因此能夠之後在方法調用的時候進行then和catch
//   return axios.post(url, data)
  return axios({
    url: 'login',
    method: 'post',
    data: data
  })
}

 

實例登錄

  1. 引入axios

  2. 設置baseURL

  3. 添加實現登錄驗證的方法

import { userlogin } from '@/api/users.js'


login () {
      //   實現用戶的數據驗證,由於以前的rules只是一個提示信息佈局,並不會真正的阻止用戶的登錄請求
      // 登錄驗證的時候,表單有一個validate函數,這個函數能夠真正的實現表單元素的數據驗證,這個驗證與以前的、rules規則對應,當驗證完成以後,會返回一個值給回調函數,若是是true,說明驗證難過,不然就不經過
      this.$refs.loginForm.validate(valid => {
        if (valid) {
          //   驗證經過,就去發起登錄請求
          userlogin(this.loginForm)
            .then(result => {
              if (result.data.meta.status === 400) {
                this.$message({
                  message: result.data.meta.msg,
                  type: 'error'
                })
              } else {
                //   路由跳轉
              }
            })
            .catch(() => {
              this.$message({
                message: '服務器異常,請重試',
                type: 'error'
              })
            })
        } else {
          // 給出用戶提示
          this.$message({
            message: '數據輸入不合法',
            type: 'error'
          })
          return false
        }
      })
    }
  }

登錄完成後,實現路由跳轉

this.$router.push({ name: 'Home' })

 

首頁

 添加單文件組件

<template>
    <div class="home">首頁</div>
</template>
<script>
export default {
}
</script>
<style lang="less" scoped>

</style>

添加路由配置

{
      name: 'Home',
      path: '/home',
      component: Home
    }

 

頁面效果:

 

項目Github地址https://github.com/replaceroot/itcast-manage-system3

相關文章
相關標籤/搜索