• 使用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列表中追加一个路由子项

    1. {
    2. path: '/todo',
    3. component: Layout,
    4. redirect: '/todo/index',
    5. hidden: false,
    6. children: [
    7. {
    8. path: 'index',
    9. component: () => import('@/views/todo/index'),
    10. name: 'Profile',
    11. meta: { title: '任务列表', icon: 'list', noCache: true }
    12. }
    13. ]
    14. }

    2、添加页面

    创建一个路径为src/views/todo的目录,同时在该目录下创建一个名为index.vue的文件

    1. <template>
    2. <div class="app-container">
    3. <h1>{{ title }}</h1>
    4. </div>
    5. </template>
    6. <script>
    7. export default {
    8. name: 'Todo',
    9. data() {
    10. return {
    11. title: '任务列表'
    12. }
    13. }
    14. }
    15. </script>

    3、添加元素

    页面上的当前任务、未完成、已完成,实际是三个tab标签页

    打开element网站,找到tab标签页这个组件,找到想要的效果,打开代码复制到index.vue

     

     创建任务按钮是一个按钮。

       "primary" @click="createTask">创建任务

     任务名称这一行是一个table表格

     

    1. :data="tableData"
    2. border
    3. style="width: 100%;">
    4. <el-table-column
    5. fixed
    6. prop="name"
    7. label="任务名称"
    8. width="100">
    9. el-table-column>
    10. <el-table-column
    11. prop="desc"
    12. label="任务描述"
    13. width="400">
    14. el-table-column>
    15. <el-table-column
    16. prop="start_time"
    17. label="开始时间"
    18. width="150">
    19. el-table-column>
    20. <el-table-column
    21. prop="end_time"
    22. label="结束时间"
    23. width="150">
    24. el-table-column>
    25. <el-table-column
    26. prop="assign"
    27. label="执行人"
    28. width="120">
    29. el-table-column>
    30. <el-table-column
    31. prop="status"
    32. label="任务状态"
    33. width="120">
    34. el-table-column>
    35. <el-table-column
    36. fixed="right"
    37. label="操作"
    38. width="60">
    39. <template slot-scope="scope">
    40. <el-button type="text" size="small" @click="editTask(scope.row)">编辑el-button>
    41. template>
    42. el-table-column>

     

     最后个表格列-操作下面,还包括一个编辑的text按钮。

    1. fixed="right"
    2. label="操作"
    3. width="60">
    4. <template slot-scope="scope">
    5. <el-button type="text" size="small" @click="editTask(scope.row)">编辑el-button>
    6. template>

    点击创建任务,右侧弹出一个面板

     

     

     

    这其实是一个抽屉组件,组件内是一个表单组件。

     4、添加事件

    在页面代码中通过@click属性来绑定事件处理函数,还需要在methods对象中定义对应的处理函数对象

    1. export default {
    2. name: 'Todo',
    3. data() {
    4. return {
    5. ...
    6. form: {
    7. 'name': '',
    8. 'desc': '',
    9. 'start_time': '',
    10. 'end_time': '',
    11. 'assign': '',
    12. 'status': ''
    13. }
    14. }
    15. },
    16. methods: {
    17. createTask () {
    18. this.title = '创建任务';
    19. this.drawer = true;
    20. this.form = {};
    21. },
    22. editTask (row) {
    23. this.title = '编辑任务';
    24. this.drawer = true;
    25. this.form = row;
    26. },
    27. onSubmit() {
    28. console.log('submit!');
    29. }
    30. }
    31. }

    5、提交表单数据

    在之前的内容中已经完成了页面的设计和交互,这里需要做的是把表单的内容提交到服务器端。Vue中发送ajax请求到服务器端推荐使用axios组件,而vue-element-admin框架已经集成并封装了该组件。首先,在src/api目录下新建一个todo.js的文件

    1. import request from '@/utils/request'
    2. export function submit (data) {
    3. return request({
    4. url: '/api/todo',
    5. method: 'post',
    6. headers: {
    7. 'Content-Type': 'application/json'
    8. },
    9. data
    10. })
    11. }

    这里定义了一个发送ajax请求的submit函数,该函数实际上调用了封装好axios组件的request函数,并将请求相关的url、method、headers、data数据传递给该底层函数。之后,在src/views/todo/index.vue页面中引入定义好的submit函数,并将onSubmit处理函数中的内容进行替换。

    1. <script>
    2. import {submit} from '@/api/todo'
    3. …
    4. onSubmit () {
    5. submit(this.form).then((response)=>{
    6. if (response.code === 0) {
    7. this.$message({
    8. showClose: true,
    9. message: '保存成功!',
    10. type: 'success'
    11. });
    12. }
    13. })
    14. }
    15. </script>

    这里调用submit函数,把表单数据提交给requests,然后获取返回结果response。

    当response为0时,返回message。

    任务内容提交到服务器之后,还需要再次从服务器拉取下来以便于查看。与提交数据到服务器类似,从服务器获取数据同样需要通过ajax方式来发送HTTP请求。具体要做的是在src/api/todo.js文件中新建一个名为pullData的函数。具体内容如下:

    1. export function pullData (par) {
    2. return request({
    3. url: '/api/todo',
    4. method: 'get',
    5. params: par
    6. })
    7. }

    然后,在src/views/todo/index.vue文件中引入该函数,同时定义一个调用该函数的新函数getTaskData。

    1. getTaskList (tab) {
    2. pullData({tab: tab}).then((response)=>{
    3. if (response.code === 0) {
    4. this.tableData = response.data;
    5. }
    6. })
    7. }

    同时在点击tab加载页面时,调用该函数

    1. mounted() {
    2. this.getTaskList(this.activeTab)
    3. },

    完整代码的分支路径为:https://github.com/five3/vue-element-admin/tree/todo

  • 相关阅读:
    vue项目package.json与package-lock.json作用及区别
    机器学习即代码的时代已经到来
    安装JDK(不同环境下都有)
    数据结构——考研笔记(二)线性表的定义和线性表之顺序表
    类和对象进阶------构建日期类
    视频批量剪辑:AI智剪入门,轻松掌握智能剪辑技巧
    华为认证 | 考HCIE,真的不需要先考HCIP
    计算机与操作系统
    在线云原生边缘计算KubeEdge安装配置(二)
    git常见 操作仓库指令
  • 原文地址:https://blog.csdn.net/seanyang_/article/details/127702027