时间:2021-05-26
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.localdevelopment/config/config.*.localdevelopment/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:DEVELOPMENTlet configPath = `config/config.${currentEnv}.local`let filePath = path.join(__dirname, configPath); //文件路径,__dirname为当前运行js文件的目录let proxyContent = null;//读取json文件,异步//将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版本的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
如今laravel来到5.4版本,更方便引入vue了,具体步骤如下:1.下载laravel5.4,这边是下载地址(里面的配置文件都写得差不多了)!2.打开pac
注意是V4版本的TP-LinkTL-WR885N路由器的相关设置方法哦!!!因为TP-LinkTL-WR885N路由器目前有V1、V2、V3、V4共4个版本;其
官网实例:https://cn.vuejs.org/v2/api/#Vue-directivehttps://cn.vuejs.org/v2/guide/cus
1.3.0版本包括了默认预设配置和用户自定义设置2.对比2.0来看3.0的目录结构更加精简了移除了配置文件目录(config和build文件夹)移除了stati
SpringCloud2020版本bootstrap配置文件(properties或者yml)无效如何解决?背景介绍微服务是基于SpringCloud框架搭建的