zoukankan      html  css  js  c++  java
  • Element(Vue)+Express(Node)模拟服务器获取本地json数据

    网上很多教程说需要在build目录下的dev-server.js文件中配置,但目前最新的vue-cli是没有dev-server.js这个文件的,因为已经被合并到webpack.dev.conf.js文件中,所以直接在该文件中配置即可。

    下面进入正题:

    1、在根目录新建一个mock文件夹存放所有用于数据测试的.json文件。

    users.json:

    2、在build目录下找到webpack.dev.conf.js文件,编写以下代码:

    // mock code
    const express = require('express')
    const app = express()
    
    const users = require('../mock/users.json') // 用户列表数据源
    const routes = express.Router()
    app.use('/api', routes)
    // 如果是post请求,那么将get改为post即可
    devServer: {
     ...
     before(app){
          app.get('/api/users', (req, res) => {
            res.json({
              errno:0,
              data:users
            })
          })
        }
    }

    测试:浏览器输入http://localhost:8080/api/users

    3、使用第三方http请求库axios进行ajax请求

    Webstrom中命令行安装,然后在/src/main.js使用axios

    npm install axios --save-dev

    main.js中加入以下代码:

    import axios from 'axios'
    Vue.prototype.$http = axios

    模拟请求代码(以Element的Table表格组件为例,在需要数据请求的组件文件中的<script></script>中请求):

    export default {
            name: "dataList",
            data() {
                return {
                    tableData: [],
                    multipleSelection: []
                }
            },
            methods: {
              addUser(){
             this.$http.get("http://127.0.0.1:8080/api/users").then(res=> {
                  if(!res.errno){
                    this.tableData=res.data.data.users;
                    console.log(this.tableData)
                  }
                })
                  .catch(function(error){
                    console.log(error);
                  });
              },
            },
          mounted:function(){
            this.addUser();
          }
        }

    HTML代码:

    <template>
        <div>
            <el-table
                    ref="multipleTable"
                    :data="tableData"
                    tooltip-effect="dark"
                    style=" 100%"
                    @selection-change="handleSelectionChange">
                <el-table-column
                        type="selection"
                        width="55">
                </el-table-column>
                <el-table-column
                        prop="name"
                        label="姓名"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="age"
                        label="年龄"
                        width="120">
                </el-table-column>
         </el-table>
        </div>
    </template>
  • 相关阅读:
    Mac下MyEclipse安装及破解
    Mac系统安装和配置tomcat步骤详解
    android studio 导入主题设置,代码风格(附带eclipse 主题代码样式)
    电子书及阅读器Demo
    kettle大数据量读写mysql性能优化
    Git错误non-fast-forward后的冲突解决(转载)
    Mysql导出数据
    git 的使用(4)-git暂缓区工作区原理和修改删除等命令
    Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库
    solr6安装部署
  • 原文地址:https://www.cnblogs.com/dreamsqin/p/9340344.html
Copyright © 2011-2022 走看看