在vue-cli中用express模拟get、post接口的方法

在新版的vue-cli中已经找不到dev-server.js了。
因为 dev-server.js和webpack.dev.config.js合并成了webpack.dev.config.js。
所以我们应该在webpack-dev.config.js中配置接口。
首先:
在bulid文件夹中找到webpack-dev.config.js。
然后开始配置

'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
//------------------------------------开始----------------------------
// 引用express
const express =require('express')
const app = express();

//在处理post的接口时需要特定的数据处理程序(若只是get接口则不需要。)
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(bodyParser.json());


// 获取文件
var goodsData = require('../mock/goods.json')//这里是json文件的位置
// 使用express的路由router
var approuter = express.Router()
///----------------------------------结束,下边还有一小段,在接口配置的位置。---------------------

const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)

const devWebpackConfig = merge(baseWebpackConfig, {
  module: {
    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
  },
  // cheap-module-eval-source-map is faster for development
  devtool: config.dev.devtool,

  // these devServer options should be customized in /config/index.js
  devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: {
      rewrites: [
        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
      ],
    },
    hot: true,
    contentBase: false, // since we use CopyWebpackPlugin.
    compress: true,
    host: HOST || config.dev.host,
    port: PORT || config.dev.port,
    open: config.dev.autoOpenBrowser,
    overlay: config.dev.errorOverlay
      ? { warnings: false, errors: true }
      : false,
    publicPath: config.dev.assetsPublicPath,
    proxy: config.dev.proxyTable,
    quiet: true, // necessary for FriendlyErrorsPlugin
    watchOptions: {
      poll: config.dev.poll,
    },
//------------------------------------ express模拟接口的位置------------------
    before(approuter) {
      approuter.get('/goods',(req, res) =>{
        res.json(goodsData);
      }),
      approuter.post('/goods',(req,res)=>{
        res.json(goodsData)
      })
    }
///-------------------------------结束--------------------
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/dev.env')
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
    new webpack.NoEmitOnErrorsPlugin(),
    // https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    }),
    // copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      }
    ])
  ]
})

module.exports = new Promise((resolve, reject) => {
  portfinder.basePort = process.env.PORT || config.dev.port
  portfinder.getPort((err, port) => {
    if (err) {
      reject(err)
    } else {
      // publish the new Port, necessary for e2e tests
      process.env.PORT = port
      // add port to devServer config
      devWebpackConfig.devServer.port = port

      // Add FriendlyErrorsPlugin
      devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
        compilationSuccessInfo: {
          messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
        },
        onErrors: config.dev.notifyOnErrors
        ? utils.createNotifierCallback()
        : undefined
      }))

      resolve(devWebpackConfig)
    }
  })
})

接着:
在需要接口请求的组件中引用axios,并发送post,get请求。

...
import axios from 'axios'
...
 methods: {
    post (){
      axios.post("/goods").then(res => {
        console.log(res.data);
      }).catch(err =>{
        this.msg =err;
      })
    }, 
     get (){
      axios.get("/goods").then(res => {
        console.log(res.data);
      }).catch(err =>{
        this.msg =err;
      })
    }
  }

最后
返回的加载信息为
在vue-cli中用express模拟get、post接口的方法_第1张图片

你可能感兴趣的:(vue-cli,express,express,router,vue模拟接口)