vue配置文件实现代理v2版本
栏目: JavaScript · 发布时间: 6年前
内容简介:接上篇,虽然可实现多版本代理,但是每增加一种模式就需要重下新修改vue.config.js以及.env.dev.local,感觉很不智能,扩展性挺差。主要实现思路: 模仿vue中.env.local文件,此文件被git忽略,且可根据当前环境变量加载不同的数据,由此在项目根目录下新建development文件夹,在development文件加下建立config文件夹,用户放置配置文件,config下目前暂有两个文件 config.development.local config.owndev.local在.g
vue实现不同服务器代理
接上篇,虽然可实现多版本代理,但是每增加一种模式就需要重下新修改vue.config.js以及.env.dev.local,感觉很不智能,扩展性挺差。
主要实现思路: 模仿vue中.env.local文件,此文件被git忽略,且可根据当前环境变量加载不同的数据,由此在项目根目录下新建development文件夹,在development文件加下建立config文件夹,用户放置配置文件,config下目前暂有两个文件 config.development.local config.owndev.local
在.gitignore中添加
development/config/config.local
development/config/config.*.local
忽略所有的配置local文件,然后通过node读取文件加载配置的json文件,并将代理规则通过代码完善,导出代理规则,最终输出的vue.config.js中实现代理,通过cross-env模块改变系统变量设置,最终实现不同环境下不同文件的加载
现新建项目,目录结构如下:
其中development为新添加目录,其中主要放置需要代理的文件
config下
.gitignore 添加对文件的忽略
development/config/config.local development/config/config.*.local
development/config 下的config.development.dev
{
"/api":"http://serverurl"
}
development/config 下的config.owndev.dev
{
"/api/login":"http://localhost:8080",
"/api/register":"http://localhost:8081"
}
proxy.js实现主要的代理逻辑,思路如下,根据cross-env设置的环境变量加载不同的json文件
cross-env 用法,在package.json 中devDependencies中添加 ,然后npm i --save-dev cross-env即可
"devDependencies": {
"cross-env": "^5.2.0"
}
用法 在启动vue服务前添加 cross-env BUILD_ENV=development 即可
如下
"script":{
"serve": "cross-env BUILD_ENV=development vue-cli-service serve",
"owndev": "cross-env BUILD_ENV=owndev vue-cli-service serve",
}
当执行npm run serve 时 process.env.BUILD_ENV 值为development,当执行 npm run owndev时,process.env.BUILD_ENV的值为 owndev
proxy.js实现的主逻辑如下:
var path = require('path'); //系统路径模块
var fs = require('fs'); //文件模块
const defaultProxy = {
"/api":"http://serverUrl"
};
//根据当前的运行环境判断走哪个配置
const DEVELOPMENT = "development"
let currentEnv = process.env.BUILD_ENV?process.env.BUILD_ENV:DEVELOPMENT
let configPath = `config/config.${currentEnv}.local`
let filePath = path.join(__dirname, configPath); //文件路径,__dirname为当前运行js文件的目录
let proxyContent = null;
//读取json文件,异步
/*fs.readFile(filePath, 'utf-8', function(err, data) {
if (!err) {
proxyContent = data;
}
});*/
//将json字符串转化为json对象
try{
proxyContent = JSON.parse(fs.readFileSync(filePath,'utf-8'))
}catch(e){
proxyContent = defaultProxy
}
if(proxyContent == null){
proxyContent = defaultProxy
}
let proxys = {}
//遍历所有的配置代理,对应不同的服务器
Object.getOwnPropertyNames(proxyContent).forEach(function (key) {
let targetPath = proxyContent[key]
let proxyItem = {};
proxyItem.target = targetPath;
proxyItem.ws = true;
proxyItem.changeOrigin = true;
proxyItem.pathRewrite = {}
proxyItem.pathRewrite[`^${key}`] = '/'
proxys[key] = proxyItem
});
module.exports = proxys
在vue.config.js中引用该文件
let proxy = require('./development/proxy/proxy')
let config = {
publicPath:"/" ,
devServer: {
port: 8080,
proxy:proxy
}
}
module.exports = config
以上,完成。使用时只需更改 development/config/config.owndev.local文件即可,即使增加了代理也可只增加配置文件完成代理。
以上所述就是小编给大家介绍的《vue配置文件实现代理v2版本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- git commit 规范校验配置和版本发布配置
- 详解Apache配置图片防盗链以及隐藏版本信息
- Python在windows平台的多版本配置
- MrDoc 0.5.1 版本发布,支持配置全站强制登录
- Swoole v4.5.5 版本发布,增加配置项检测
- Nginx版本问题导致ssl on配置不能用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
极简算法史:从数学到机器的故事
[法] 吕克•德•布拉班迪尔 / 任轶 / 人民邮电出版社 / 2019-1 / 39.00元
数学、逻辑学、计算机科学三大领域实属一家,彼此成就,彼此影响。从古希腊哲学到“无所不能”的计算机,数字、计算、推理这些貌似简单的概念在三千年里融汇、碰撞。如何将逻辑赋予数学意义?如何从简单运算走向复杂智慧?这背后充满了人类智慧的闪光:从柏拉图、莱布尼茨、罗素、香农到图灵都试图从数学公式中证明推理的合理性,缔造完美的思维体系。他们是凭天赋制胜,还是鲁莽地大胆一搏?本书描绘了一场人类探索数学、算法与逻......一起来看看 《极简算法史:从数学到机器的故事》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
HEX CMYK 转换工具
HEX CMYK 互转工具