【vue2.0-数据请求步骤以及使用】

vue2.0-数据请求步骤以及使用

测试接口:postman--------https://www.postman.com/

1.二次封装axios
在src文件下创建api文件夹 request.js

// -request.js
import axios from 'axios'
//1.利用axios对象的方法create,去创建一个axios实际
//2.request就是axios,只不过稍微配置一下
const requests = axios.create({
    //配置对象
    //基础路径,发请求的时候,路径当中出现api
    baseURL:"/api",
    //代表请求超时的时间5s
    timeout:500,
})

//请求拦截器:在发请发之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情
 requests.interceptors.request.use((config)=>{
     //config:配置对象,对象里面有一个属性很重要,headers请求
     return config
 })
//响应拦截器
requests.interceptors.response.use((res)=>{
    return res.data
},(error)=>{
    return Promise.reject(new Error('faile'))
})
export default axios

2.api统一管理
在api文件夹下创建index.js文件

//index.js
import requests from './request'
//例如
//三级联动接口
//接口地址  请求方式  有无参数 ----注释
//——get 无参
export const reqCategoryList = ()=> requests({url:'不带/api',method:'get'}))
//——post 有参
//params至少是一个空对象
export const reqGetSearchInfo = (params)=> requests({url:'不带/api',method:'post',data:params}))


//用的地方调用:
import {reqCategoryList} from '@/api'
reqCategoryList()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.解决跨域

//vue.config.js
moudule.exports = {
   //关闭eslint
   lintOnSave:false,
   //代理路径
   devServer:{
       proxy:{
           '/api':{
               target:'地址',
               //pathRewrite:{'^/api':''}//重写地址:因为后面都是接着api所以不需要写
           }
       }
   }
}

5.进度条nprogress

    //在axios封装文件中使用 request.js
    import nprogress from 'nprogress'
    import 'nprogress/nprogress.css'
    //start 进度条开始  done 进度条结束
    requests.interceptors.request.use((config)=>{
        nprogress.start()
        return config
    })
    //响应拦截器
    requests.interceptors.response.use((res)=>{
        nprogress.done()
        return res.data
    },(error)=>{
        return Promise.reject(new Error('faile'))
    })

6.store中使用数据

const state={
    categoryList:[],
    saerchList:{}
}
const mutations={
   //2.名字要与actions的对应
    CATEGORYLIST(state,categoryList){
        state.categoryList = categoryList
    },
    GETSEARCHLIST(state,saerchList){
        state.saerchList = saerchList
    }
}
const actions={
 //1.async与await要一起用必须存在
 //      这个名字自定义
	 async categoryList({commit}){
     	let result = await reqCategoryList()
	     if(result.code==200){
	         commit('CATEGORYLIST',result.data)
	         //         commit给mutation
	     }
	 },
	 async getSearchList({commit},params={}){
       //params形参:是当用户派发actions这个函数在调用获取服务器数据的时候,至少传递一个参数(空对象)
       let result = await reqCategoryList(params)
       if(result.code==200){
           commit('GETSEARCHLIST',result.data)
           //         commit给mutation
       }
   	}
 },
//在项目中getters主要作用是;简化数据而生
const getters={
    //当前形参state,当前仓库中的state,并非大仓库中的state
    goodsList(state){
        //state.searchList.goodsList如果服务器数据回来了,没问题是一个数组
        //加入网络不给力|没有网
        return state.searchList.goodsList|| []
    }
}
export default {
     state,
     mutations,
     actions,
     getters
 }

需要写的效果展示

import {mapState,mapGetters} from 'vuex'//获取state+getters
   export default {
   name: "TypeNav",
   data:{
       searchParams:{
           categeory1Id:"",
           categeory2Id:"",
           categeory3Id:"",
           categoryName:"",
           keyword:"",
           order:"",
           pageNo:1,
           pageSize:10,
           props:[],
           trademark:"",
       }
   },
   
   beforeMounte(){
    //再发请求之前,把接口需要传递的参数进行整理(再给服务器请求之前把参数整理好,服务器就会返回查询的数据)
   Object.assign(this.searchParams,this.$route.query,this.$route.params)
   }
   
   methods:{
       //向服务器发请求获取search模块数据(根据参数不同返回不同的数据进行展示)
       getData(){
           
           this.$store.dispatch('getSearchList',this.searchParams)
       }
   },
   
   mounted() {
       //通知vuex发送请求,获取数据,存储于仓库当中
       this.$store.dispatch('categoryList')
       this.getData()   
   },

   //*dispatch和计算属性这俩缺一不可
   //dispatch是发送请求
   // 计算属性是将其赋值
   computed:{
        ...mapState({
            //由于在这里categoryList对象赋值了 所以在页面中可以直接使用categoryList
            categoryList:state=>state.home.categoryList
            <!--
                <div v-if="categoryList"></div>
            -->
        }),
        //mapgetters里面的写法:传递的数组,因为getters计算是没有划分模块[home,search]
        ...mapGetters(['goodsList'])
    };
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Vue 2.0中使用Element UI进行登录样式的话,你可以按照以下步骤进行: 1. 首先,在你的Vue项目中安装Element UI,你可以使用npm或者yarn命令进行安装: ``` npm install element-ui --save # 或者 yarn add element-ui ``` 2. 在你的Vue项目中导入Element UI组件库。你可以在main.js或者其他需要使用Element UI的地方进行导入: ``` import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` 3. 在你的登录组件中使用Element UI提供的组件,例如el-form、el-input、el-button等,来完成登录表单的设计: ```html <template> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-width="80px"> <el-form-item label="用户名" prop="username"> <el-input v-model="loginForm.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="loginForm.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit">登录</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { loginForm: { username: '', password: '' }, loginRules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' } ] } }; }, methods: { handleSubmit() { // 处理登录逻辑 } } }; </script> ``` 这样就可以在你的Vue项目中使用Element UI来设计登录样式了。需要注意的是,以上代码只是一个示例,实际上还需要根据你的实际需求进行相应的调整。 ### 回答2: Vue2.0中使用Element UI实现登录样式可以通过以下步骤进行: 1. 引入Element UI组件库:首先在项目中安装Element UI依赖包,通过npm或yarn安装,然后在项目的入口文件(main.js或App.vue)中引入Element UI的主题样式和组件。 例如,可以使用以下命令安装Element UI: ```shell npm install element-ui --save ``` 然后在main.js文件中引入Element UI: ```javascript import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` 2. 创建登录页面:在项目的某个组件中,可以是单独的登录组件或者将登录作为页面的一部分,编写登录表单和相关样式。 例如,可以创建一个Login.vue文件,在其中定义登录表单: ```html <template> <div class="login-container"> <el-form :model="loginForm" ref="loginForm" class="login-form"> <el-form-item> <el-input placeholder="请输入用户名" v-model="loginForm.username"></el-input> </el-form-item> <el-form-item> <el-input type="password" placeholder="请输入密码" v-model="loginForm.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="login">登录</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data() { return { loginForm: { username: '', password: '' } } }, methods: { login() { // 处理登录逻辑 } } } </script> <style scoped> .login-container { display: flex; justify-content: center; align-items: center; height: 100vh; } .login-form { width: 300px; padding: 20px; } </style> ``` 3. 编写相关逻辑:在Login.vue组件中,根据业务需求,编写登录逻辑。 例如,可以在`login`方法中发送登录请求,处理登录逻辑: ```javascript methods: { login() { // 使用axios或其他方式发送登录请求 axios.post('/login', this.loginForm) .then(response => { // 登录成功,处理相关逻辑 }) .catch(error => { // 登录失败,处理错误信息 }); } } ``` 以上便是使用Vue2.0和Element UI实现登录样式的简单示例。在实际开发中,可以根据需求对登录页面和相关逻辑进行更加详尽的处理。 ### 回答3: Vue2.0 Element-UI登录样式可以通过使用Element-UI提供的组件和样式来创建。 首先,我们需要在项目中安装Element-UI并引入其样式。可以通过npm安装Element-UI,并在项目的main.js文件中引入Element-UI的样式文件。 在登录页面中,可以使用Element-UI提供的`el-form`组件来创建表单,并使用`el-input`组件来输入用户名和密码。 然后,可以使用`el-button`组件创建登录按钮。可以设置按钮的类型为`primary`来突出显示登录操作。 可以利用Element-UI提供的样式类来进行布局和调整样式。例如,可以使用`el-form`组件的`label-position`属性来设置标签的位置,使用`el-form`组件的`size`属性来设置表单元素的尺寸,并使用`el-button`组件的`class`属性来设置按钮的样式类。 此外,还可以自定义样式来适应项目的需求。可以通过在Vue组件中定义`style`部分来编写自定义的CSS样式代码,并将其应用到相应的元素上。 总之,Vue2.0 Element-UI登录样式的实现方式有很多,可以通过使用Element-UI提供的组件、样式和类,以及自定义的CSS样式来创建具有吸引力且符合项目需求的登录页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值