美文网首页
基于nuxt的vue项目配置axios,实现网络请求

基于nuxt的vue项目配置axios,实现网络请求

作者: 五点半的太阳 | 来源:发表于2019-12-17 16:52 被阅读0次

    自己写了一个基于nuxt搭建ant-design-vue框架的后台管理项目,这个项目是自己工作之余拿来练手的,通过这个项目让自己去学习一下nuxt的服务端渲染的功能,这个过程会涉及到很多东西,凡是我觉得在开发过程中代码习惯,接口调用的优化等等,有用技巧我都会记录下来,涉及到很多知识点哦,这一章就是配置axios。

    在初始化nuxt项目安装axios

    1.项目初始化阶段就可以安装好axios接下来就是在项目中配置的问题了,如果没有安装的话可以自己选择手动安装一下通过

    npm i axios --save-dev
    

    进行安装.

    2.安装完成后在plugins文件夹底下创建一个axois.js文件 引入已经安装好的axios插件

    import axios from 'axios'
    export default axios
    

    成功效果图

    配置好axios后,现在可以在vue文件中进行引入并且调用了,现在现看看我们是否引入成功


    vue文件.png
    控制台打印.png

    出现打印的函数书名我们已经引入成功。后续就是扩展自己配置的接口。

    优化接口

    在请求接口的过程中,实际需求涉及到很多请求的接口,我们可以通过一个接口配置文件进行管理,将所有vue文件的请求全部抽取出来,方面以后接口修改与参数调整等等
    废话不多说 直接上图上代码:


    微信图片_20191217164253.png

    根据图片创建文件夹与文件,在index.js文件中编写下面的代码

    /**
     * author : Weitao.Ma
     * createTime : 2019/12/17 11:35
     * contact 17753908176
     */
    import axios from '~/plugins/axios'
    
    /**
     *
     * @type {{login: (function(): (Q.Promise<any> | Promise<AxiosResponse<T>> | * | void))}}
     */
    export const userApi ={
      /**
       * @function 登录
       * @return {Q.Promise<any> | Promise<AxiosResponse<T>> | * | void}
       */
      login:()=>{
        return axios.post('/admin/login')
      }
    }
    

    然后在vue中引入api,如下代码

    import {userApi} from '~/api/index'
    

    调用如下

    <template>
      <div class="loginWrapper">
        <a-form :form="form" @submit="handleSubmit" class="loginForm">
          <a-form-item label="Name" :label-col="{ span: 5, offset: 2 }" :wrapper-col="{ span: 10,offset: 2}" justify="space-around">
            <a-input
              id="name"
              v-decorator="[
                'Name',
                { rules: [{ required: true, message: '请输入用户名' }] },
              ]"
              placeholder="请输入用户名" />
          </a-form-item>
          <a-form-item label="PassWord" :label-col="{ span: 6, offset: 1}" :wrapper-col="{ span: 10,offset: 2 }" justify="space-around">
            <a-input
              id="PassWord"
              v-decorator="[
                'PassWord',
                { rules: [{ required: true, message: '请输入密码' }] },
              ]"
              placeholder="请输入密码" />
          </a-form-item>
          <a-form-item :wrapper-col="{ span: 12, offset: 5 }">
            <a-button type="primary" html-type="submit">
              Submit
            </a-button>
          </a-form-item>
        </a-form>
      </div>
    
    </template>
    
    <script>
      import {userApi} from '~/api/index'
      export default {
        name: "login",
        data() {
          return {
            formLayout: 'horizontal',
            form: this.$form.createForm(this, { name: 'login_rule' }),
          };
        },
        created(){
        },
        methods: {
          handleSubmit(e) {
            e.preventDefault();
            const hide = this.$message.loading('正在登录,请稍后...', 0);
            setTimeout(hide, 1000);
            this.form.validateFields((err, values) => {
              if (!err) {
                userApi.login().then(res=>{
                  console.log(res)
                  this.$message.success('登录成功')
                })
    
              }
            });
          }
        },
      }
    </script>
    
    <style scoped>
      .loginWrapper{
        position: relative;
        height: 100%;
        background: #ccc;
      }
      .loginForm{
        position: absolute;
        width: 350px;
        height: 300px;
        background: #fff;
        left: 50%;
        margin-left: -175px;
        top: 50%;
        margin-top: -150px;
        padding-top: 15px;
      }
    </style>
    
    

    下一节,配置express+mockJs,实现数据请求接口的实现。

    相关文章

      网友评论

          本文标题:基于nuxt的vue项目配置axios,实现网络请求

          本文链接:https://www.haomeiwen.com/subject/qbisnctx.html