使用Element進行前端開發的詳細圖文教程

前言

本文介紹如何使用vue-element-admin+element進行前端開發。

我們可以使用element組件很方便的進行前端開發,並且每個組件都已經提供瞭對應的代碼,隻需要復制我們需要的功能即可。

前提:下載編譯運行vue-elemnt-admin,詳細可見vue-element-admin官網

> git clone -b api https://github.com/five3/vue-element-admin.git

> cd vue-element-admin

> npm i

> npm run dev

出現如下顯示,說明運行成功,可以訪問。 

目的:實現任務列表項目前端

1、添加路由

1、在src/router/index.js文件,並在constantRoutes列表中追加一個路由子項

{
    path: '/todo',
    component: Layout,
    redirect: '/todo/index',
    hidden: false,
    children: [
      {
        path: 'index',
        component: () => import('@/views/todo/index'),
        name: 'Profile',
        meta: { title: '任務列表', icon: 'list', noCache: true }
      }
    ]
  }

2、添加頁面

創建一個路徑為src/views/todo的目錄,同時在該目錄下創建一個名為index.vue的文件

<template></template>
  <div class="app-container"></div>
    <h1></h1>{{ title }}</h1></h1>
  </div>
  </template>
<script></script>
export default {
  name: 'Todo',
  data() {
    return {
      title: '任務列表'
    }
  }
}
</script>

3、添加元素

頁面上的當前任務、未完成、已完成,實際是三個tab標簽頁

打開element網站,找到tab標簽頁這個組件,找到想要的效果,打開代碼復制到index.vue

 創建任務按鈕是一個按鈕。

   <el-button type="primary" @click="createTask">創建任務</el-button>

 任務名稱這一行是一個table表格

  <el-table
            :data="tableData"
            border
            style="width: 100%;">
            <el-table-column
              fixed
              prop="name"
              label="任務名稱"
              width="100">
            </el-table-column>
            <el-table-column
              prop="desc"
              label="任務描述"
              width="400">
            </el-table-column>
            <el-table-column
              prop="start_time"
              label="開始時間"
              width="150">
            </el-table-column>
            <el-table-column
              prop="end_time"
              label="結束時間"
              width="150">
            </el-table-column>
            <el-table-column
              prop="assign"
              label="執行人"
              width="120">
            </el-table-column>
            <el-table-column
              prop="status"
              label="任務狀態"
              width="120">
            </el-table-column>
            <el-table-column
              fixed="right"
              label="操作"
              width="60">
              <template slot-scope="scope">
                <el-button type="text" size="small" @click="editTask(scope.row)">編輯</el-button>
              </template>
            </el-table-column>
          </el-table>

 最後個表格列-操作下面,還包括一個編輯的text按鈕。

  <el-table-column
              fixed="right"
              label="操作"
              width="60">
              <template slot-scope="scope">
                <el-button type="text" size="small" @click="editTask(scope.row)">編輯</el-button>
              </template>
            </el-table-column>

點擊創建任務,右側彈出一個面板

這其實是一個抽屜組件,組件內是一個表單組件。

4、添加事件

在頁面代碼中通過@click屬性來綁定事件處理函數,還需要在methods對象中定義對應的處理函數對象

export default {
  name: 'Todo',
  data() {
    return {
      ...
      form: {
        'name': '',
        'desc': '',
        'start_time': '',
        'end_time': '',
        'assign': '',
        'status': ''
      }
    }
  },
  methods: {
    createTask () {
      this.title = '創建任務';
      this.drawer = true;
      this.form = {};
    },
    editTask (row) {
      this.title = '編輯任務';
      this.drawer = true;
      this.form = row;
    },
    onSubmit() {
      console.log('submit!');
    }
  }
}

5、提交表單數據

在之前的內容中已經完成瞭頁面的設計和交互,這裡需要做的是把表單的內容提交到服務器端。Vue中發送ajax請求到服務器端推薦使用axios組件,而vue-element-admin框架已經集成並封裝瞭該組件。首先,在src/api目錄下新建一個todo.js的文件

import request from '@/utils/request'
export function submit (data) {
  return request({
    url: '/api/todo',
    method: 'post',
    headers: {
      'Content-Type': 'application/json'
    },
    data
  })
}

這裡定義瞭一個發送ajax請求的submit函數,該函數實際上調用瞭封裝好axios組件的request函數,並將請求相關的url、method、headers、data數據傳遞給該底層函數。之後,在src/views/todo/index.vue頁面中引入定義好的submit函數,並將onSubmit處理函數中的內容進行替換。

<script>
import {submit} from '@/api/todo'
…
    onSubmit () {
      submit(this.form).then((response)=>{
        if (response.code === 0) {
          this.$message({
            showClose: true,
            message: '保存成功!',
            type: 'success'
          });
        }
      })
    }
</script>

這裡調用submit函數,把表單數據提交給requests,然後獲取返回結果response。

當response為0時,返回message。

任務內容提交到服務器之後,還需要再次從服務器拉取下來以便於查看。與提交數據到服務器類似,從服務器獲取數據同樣需要通過ajax方式來發送HTTP請求。具體要做的是在src/api/todo.js文件中新建一個名為pullData的函數。具體內容如下:

export function pullData (par) {
  return request({
    url: '/api/todo',
    method: 'get',
    params: par
  })
}

然後,在src/views/todo/index.vue文件中引入該函數,同時定義一個調用該函數的新函數getTaskData。

    getTaskList (tab) {
      pullData({tab: tab}).then((response)=>{
        if (response.code === 0) {
          this.tableData = response.data;
        }
      })
    }

同時在點擊tab加載頁面時,調用該函數

mounted() {
    this.getTaskList(this.activeTab)
  },

完整代碼的分支路徑為:https://github.com/five3/vue-element-admin/tree/todo

總結

到此這篇關於使用Element進行前端開發的文章就介紹到這瞭,更多相關Element前端開發內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: