Compare commits
No commits in common. "demo-1.0" and "master" have entirely different histories.
14
.env
14
.env
|
|
@ -1,14 +0,0 @@
|
|||
# ========================================
|
||||
# 公共默认配置
|
||||
# ========================================
|
||||
# 此文件中的配置会作为所有环境的默认值
|
||||
# 被特定环境配置文件覆盖
|
||||
|
||||
# 应用名称
|
||||
VITE_APP_NAME=入舍
|
||||
|
||||
# 应用标题(浏览器标签页显示)
|
||||
VITE_APP_TITLE=入舍Demo-1.0
|
||||
|
||||
# 应用版本
|
||||
VITE_APP_VERSION=1.0.0
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# ========================================
|
||||
# 开发环境配置
|
||||
# ========================================
|
||||
# 执行 npm run dev 时加载此文件
|
||||
|
||||
# 应用基础路径 - 开发环境
|
||||
VITE_BASE_PATH=/demo/rs-demo/
|
||||
|
||||
# 应用标题 - 开发环境
|
||||
VITE_APP_TITLE=入舍Demo-1.0
|
||||
|
||||
# API 基础地址 - 开发环境
|
||||
VITE_API_BASE_URL=/demo/rs-demo/api
|
||||
|
||||
# 是否启用调试模式
|
||||
VITE_DEBUG=true
|
||||
|
||||
# 是否启用 Mock 数据
|
||||
VITE_ENABLE_MOCK=true
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# ========================================
|
||||
# 生产环境配置
|
||||
# ========================================
|
||||
# 执行 npm run build 时加载此文件
|
||||
|
||||
# 应用基础路径 - 生产环境
|
||||
# 部署到子目录时修改此值,如: /app/ 或 /demo/
|
||||
# 部署到根目录时设置为: /
|
||||
VITE_BASE_PATH=/demo/rs-demo/
|
||||
|
||||
# 应用标题 - 生产环境
|
||||
VITE_APP_TITLE=入舍Demo-1.0
|
||||
|
||||
# API 基础地址 - 生产环境
|
||||
# 生产环境使用相对路径或实际 API 地址
|
||||
VITE_API_BASE_URL=/demo/rs-demo/api
|
||||
|
||||
# 是否启用调试模式
|
||||
VITE_DEBUG=false
|
||||
|
||||
# 是否启用 Mock 数据
|
||||
VITE_ENABLE_MOCK=true
|
||||
|
|
@ -9,7 +9,6 @@ coverage
|
|||
# Production
|
||||
dist
|
||||
build
|
||||
dist.zip
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
|
|
@ -20,7 +19,8 @@ npm-debug.log*
|
|||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Local env files (包含敏感信息,不提交)
|
||||
# Local env files
|
||||
.env
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
|
|
|
|||
104
README.md
104
README.md
|
|
@ -152,110 +152,6 @@ npm run preview
|
|||
|
||||
---
|
||||
|
||||
## ⚙️ 环境变量配置
|
||||
|
||||
项目使用 Vite 内置的环境变量系统,支持多环境配置。所有环境变量均以 `VITE_` 前缀开头,可在代码中通过 `import.meta.env` 访问。
|
||||
|
||||
### 配置文件说明
|
||||
|
||||
| 文件 | 说明 | 加载时机 |
|
||||
|------|------|----------|
|
||||
| `.env` | 公共默认配置 | 所有环境 |
|
||||
| `.env.development` | 开发环境配置 | `npm run dev` |
|
||||
| `.env.production` | 生产环境配置 | `npm run build` |
|
||||
| `.env.local` | 本地覆盖配置(不提交Git) | 所有环境 |
|
||||
|
||||
### 配置项详解
|
||||
|
||||
#### 基础配置
|
||||
|
||||
| 变量名 | 说明 | 默认值 | 示例 |
|
||||
|--------|------|--------|------|
|
||||
| `VITE_APP_NAME` | 应用名称 | `入舍智能家装` | `入舍智能家装` |
|
||||
| `VITE_APP_TITLE` | 浏览器标签页标题 | `入舍 - 智能家装` | `入舍Demo-1.0` |
|
||||
| `VITE_APP_VERSION` | 应用版本号 | `1.0.0` | `1.0.0` |
|
||||
|
||||
#### 路径配置
|
||||
|
||||
| 变量名 | 说明 | 默认值 | 示例 |
|
||||
|--------|------|--------|------|
|
||||
| `VITE_BASE_PATH` | 应用部署基础路径 | `/` | `/demo/rs-demo/` |
|
||||
| `VITE_API_BASE_URL` | API 接口基础地址 | `/api` | `/demo/rs-demo/api` |
|
||||
|
||||
#### 调试配置
|
||||
|
||||
| 变量名 | 说明 | 默认值 | 可选值 |
|
||||
|--------|------|--------|--------|
|
||||
| `VITE_DEBUG` | 是否启用调试模式 | `false` | `true` / `false` |
|
||||
| `VITE_ENABLE_MOCK` | 是否启用 Mock 数据 | `false` | `true` / `false` |
|
||||
|
||||
### 使用示例
|
||||
|
||||
#### 修改应用标题
|
||||
|
||||
在 `.env.development` 或 `.env.production` 中设置:
|
||||
|
||||
```env
|
||||
# 开发环境标题
|
||||
VITE_APP_TITLE=入舍Demo-1.0
|
||||
|
||||
# 生产环境标题
|
||||
VITE_APP_TITLE=入舍 - 智能家装
|
||||
```
|
||||
|
||||
#### 配置部署路径
|
||||
|
||||
当应用部署到子目录时,需要配置基础路径:
|
||||
|
||||
```env
|
||||
# 部署到子目录 /demo/rs-demo/
|
||||
VITE_BASE_PATH=/demo/rs-demo/
|
||||
VITE_API_BASE_URL=/demo/rs-demo/api
|
||||
|
||||
# 部署到根目录
|
||||
VITE_BASE_PATH=/
|
||||
VITE_API_BASE_URL=/api
|
||||
```
|
||||
|
||||
#### 在代码中使用
|
||||
|
||||
```typescript
|
||||
import { APP_TITLE, APP_CONFIG } from '@/config'
|
||||
|
||||
// 获取应用标题
|
||||
console.log(APP_TITLE) // 输出: 入舍Demo-1.0
|
||||
|
||||
// 获取完整配置
|
||||
console.log(APP_CONFIG.base.title)
|
||||
console.log(APP_CONFIG.api.baseURL)
|
||||
```
|
||||
|
||||
### 配置优先级
|
||||
|
||||
环境变量按以下优先级加载(从高到低):
|
||||
|
||||
1. `.env.[mode].local` - 本地环境特定配置(不提交Git)
|
||||
2. `.env.[mode]` - 环境特定配置
|
||||
3. `.env.local` - 本地通用配置(不提交Git)
|
||||
4. `.env` - 公共默认配置
|
||||
|
||||
### Fallback 机制
|
||||
|
||||
所有配置项均内置默认值,当环境变量未设置时自动使用:
|
||||
|
||||
```typescript
|
||||
// src/config/index.ts
|
||||
export const APP_CONFIG = {
|
||||
base: {
|
||||
title: import.meta.env.VITE_APP_TITLE || '入舍 - 智能家装',
|
||||
// ...
|
||||
},
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 功能演示
|
||||
|
||||
### 首页模块
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<meta name="theme-color" content="#f97316" />
|
||||
<title>入舍 - 智能家装</title>
|
||||
<meta name="app-title" content="入舍 - 智能家装" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
/**
|
||||
* 应用配置文件
|
||||
*
|
||||
* 集中管理应用的全局配置参数
|
||||
* 环境变量按以下优先级加载(从高到低):
|
||||
* - .env.[mode].local (本地环境特定配置,不提交到 git)
|
||||
* - .env.[mode] (环境特定配置)
|
||||
* - .env.local (本地通用配置,不提交到 git)
|
||||
* - .env (公共默认配置)
|
||||
*
|
||||
* @example
|
||||
* // 获取基础路径
|
||||
* import { BASE_PATH, APP_CONFIG } from '@/config'
|
||||
* console.log(BASE_PATH) // '/demo/rs-demo/' (开发) 或 '/' (生产)
|
||||
*/
|
||||
|
||||
export const APP_CONFIG = {
|
||||
base: {
|
||||
path: import.meta.env.VITE_BASE_PATH || '/',
|
||||
name: import.meta.env.VITE_APP_NAME || '入舍智能家装',
|
||||
title: import.meta.env.VITE_APP_TITLE || '入舍 - 智能家装',
|
||||
version: import.meta.env.VITE_APP_VERSION || '1.0.0',
|
||||
},
|
||||
|
||||
router: {
|
||||
basename: (import.meta.env.VITE_BASE_PATH || '/').replace(/\/$/, ''),
|
||||
},
|
||||
|
||||
api: {
|
||||
baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
|
||||
},
|
||||
|
||||
debug: {
|
||||
enabled: import.meta.env.VITE_DEBUG === 'true',
|
||||
enableMock: import.meta.env.VITE_ENABLE_MOCK === 'true',
|
||||
},
|
||||
|
||||
env: {
|
||||
isDev: import.meta.env.DEV,
|
||||
isProd: import.meta.env.PROD,
|
||||
mode: import.meta.env.MODE,
|
||||
},
|
||||
} as const
|
||||
|
||||
export const BASE_PATH = APP_CONFIG.base.path
|
||||
export const ROUTER_BASENAME = APP_CONFIG.router.basename
|
||||
export const APP_NAME = APP_CONFIG.base.name
|
||||
export const APP_TITLE = APP_CONFIG.base.title
|
||||
export const APP_VERSION = APP_CONFIG.base.version
|
||||
export const API_BASE_URL = APP_CONFIG.api.baseURL
|
||||
export const IS_DEBUG = APP_CONFIG.debug.enabled
|
||||
export const ENABLE_MOCK = APP_CONFIG.debug.enableMock
|
||||
|
||||
export type AppConfig = typeof APP_CONFIG
|
||||
|
|
@ -3,14 +3,11 @@ import ReactDOM from 'react-dom/client'
|
|||
import { BrowserRouter } from 'react-router-dom'
|
||||
import App from './App'
|
||||
import ThemeProvider from './components/ThemeProvider'
|
||||
import { ROUTER_BASENAME, APP_TITLE } from './config'
|
||||
import './index.css'
|
||||
|
||||
document.title = APP_TITLE
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||
<React.StrictMode>
|
||||
<BrowserRouter basename={ROUTER_BASENAME}>
|
||||
<BrowserRouter>
|
||||
<ThemeProvider>
|
||||
<App />
|
||||
</ThemeProvider>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useNavigate } from 'react-router-dom'
|
||||
import { motion } from 'framer-motion'
|
||||
import { ChevronLeft, Star, MapPin, Bus } from 'lucide-react'
|
||||
import { ChevronLeft, Star, MapPin, Clock, Bus } from 'lucide-react'
|
||||
import { factoryStores } from '@/mock/groupData'
|
||||
|
||||
export default function GroupStorePage() {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { useState } from 'react'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { motion } from 'framer-motion'
|
||||
import { ChevronLeft, Check } from 'lucide-react'
|
||||
import { ChevronLeft, ChevronRight, Check } from 'lucide-react'
|
||||
|
||||
const timeSlots = [
|
||||
{ id: 1, time: '09:00-11:00', available: true },
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
/// <reference types="vite/client" />
|
||||
|
||||
interface ImportMetaEnv {
|
||||
readonly VITE_BASE_PATH: string
|
||||
readonly VITE_APP_NAME: string
|
||||
readonly VITE_APP_TITLE: string
|
||||
readonly VITE_APP_VERSION: string
|
||||
readonly VITE_API_BASE_URL: string
|
||||
readonly VITE_DEBUG: string
|
||||
readonly VITE_ENABLE_MOCK: string
|
||||
}
|
||||
|
||||
interface ImportMeta {
|
||||
readonly env: ImportMetaEnv
|
||||
}
|
||||
|
|
@ -1,17 +1,12 @@
|
|||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import path from 'path'
|
||||
|
||||
export default defineConfig(({ mode }) => {
|
||||
const env = loadEnv(mode, process.cwd(), '')
|
||||
|
||||
return {
|
||||
base: env.VITE_BASE_PATH || '/',
|
||||
plugins: [react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, './src'),
|
||||
},
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, './src'),
|
||||
},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue