vue项目-全家桶(vue+vue-router+vuex+axios)

axios: 相当于ajax,之前是用vue-resourse,不过现在这个模块不维护了,基本使用axios
vue-router: 是vue的路由
vuex: 是vue的状态管理,方便组件间通信

npm install vuex axios --save-dev

axios配置如下:

// 引入axios
import axios from 'axios'

// 创建axios实例
const httpService = axios.create({
    baseURL: "http://localhost:8081", // url前缀
    timeout: 3000 // 请求超时时间
});

// request拦截器
httpService.interceptors.request.use(
    config => {
        // 根据条件加入token-安全携带
        if (true) { // 需自定义
            // 让每个请求携带token
            config.headers['User-Token'] = '';
        }
        return config;
    }, 
    error => {
        // 请求错误处理
        Promise.reject(error);
    }
)

// respone拦截器
httpService.interceptors.response.use(
    response => {
        // 统一处理状态
        const res = response.data;
        if (res.statuscode != 1) { // 需自定义
            // 返回异常
            return Promise.reject({
                status: res.statuscode,
                message: res.message
            });
        } else {
            return response.data;
        }
    },
    // 处理处理
    error => {
         if (error && error.response) {
            switch (error.response.status) {
                case 400:
                    error.message = '错误请求';
                    break;
                case 401:
                    error.message = '未授权,请重新登录';
                    break;
                case 403:
                    error.message = '拒绝访问';
                    break;
                case 404:
                    error.message = '请求错误,未找到该资源';
                    break;
                case 405:
                    error.message = '请求方法未允许';
                    break;
                case 408:
                    error.message = '请求超时';
                    break;
                case 500:
                    error.message = '服务器端出错';
                    break;
                case 501:
                    error.message = '网络未实现';
                    break;
                case 502:
                    error.message = '网络错误';
                    break;
                case 503:
                    error.message = '服务不可用';
                    break;
                case 504:
                    error.message = '网络超时';
                    break;
                case 505:
                    error.message = 'http版本不支持该请求';
                    break;
                default:
                    error.message = `未知错误${error.response.status}`;
            }
        } else {
            error.message = "连接到服务器失败";
        }
        return Promise.reject(error);
    }
)

/*网络请求部分*/

/*
 *  get请求
 *  url:请求地址
 *  params:参数
 * */
export function get(url, params = {}) {
    return new Promise((resolve, reject) => {
        httpService({
            url: url,
            method: 'get',
            params: params
        }).then(response => {
            resolve(response);
        }).catch(error => {
            reject(error);
        });
    });
}

/*
 *  post请求
 *  url:请求地址
 *  params:参数
 * */
export function post(url, params = {}) {
    return new Promise((resolve, reject) => {
        httpService({
            url: url,
            method: 'post',
            data: params
        }).then(response => {
            resolve(response);
        }).catch(error => {
            reject(error);
        });
    });
}

/*
 *  文件上传
 *  url:请求地址
 *  params:参数
 * */
export function fileUpload(url, params = {}) {
    return new Promise((resolve, reject) => {
        httpService({
            url: url,
            method: 'post',
            data: params,
            headers: { 'Content-Type': 'multipart/form-data' }
        }).then(response => {
            resolve(response);
        }).catch(error => {
            reject(error);
        });
    });
}

export default {
    get,
    post,
    fileUpload
}

main.js配置:

import axios from './util/axios'

Vue.prototype.$ajax = axios
//this.$ajax.post('/login/login', {});

解决vue-cli测试端口随时变化的方式:

npm install portfinder@1.0.21//在当前机器上查找打开端口的简单工具

打包项目:

npm run build

nginx前端服务器:
修改服务器默认端口
将打包后的项目文件dist目录下的文件放入nginx/html更目录。

cd D:\nginx-1.17.3//进入nginx安装目录
start nginx//启动nginx服务器
tasklist /fi "imagename eq nginx.exe"//查看nginx任务进程

# 重启Nginx
nginx -s reload
# 强制停止nginx服务器,如果有未处理的数据,丢弃
nginx -s stop

# 优雅的停止nginx服务器,如果有未处理的数据,等待处理完成之后停止
nginx -s quit
阅读 1.4k

推荐阅读
前端分享
用户专栏

只做自己喜欢的事情

1 人关注
24 篇文章
专栏主页