• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

vue 搞代码 4年前 (2022-01-08) 39次浏览 已收录 0个评论

这篇文章主要介绍了vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧

需求说明:

在开发 vue 项目的过程中遇到的需求是要把 api 接口前缀暴露在命令行,通过 npm run build apiUrl 即可修改接口入口,用于从 docker 部署到不同的测试服务器上,其次是路由模式的问题,部署到测试服务器上的需要是 history 模式,但是产品是用 electron + vue 开发的桌面应用,electron 硬性要求 vue-router 的路由模式是 hash 模式,所以命令行需新增一个配置项 mode ,mode 可选值有 history 、hash

最终结果:

npm run build ” hash  —>  使用源码中写死的 api 入口 ,vue-router 模式是 hash 模式

npm run build https://192.168.166.101:8444 history  —>  使用 https://192.168.166.101:8444 作为 api 入口,vue-router 模式是 history 模式

实现:

1.新建 base/config.js 用于存放从 webpack.prod.conf.js 里写入的数据

2.新建 base/index.js 用于将从 base/config.js 里导出的 config 挂载在 Vue 原型的 $config 对象上

3.新建 build/apiConfig.js 用于封装 fs-extra 对文件的读写

4.在 webpack.prod.conf.js 将命令行中敲入的命令写入 base/config.js 里

5.在 main.js 中将 base/index.js 抛出的 install 挂载到 Vue 上

6.在 Login.vue 和 router/index.js 里引入 this.$config.host 以及 base/config.js 即可

关键代码:

2.新建 base/index.js 用于将从 base/config.js 里导出的 config 挂载在 Vue 原型的 $config 对象上

 // 将 config 封装成插件 // example this.$config // 导入所有接口 import config from './config'; const install = Vue => { if(install.installed) return; install.installed = true; Object.defineProperties(Vue.prototype, { // 此处挂载在 Vue 原型的 $config 对象上 $config:{ get(){ return config; } } }) } export default install; 

3.新建 build/apiConfig.js 用于封装 fs-extra 对文件的读写

 const fs = require("fs-extra"); const path = require("path"); var _path = path.join(__dirname, "../src/base/host.js"); if (!fs.pathExistsSync(_path)) { // 如果不存在路径 fs.mkdirpSync(_path); // 就创建 } module.exports = { read: function() { let filesData = fs.readFileSync(_path, "utf-8", function(e, data) { if (e) throw e; return data; }); return filesData; }, write: function(writeStr) { fs.open(_path, "w", function(e, fd) { if (e) throw e; fs.write(fd, writeStr, <div style="color:transparent">本文来源gaodai.ma#com搞#代!码(网</div>0, "utf8", function(e) { if (e) throw e; fs.closeSync(fd); }); }); } }; 

4.在 webpack.prod.conf.js 将命令行中敲入的命令写入 base/config.js 里  

 const apiConfig = require('./apiConfig'); apiConfig.read(); apiConfig.write( `export const host = '${process.argv[2]}'; export const mode = '${process.argv[3]}'; // 默认全部倒出 // 根绝需要进行 export default { host, mode }` ); 

5.在 main.js 中将 base/index.js 抛出的 install 挂载到 Vue 上

 import host from './base/index'; Vue.use(host); 

6.在 Login.vue 里引入 this.$config.host

 this.$store.set("presetPort", this.$config.host ? this.$config.host.split(":")[2] : "443"); // 设置预置端口 this.$store.set("presetHost", this.$config.host ? this.$config.host.split(":")[0] : "https"); // 设置预置协议 this.$store.set("presetIP", this.$config.host ? this.$config.host.split(":")[1].split("/")[2] : "192.168.166.109"); // 设置预置IP 

6.在 router/index.js 里引入 base/config.js

 import { mode } from '@/base/config'; let router = null; let routes = [ { path: 'xxx', name: 'xxx', component: xxx }...]; mode === 'history' ? routes.push({path:"*",component:xxx}) : ""; router = new Router({ mode: mode, routes:routes }) export default router; 

总结

以上就是vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址