feat(config): 支持配置 API 基础路径和开发环境标识

- 在配置存储中新增 dev 和 apiBaseUrl 字段
- 设置默认配置对象,包含基础 URL 构造逻辑
- 更新请求工具以使用动态配置的 baseURL
- 调整应用初始化顺序确保配置先行加载
- 移除指令中不必要的调试日志输出
This commit is contained in:
zhaoweijie
2025-12-21 20:26:21 +08:00
parent 7da5e82d40
commit bcc0c53ba1
4 changed files with 16 additions and 6 deletions

View File

@@ -35,7 +35,6 @@ function checkAndRemoveElement(el: HTMLElement, binding: DirectiveBinding) {
const shouldEnable = binding.value !== false
// 如果不是开发模式或者明确禁用,移除该元素
if (!isDev && shouldEnable) {
console.log(1111)
if (el.parentNode) {
el.parentNode.removeChild(el)
}

View File

@@ -11,12 +11,12 @@ import { setupStore, useConfigStore } from '@/stores'
import { setupDirective } from '@/ directive'
async function init() {
const configStore = useConfigStore()
await configStore.initConfig()
const app = createApp(App)
setupStore(app)
setupDirective(app)
initService()
const configStore = useConfigStore()
await configStore.initConfig()
document.title = configStore.config.centerTitle
app.use(router)
app.mount('#app')

View File

@@ -11,16 +11,25 @@ export interface Config {
agentRepository: {
storageVersionIdentifier: string
}
// 是否是开发环境
dev?: boolean
// api base url
apiBaseUrl?: string
}
const defaultConfig: Config = {
apiBaseUrl: `${import.meta.env.BASE_URL || '/'}api`
} as Config
export const useConfigStore = defineStore('config', () => {
const config = ref<Config>({} as Config)
// 异步调用readConfig
async function initConfig() {
config.value = await readConfig<Config>('config.json')
const data = await readConfig<Config>('config.json')
config.value = {
...defaultConfig,
...data
}
}

View File

@@ -10,6 +10,7 @@ import qs from 'qs'
import type { Ref } from 'vue'
import { ElNotification } from 'element-plus'
import { ref } from 'vue'
import { useConfigStoreHook } from '@/stores'
// 创建 axios 实例
let service: AxiosInstance
@@ -20,8 +21,9 @@ export interface AxiosResponseData {
}
export function initService() {
const configStore = useConfigStoreHook()
service = axios.create({
baseURL: '/api',
baseURL: configStore.config.apiBaseUrl,
headers: { 'Content-Type': 'application/json;charset=utf-8' },
paramsSerializer: (params) => {
return qs.stringify(params)