博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VUE 项目:API配置、版本控制(V1.0方案)
阅读量:6786 次
发布时间:2019-06-26

本文共 1927 字,大约阅读时间需要 6 分钟。

Q 问题:

  • 项目的api的baseUrl 需要灵活配置,不能打包在代码中。
  • 项目需要写入版本号,用以保证用户的浏览器资源为最新。

自古评论出大佬,在下初级解决方案奉上。欢迎大佬评论指正更高的解决方案。

问题一(在下解决方案)

在项目public目录下新增文件,config.js,内容为:

// 此处设置是为了方便多环境部署,直接修改即可var baseUrl = (window.baseUrl = {  dev: 'https://www.baidu.com',  pro: 'https://www.baidu.com',  mock: 'https://www.baidu.com'})复制代码

在 axios 的配置文件中,

const getUrl = () => {  if (process.env.NODE_ENV !== 'production') {    return baseUrl.dev  } else {    // 有必要的话,继续写规则    return baseUrl.pro  }}export default () => {  // 公共地址  axios.defaults.baseURL = getUrl()}复制代码

问题二(在下解决方案)

在vue.config.js中添加内容

const path = require('path')const fs = require('fs')const CompressionPlugin = require('compression-webpack-plugin')const resolve = dir => {  return path.join(__dirname, dir)}// 写入版本号;(() => {  // 以时间戳作为版本号~~~主要是因为傻,想不到其它方式  let v = +new Date()  process.env.VUE_APP_VERSION = v  // 此处是写入.env文件中,参考链接( https://cli.vuejs.org/zh/guide/mode-and-env.html )  fs.writeFile(resolve('.env'), `VUE_APP_VERSION=${v}`, err => {    if (err) {      return console.error(err)    }    console.log(`版本号变量写入成功,本次为${v}`)  })  // 写入到public 的文件  fs.writeFile(resolve('public/v.json'), JSON.stringify({ version: v }), err => {    if (err) {      return console.error(err)    }    console.log(`版本号写入成功,本次为${v}`)  })})()复制代码

接下来是重点

api/api.js 中写入内容

// 版本号获取export const getVersion = () => {  return axios.request({ url: `${location.origin}/v.json`, method: 'get' })}复制代码

router/index.js中写入内容

router.beforeEach((to, from, next) => {  getVersion()    .then(res => {      if (process.env.VUE_APP_VERSION.toString() !== res.data.version.toString()) {        iView.QhMessage.info({          duration: 100,          closable: true,          content: '系统版本有更新,可按【CTRL + F5】获取最新资源!'        })      }    })    .catch(err => {      console.log(err)    })  iView.LoadingBar.start()  next()})复制代码

OK 到此搞定,效果图

自古评论出大佬,在下初级解决方案奉上。欢迎大佬评论指正更高的解决方案。

转载于:https://juejin.im/post/5ca2d47551882543d8590702

你可能感兴趣的文章
kafa
查看>>
资源 | Feature Tools:可自动构造机器学习特征的Python库
查看>>
linux Shell 中常用的条件判断
查看>>
angular 动态设置blob链接给 ng-href时遇到unsafe 解决方案
查看>>
Java与Highcharts实例(四) - Hello Highcharts (后台Java传递数
查看>>
连接数据库的操作 总结
查看>>
Android 小米手机开发APP图标更换后还显示原来的图标
查看>>
在代码中修改Shape的solid属性的color值
查看>>
MySQL字符集问题
查看>>
Java多线程总结
查看>>
iPad Mini外屏碎了 换屏幕教程
查看>>
LinkedBlockingQueue操作,线程安全问题,ConcurrentModificationException 异常分析与解决方案...
查看>>
redis3.2新功能--GEO地理位置命令介绍与实战开发
查看>>
java 通过ssh 执行命令
查看>>
算法导论——基数排序(基于计数排序)
查看>>
19.TCP的交互数据流
查看>>
字符串匹配的Boyer-Moore算法
查看>>
memcached数据库未授权访问漏洞解决
查看>>
centos 7 安装在vmware Workstation的网卡问题 RHEL7
查看>>
嵌入式开发平台-iTOP-4418开发板
查看>>