我使用vue-cli作为前端,lumen作为后端,我很好奇在vue中存储API根url和端点的最佳实践是什么?

现在我在src目录中有constants.js个文件,其中API根url和端点如下:

const BASE_URL = "http://localhost:8000"

export const AddLanguge = BASE_URL + "/api/languages"

例如,当我需要在组件中实现添加语言功能时,我会从常量中导入所需的API端点.就像这样:

import { AddLanguge } from '@/constants'

然后使用axios发出请求

this.$http.post(AddLanguge, params).then(response => {
   if (response.status == 200) {
       this.addLanguage(response.data.data)
   } else {
       this.setHttpResponseDialog(response)
   }
}).catch(er => {
       this.setHttpResponseDialog("Error")
})

我搜索了这个问题,但没有明确的答案,有人说:it's ok.

其他人说:很糟糕,你必须在dev.env.jsprod.env.js中存储这类数据,这里最重要的事实是,我不明白他们为什么这么说,为什么把这些数据保存在.env个文件中很重要?或者有没有其他更好的方法?

你们能提供一个正确的答案并给出很好的解释吗?或者如果没有正确的答案,这取决于具体情况,我该如何决定哪种方式适合我的情况?

推荐答案

建议使用.env文件,因为根据环境的不同,您可能有不同的端点,也就是说,您是使用"npm run serve"运行dev server,还是使用"npm run build"运行building for production.具有env config文件它们变成了环境变量,你不需要将它们硬编码到你的应用程序中,这只是最实际的事情.使用Vue CLI 3,您将

//.env.development 
VUE_APP_BASEURL = "http://localhost:8000"

在你的应用程序中,你可以使用.

process.env.VUE_APP_BASEURL

我所做的就是把基放在一个变量中,然后连接rest.

const BASE_URL = process.env.VUE_APP_BASEURL

this.$http.post(BASE_URL + '/api/languages/', params)

Vue.js相关问答推荐

如何在FormKit中验证文本输入框中不能输入数字

NUXT 3 在客户端获取数据

vuetify/mdi 不显示图标

我在表格中创建了一个包含信息的新行,但在 Cypress e2e 测试中我无法获得最后一行(新行)

如何通过 setup() 发出多个参数?

Vuetify grid layout - 如何填充网格中元素的高度

Vue CLI - 编译后将配置文件保留为外部

如何在 Vue.js 中获取完整的当前日期和时间,而无需编写大量 JavaScript 行

如何在 Vue.js 中使用 MaterializeCss?

全局方法和实例方法有什么区别?

Vuex - 如何跨不同选项卡持久存储更新?

W3C 验证和 Vue 的 HTML 绑定语法

如何将 Nuxt.js 更新到最新版本

单击复选框后,V-model 未更新

使用 VueJS 在 v-for 中转换

Vue.js 无法切换字体真棒图标

如何使用 TypeScript 在 Vue.js 中指定非react性实例属性?

基于媒体查询的vue绑定值

在 VueJS 中观察元素的高度

在 Vue 中使用事件修饰符 .prevent 提交表单而不进行重定向