vue项目之配置本地,测试,生产环境,配置axios.defaults.baseURL,解决跨域问题

忧郁xiao流氓 2019-08-19 11:35:14
最近在做一个vue项目,想通过不同的命令调用不同环境的api,防止来回手动修改api出错。网上看了好多写的都不全,然后自己突发奇想自己写一篇文章。

一、先简单说一下项目搭建

1、安装vue脚手架

npm install vue-cli -g

2、在硬盘上找一个文件夹放工程用的,在终端中进入该目录

cd 目录路径

3、根据模板创建项目

vue init webpack 项目名字<项目名字不能用中文>

4、后面就是根据自己的喜好配置,最后一个是否保存自己的喜好设置,我一般不保存,每次根据情况自己去配置

5、安装依赖

cd 项目目录
npm install

二、安装完毕之后打开project.json文件,配置test(测试环境指令)

npm run dev 调用本地环境
npm run test 调用阿里测试环境api
npm run build 调用 生产环境api

这是三种不同环境的指令



三、在build文件夹下建立test.js、webpack.test.conf.js文件



将build.js的内容全部复制到test.js文件里,test.js完成

将webpack.prod.conf.js的内容复制到webpack.test.conf.js文件里,
然后修改webpack.test.conf.js文件;
将const env = require('../config/prod.env');
修改为const env = require('../config/test.env');
webpack.test.conf.js完成

四、在config文件下建立test.env.js文件



将prod.env.js内容全部复制到test.env.js文件里,
分别在dev.env.js,test.env.js,prod.env.js中定义变量API_ROOT,





五、在config文件夹下配置index.js

增加test配置项,把build配置项的内容全部复制过来即可



六、在main.js文件里配置baseURL



这样多配置一种环境,就能实现开发、测试、生产环境随便调用,再也不用收到去修改了
...全文
5939 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
忧郁xiao流氓 2020-07-03
  • 打赏
  • 举报
回复
报什么错?后台配置了没
淘人居士 2020-07-02
  • 打赏
  • 举报
回复
感觉把问题复杂化了,如果只是想要不同环境下使用不同的API地址以及其它变量,官方教程有说明怎么弄 步骤1:在项目根目录创建文件 .env --所有环境生效 .env.development --开发环境优先生效 .env.test --测试环境优先生效 步骤2: 这3个文件分都写入环境变量,例如API地址 .env --内容:VUE_APP_BASEAPI=api/ .env.development --内容:VUE_APP_BASEAPI=http://localhost:5500/api/ .env.test --内容:VUE_APP_BASEAPI=http://测试服务器:5500/api/ 步骤3:在需要用到的地方使用环境变量 例如给axios组件设置全局api地址 axios.defaults.baseURL = process.env.VUE_APP_BASEAPI; 官网教程 https://cli.vuejs.org/zh/guide/mode-and-env.html#%E6%A8%A1%E5%BC%8F
Anliny 2020-07-01
  • 打赏
  • 举报
回复
这样配置了 跨域通不过
忧郁xiao流氓 2020-02-27
  • 打赏
  • 举报
回复
引用 2 楼 等等_5836 的回复:
解决跨域问题有说明吗
什么说明
等等_5836 2020-02-13
  • 打赏
  • 举报
回复
解决跨域问题有说明吗
忧郁xiao流氓 2019-08-21
  • 打赏
  • 举报
回复
补充一下: 第三步、将build.js的内容全部复制到test.js文件里之后需要对里边的内容修改一下 修改前:const webpackConfig = require('./webpack.prod.conf') 修改后:const webpackConfig = require('./webpack.test.conf') 第五步、作用是打包一个区别于“dist”文件夹的另一个文件夹,如果没有需要的话可以省略
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Springboot(后端)+Vue(前端)实现的运输车辆管理系统源码+项目说明.zip # 1. backend 后端 配置好Springboot,运行主函数, 启动后端 # 2. frontend 前端 ## 2.1. Project setup ``` npm install ``` ### 2.1.1. Compiles and hot-reloads for development 配置vue, cd 进入 frontend, 运行, 启动前端(Vue) ``` npm run serve ``` ### 2.1.2. Compiles and minifies for production ``` npm run build ``` ### 2.1.3. Lints and fixes files ``` npm run lint ``` ### 2.1.4. Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). # 3. 分支 1. 添加新功能新建一个分支 2. 回到master, merge 新功能分支 3. 新功能分支 推送到远程仓库 `git push -u origin 分支名` # 4. 记录 ## 4.1. 结构 `backend` ``` └─backend ├─config ├─controller ├─Dao ├─entity └─service └─Impl ``` - config - CrossConfig.java: 用来解决跨域问题 - entity: 实体(pojo层)--对应一个数据库的表 - 用到注解: - `@Entity` - `@Tabel(name="表名")` - `@Colunm([name='列名',length=长度])` - Dao: 调用entity=>增删改查 - 用到注解: - @Repository - 需要继承 - `JapRepository<用到的Entity的类名,主键的类型>` - Service: 业务模块的逻辑应用设计 - 用到注解: `@Service` ## 4.2. 路由导航守卫 `frontend`-->`router.js` - 原来的结构 - ```js export default new Router(...) ``` - 修改添加守卫(检查浏览器是否保存了服务器返回来的token,没有说明没登陆-->发送去登录页面) - ```js const router = new Router({ routes: [ ... ] }) // 挂载路由导航守卫 router.beforeEach((to, before, next) => { //to 要访问 //from 从哪个路径来 // next 函数表示放行 // next() 放行 next('/login') 强制跳转 if (to.path == '/login') return next() //获取token const tokenStr = window.sessionStorage.getItem('token') if (!tokenStr) return next('/login') next() }) export default router ## 4.3. 使用axios发送get request `frontend` ```js //`main.js` import axios from 'axios'; axios.defaults.baseURL="http://localhost:8081/" Vue.prototype.$http=axios // .vue中调用 ... const _this = this;

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧