项目搭建时间:2020-06-29

本章节:讲述基于vue/cli,

项目的基础搭建。

本主题讲述了:

1、跨域配置

2、axios请求封装

3、eslint配置

4、环境dev,test,pro(开发,测试,线上),
run自动调用对应的接口(proxy多代理配置)

vue+element-ui JYAdmin
后台管理系统模板-集成方案
从零到一的手写搭建全过程。

该项目不仅是一个持续完善、
高效简洁的后台管理系统模板,
还是一套企业级后台系统开发
集成方案,致力于打造一个

与时俱进、高效易懂、高复用、
易维护扩展的应用方案。


  1. 1、安装axios
  1. cnpm i axios --save
  1. 2axios封装,调用以及api资源管理
  1. @/serve/axiosResquest.js(axios封装)
  1. import axios from 'axios';
  2.  
  3. axios.interceptors.response.use(
  4.  
  5. response => {
  6.  
  7. return response
  8.  
  9. },
  10.  
  11. error => {
  12.  
  13. if (error && error.response) {
  14.  
  15. const ERR_CODE_LIST = { //常见错误码列表
  16.  
  17. [400]: "请求错误",
  18.  
  19. [401]: "登录失效或在其他地方已登录",
  20.  
  21. [403]: "拒绝访问",
  22.  
  23. [404]: "请求地址出错",
  24.  
  25. [408]: "请求超时",
  26.  
  27. [500]: "服务器内部错误",
  28.  
  29. [501]: "服务未实现",
  30.  
  31. [502]: "网关错误",
  32.  
  33. [503]: "服务不可用",
  34.  
  35. [504]: "网关超时",
  36.  
  37. [505]: "HTTP版本不受支持"
  38.  
  39. }
  40.  
  41. const errMsg = ERR_CODE_LIST[error.response.status]
  42.  
  43. alert("[" + error.response.status + "]" + errMsg || '服务器异常')
  44.  
  45. return Promise.reject(false)
  46.  
  47. }
  48.  
  49. }
  50.  
  51. )
  52.  
  53. let axiosResquest = (url, config) => {
  54.  
  55. let {
  56.  
  57. data = {},
  58.  
  59. isAlert = false,
  60.  
  61. contentType = 'application/json',
  62.  
  63. method = 'POST'
  64.  
  65. } = { ...config }
  66.  
  67. return new Promise((resolve) => {
  68.  
  69. axios({
  70.  
  71. url: url,
  72.  
  73. method:method,
  74.  
  75. data: data,
  76.  
  77. header: {
  78.  
  79. 'content-type': contentType,
  80.  
  81. 'Cookie': '' // 全局变量中获取 cookie
  82.  
  83. },
  84.  
  85. transformRequest(data) {
  86.  
  87. if (contentType == 'application/x-www-form-urlencoded; charset=UTF-8') {
  88.  
  89. let ret = ''
  90.  
  91. for (let it in data) {
  92.  
  93. ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
  94.  
  95. }
  96.  
  97. return ret
  98.  
  99. } else {
  100.  
  101. return data
  102.  
  103. }
  104.  
  105. }
  106.  
  107. }).then((res) => {
  108.  
  109. if (isAlert) {
  110.  
  111. }
  112.  
  113. resolve(res.data);
  114.  
  115. }).catch(function () {
  116.  
  117. resolve(false);
  118.  
  119. });
  120.  
  121. })
  122.  
  123. }
  124.  
  125. export default axiosResquest;

  

  1. @/api/api.jsapi资源模块管理)
  1. import axiosResquest from '@/serve/axiosResquest.js';
  2.  
  3. let host = ""
  4.  
  5. if(process.env.VUE_APP_CURENV == 'development'){
  6.  
  7. host = '/api'
  8.  
  9. }else if(process.env.VUE_APP_CURENV == 'test'){
  10.  
  11. host = '/test'
  12.  
  13. }else if(process.env.VUE_APP_CURENV == 'production'){
  14.  
  15. host = '/pro'
  16.  
  17. }
  18.  
  19. export function axiosSuccessApi(data) {
  20.  
  21. return axiosResquest(host+'/index-1.php?m=home&c=WebZuDetails&a=Details', data || {})
  22.  
  23. }
  24.  
  25. export function axiosResquestEeorApi(data) {
  26.  
  27. return axiosResquest(host+'/index-1.php?m=home&c=WebZuDetails', data || {})
  28.  
  29. }
  30.  
  31. export function axiosSuccessApiAwait(data) {
  32.  
  33. return axiosResquest(host+'/index-1.php?m=home&c=WebZuDetails&a=Details', data || {})
  34.  
  35. }

  

  1. @/pages/jsDemo/jsDemo.js(组件调用)
  1. import { axiosSuccessApi } from '@/api/api.js'
  2.  
  3. const config = {
  4.  
  5. data: {
  6.  
  7. id: '102'
  8.  
  9. },
  10.  
  11. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  12.  
  13. isAlert: true,
  14.  
  15. }
  16.  
  17. axiosSuccessApi(config).then(res => {
  18.  
  19. if (res) {
  20.  
  21. if (res.status) {
  22.  
  23. console.log(res)
  24.  
  25. config.data.id = res.status
  26.  
  27. axiosSuccessApi(config).then(res => {
  28.  
  29. if (res) {
  30.  
  31. console.log(res)
  32.  
  33. }
  34.  
  35. })
  36.  
  37. }
  38.  
  39. }
  40.  
  41. })

 

  1. 3vue.config.js 代理配置
  1. devServer: {
  2.  
  3. //跨域
  4.  
  5. port: 9528, // 端口号
  6.  
  7. open: true, //配置自动启动浏览器
  8.  
  9. proxy: {
  10.  
  11. // 配置跨域处理 可以设置多个
  12.  
  13. '^/api': {
  14.  
  15. target: 'https://www.weixinyue.cn',
  16.  
  17. changeOrigin: true,
  18.  
  19. pathRewrite: {
  20.  
  21. '^/api': '' // 规定请求地址以什么作为开头
  22.  
  23. },
  24.  
  25. logLevel:'debug'
  26.  
  27. },
  28.  
  29. '^/test': {
  30.  
  31. target: 'https://www.weixinyue.cn',
  32.  
  33. changeOrigin: true,
  34.  
  35. pathRewrite: {
  36.  
  37. '^/test': '' // 规定请求地址以什么作为开头
  38.  
  39. },
  40.  
  41. logLevel:'debug'
  42.  
  43. },
  44.  
  45. '^/pro': {
  46.  
  47. target: 'https://www.weixinyue.cn',
  48.  
  49. changeOrigin: true,
  50.  
  51. pathRewrite: {
  52.  
  53. '^/pro': '' // 规定请求地址以什么作为开头
  54.  
  55. },
  56.  
  57. logLevel:'debug'
  58.  
  59. }
  60.  
  61. }
  62.  
  63. }

  

  1. 3package.json 配置
  1. "scripts": {
  2.  
  3. "dev": "npm run serve",
  4.  
  5. "serve": "vue-cli-service serve --mode development",
  6.  
  7. "test": "vue-cli-service serve --mode test",
  8.  
  9. "pro": "vue-cli-service serve --mode production",
  10.  
  11. "build": "vue-cli-service build",
  12.  
  13. "lint": "vue-cli-service lint"
  14.  
  15. },

  

  1. 4、.eslintrc.js 配置
  1. module.exports = {
  2.  
  3. root: true,
  4.  
  5. env: {
  6.  
  7. node: true
  8.  
  9. },
  10.  
  11. extends: [
  12.  
  13. 'plugin:vue/essential'
  14.  
  15. // '@vue/standard'
  16.  
  17. ],
  18.  
  19. parserOptions: {
  20.  
  21. parser: 'babel-eslint'
  22.  
  23. },
  24.  
  25. rules: {
  26.  
  27. 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  28.  
  29. 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  30.  
  31. 'space-before-function-paren': 0
  32.  
  33. // 'eqeqeq': false,
  34.  
  35. // 'vue/valid-template-root': false,
  36.  
  37. // 'spaced-comment': false,
  38.  
  39. // 'quotes': false,
  40.  
  41. // 'eol-last': false,
  42.  
  43. // 'key-spacing': false,
  44.  
  45. // 'vue/valid-v-for':false,
  46.  
  47. // 'vue/no-unused-vars':false,
  48.  
  49. // 'vue/no-parsing-error':false
  50.  
  51. }
  52.  
  53. }

  

本章节总结:讲述基于vue/cli,

项目的基础搭建。

1、跨域配置

2、axios请求封装

3、eslint配置

4、环境dev,test,pro
(开发,测试,线上),
run自动调用对应的接口
(proxy多代理配置)

下章节待续,欢迎持续关注:

如需下载源代码请联系博主

(微信号:lovehua_5360)

你也可以选择留言反馈

  1. 下章节请关注个人微信公众号【微信悦】,欢迎持续关注:
  2.  
  3. 备注:(使用微信客户端打开)

个人微信公众号:【微信悦】

微信公众号原文链接:http://mp.weixin.qq.com/mp/homepage?__biz=MzIyOTg4MzQyNw==&hid=15&sn=4bc799ac6079fd28d20365f92eb3cb91&scene=18#wechat_redirect

 

  1.  

vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇2】的更多相关文章

  1. Vue + Element UI 实现权限管理系统

    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境 https://www.cnblogs.com/xifengxiaoma/p/9533018.html

  2. Vue + Element UI 实现权限管理系统(优化登录流程)

    完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...

  3. Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程

    完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...

  4. Vue + Element UI 实现权限管理系统 前端篇(十一):第三方图标库

    使用第三方图标库 用过Elment的同鞋都知道,Element UI提供的字体图符少之又少,实在是不够用啊,幸好现在有不少丰富的第三方图标库可用,引入也不会很麻烦. Font Awesome Font ...

  5. Vue + Element UI 实现权限管理系统(第三方图标库)

    使用第三方图标库 用过Elment的同鞋都知道,Element UI提供的字体图符少之又少,实在是不够用啊,幸好现在有不少丰富的第三方图标库可用,引入也不会很麻烦. Font Awesome Font ...

  6. vue+element 构建的后台管理系统项目(1)新建项目

    1.运行 vue init webpack demo   这里的demo是你项目的名字 2.npm run dev 查看项目启动效果 3.安装Element cd 项目 cmd  运行 npm i e ...

  7. Vue + Element UI 实现权限管理系统 前端篇(二):Vue + Element 案例

    导入项目 打开 Visual Studio Code,File --> add Folder to Workspace,导入我们的项目. 安装 Element 安装依赖 Element 是国内饿 ...

  8. Vue + Element UI 实现权限管理系统 前端篇(十三):页面权限控制

    权限控制方案 既然是后台权限管理系统,当然少不了权限控制啦,至于权限控制,前端方面当然就是对页面资源的访问和操作控制啦. 前端资源权限主要又分为两个部分,即导航菜单的查看权限和页面增删改操作按钮的操作 ...

  9. Vue + Element UI 实现权限管理系统(搭建开发环境)

    技术基础 开发之前,请先熟悉下面的4个文档 vue.js2.0中文, 优秀的JS框架 vue-router, vue.js 配套路由 vuex,vue.js 应用状态管理库 Element,饿了么提供 ...

随机推荐

  1. RabbitMQ系列之【设置RabbitMQ远程ip登录】

    由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq. ...

  2. 【Spring注解驱动开发】面试官:如何将Service注入到Servlet中?朋友又栽了!!

    写在前面 最近,一位读者出去面试前准备了很久,信心满满的去面试.没想到面试官的一个问题把他难住了.面试官的问题是这样的:如何使用Spring将Service注入到Servlet中呢?这位读者平时也是很 ...

  3. controlfile的情景恢复

    控制文件测试 百度百科:控制文件(Control File)是Oracle的物理文件之一,它记录了数据库的名字.数据文件的位置等信息.控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机.如果没有数 ...

  4. Python format格式化函数

    参考资料:https://www.runoob.com/python/att-string-format.html 在学习Python的时候碰到了一个很有趣的格式化输入的技巧,下面记录在此. Pyth ...

  5. 使用python,pytorch求海森Hessian矩阵

    考虑一个函数$y=f(\textbf{x}) (R^n\rightarrow R)$,y的Hessian矩阵定义如下: 考虑一个函数:$$f(x)=b^Tx+\frac{1}{2}x^{T}Ax\\其 ...

  6. 关于HTTP 请求方式: GET和POST的比较的本质

    什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...

  7. Spark学习笔记(三)-Spark Streaming

    Spark Streaming支持实时数据流的可扩展(scalable).高吞吐(high-throughput).容错(fault-tolerant)的流处理(stream processing). ...

  8. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列ROM中的FlexSPI驱动API实现IAP. 痞子衡的技术交流群里经常有群友提问: i.MXRT中的FlexSPI驱动 ...

  9. ajax前后端交互原理(7)

    7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head&g ...

  10. js语法基础入门(2)

    2.变量 2.1.变量的声明 声明变量的时候没有赋值,默认输出undefined //通过var 声明一个变量 var user: //默认输出undefined 可以同时声明多个变量 var use ...