vue+element+axios+axios拦截+ajax请求抽离+less项目搭建

news/2024/7/10 2:10:20 标签: vue架构, element, vue, axios, webpack

样本在我的下载

//使用淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
  1. vue init webpack vue-pc // 创建项目
  2. cnpm i // 装包
  3. cnpm i element-ui -D // 安装element
  4. cnpm install babel-plugin-component -D //element按需引入
  5. src/main.js
import  './config/element';
  1. .babelrc
{
  "presets": [
    [
      "env",
      {
        "modules": false
      }
    ]
  ],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}
  1. src/config/element
import Vue from 'vue'
import { Button, Select } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Button)
Vue.use(Select)
  1. less引入
cnpm install less less-loader -S
  1. build/webpack/base.conf 配置less
{

test: /\.less$/,

loader: "style-loader!css-loader!less-loader",

}
  1. axios 安装拦截
    cnpm install axios

src/config/header

import axios from 'axios'

//添加请求拦截器
axios.interceptors.request.use(function (config) {
    // console.log(config);
    // 获取token
    let TOKEN = localStorage.token;
    // 设置token
    if (TOKEN) {
        config.headers['X-ODAPI-Authorization'] = TOKEN;
    }
    // 返回配置项
    return config;
}, function (error) {
    //请求错误时做些事
    console.log("请求失败");
    return Promise.reject(error);
});

//添加响应拦截器
axios.interceptors.response.use(function (response) {
    return response.data;
    /**
     * 下面是判断,暂时注释
     */
    // if (response['status'] == 200) {
    //     if (response['data']['code'] == 0) {
    //         return response['data'];
    //     } else {
    //         if (response['data'].hasOwnProperty('erron')) {
    //             console.log(response['data']['erron']);
    //         }
    //         return false;
    //     }
    // } else {
    //     console.log('网络错误!');
    // }

}, function (error) {
    //请求错误时做些事
    console.log(error);
    return Promise.reject(error);
})

src/main

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
//按需导入element
import './config/element';
//axios路由拦截
import './config/header'
//引入axios
import './newword/apiServer';
//导入全局变量
import './config/constant';
//引入公共css
import './css/base.css';
//px转rem
import './config/rem'
//引入vuex
import store from './store'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})

  1. 抽离ajax请求
    src/newword/apiServer
// 注册API
//将API注册到Vue的原型中
import Vue from 'vue'
import API from './api/index'

Vue.prototype.API = API

src/newword/api/index

import axios from 'axios'

export default {
    getserver(data) {
        // data是一个对象
        return axios.post("api/agricult***********Homer",data)
    }
}

使用

server() {
        this.API.getserver({
          key: this.zkey,
          code: this.zcode
        }).then((res) => {
          console.log(res);
        }, (err) => {})
      }
  1. 反向代理
proxyTable: {
      '/api': { //将http://192.168.1.51:8080/grain印射为/api
        target: 'http://192.168.1.51:8080/dididcarapi',//接口域名
        // target: 'http://www.91dadi.com/dididcarapi/',//接口域名
        changeOrigin: true,//是否跨域
        pathRewrite: {
          '^/api': ''
        }
      }
    },

http://www.niftyadmin.cn/n/1834387.html

相关文章

了解雪碧图

所谓雪碧图就是讲很多小图标放在一张图上。其是一种CSS图像合并技术&#xff0c;该方法是将小图标和背景图像合并到一张图片上&#xff0c;然后利用css的背景定位来显示需要显示的图片部分。 这样做的好处 将多张图片合并到一张图片中&#xff0c;可以减小图片的总大小将多张图…

vue-router 滚动行为

var routernew VueRouter({routes:[],scrollBehavior(to,from,savedPosition){//return 滚动的位置} })例子 scrollBehavior(to,from,savedPosition){return{x:number,y:number} }滚动到锚点 scrollBehavior (to, from, savedPosition) {if (to.hash) {return {selector: to.…

C#继承小结——面向对象编程的三大机制之一

继承反应了类和类之间的关系。 世界上很多事物都是有共性的&#xff0c;共性的那一部分我们就抽象为基类&#xff0c;用于派生其它类&#xff0c;这样提高了代码的复用性&#xff0c;使得代码的结构清晰易读&#xff0c;而且易于代码的扩展和维护。 C#的继承只能继承自一个基类…

css之昼夜交替

在看了B站up主阿阳热爱前端的一个HTMLCSS教程实例后&#xff0c;跟着做了一遍&#xff0c;具体的代码和效果如下&#xff1a; 效果&#xff1a; 昼夜交替 源码&#xff1a; 阿阳热爱前端 / alternately 对于此篇&#xff0c;我只是总结我学到或需要复习的一些知识点&#xff0c…

为什么有些人说 Windows 7 不如 Windows XP 好用?

Win7做了很多改进&#xff0c;在一些细节方面也有了提升。为什么还有这么多人认为WinXP更好用呢&#xff1f; XP&#xff1a; 处于16位PC和32位PC交接时代 并成功交接 Windows 7 &#xff1a; 处于32位PC和64位PC交接时代 也即将成功交接 &#xff08;本来应该是他的前任V…

[vue]——question

v-show和v-if v-show和v-if都是用来控制组件显隐的指令&#xff0c;区别在于两者的实现原理。 v-show是通过css的display属性来控制显示与隐藏v-if是将实现组件的销毁与渲染&#xff0c;并不是简单地显示与隐藏 因此关于两者的使用时要判断该组件是否会频繁切换&#xff0c;…

部署WSP出现错误—已在此服务器场中安装ID为XXXXX的功能

以前开发了一个WebPart&#xff0c;部署在了我个人服务器的某一个网站集上面&#xff0c;今天另外一个项目也需要用到该WebPart&#xff0c;但是要做一点点的更改&#xff0c;于是就用VS打开了以前的项目文件&#xff0c;三两下改完了&#xff0c;然后习惯性的直接去部署了&…

vue使用postcss-pxtorem px转rem

装包 cnpm install postcss-pxtorem -D修改根目录 .postcssrc.js 文件 // https://github.com/michael-ciniawsky/postcss-load-configmodule.exports {"plugins": {"postcss-import": {},"postcss-url": {},// to edit target browsers: use …