@mc-markets/ui 1.0.92 → 1.0.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/QUICK_START.md ADDED
@@ -0,0 +1,379 @@
1
+ # 🚀 快速入门指南
2
+
3
+ ## 项目初始化
4
+
5
+ ### 1. 创建 Vue 3 项目
6
+
7
+ ```bash
8
+ # 使用 Vite 创建项目
9
+ npm create vite@latest my-project -- --template vue
10
+ cd my-project
11
+
12
+ # 或使用 Vue CLI
13
+ npm install -g @vue/cli
14
+ vue create my-project
15
+ cd my-project
16
+ ```
17
+
18
+ ### 2. 安装依赖
19
+
20
+ ```bash
21
+ # 安装组件库
22
+ npm install @mc-markets/ui
23
+
24
+ # 安装自动导入插件(推荐)
25
+ npm install -D unplugin-vue-components unplugin-auto-import
26
+ ```
27
+
28
+ ### 3. 配置 Vite
29
+
30
+ 创建或修改 `vite.config.js`:
31
+
32
+ ```javascript
33
+ import { defineConfig } from 'vite'
34
+ import vue from '@vitejs/plugin-vue'
35
+ import AutoImport from 'unplugin-auto-import/vite'
36
+ import Components from 'unplugin-vue-components/vite'
37
+ import { McMarketsUIResolver, getMcMarketsUIImports } from '@mc-markets/ui/resolver'
38
+
39
+ export default defineConfig({
40
+ plugins: [
41
+ vue(),
42
+ Components({
43
+ resolvers: [McMarketsUIResolver()]
44
+ }),
45
+ AutoImport({
46
+ imports: ['vue', getMcMarketsUIImports()],
47
+ dts: 'src/auto-imports.d.ts'
48
+ })
49
+ ]
50
+ })
51
+ ```
52
+
53
+ ### 4. 更新 TypeScript 配置(如果使用 TS)
54
+
55
+ 修改 `tsconfig.json`,添加生成的类型文件:
56
+
57
+ ```json
58
+ {
59
+ "compilerOptions": {
60
+ // ... 其他配置
61
+ },
62
+ "include": [
63
+ "src/**/*",
64
+ "src/auto-imports.d.ts",
65
+ "src/components.d.ts"
66
+ ]
67
+ }
68
+ ```
69
+
70
+ ### 5. 创建示例页面
71
+
72
+ 创建 `src/App.vue`:
73
+
74
+ ```vue
75
+ <template>
76
+ <div class="app">
77
+ <h1>@mc-markets/ui 示例</h1>
78
+
79
+ <!-- 表单示例 -->
80
+ <m-form :model="form" label-width="100px">
81
+ <m-form-item label="用户名">
82
+ <m-input v-model="form.username" placeholder="请输入用户名" clearable />
83
+ </m-form-item>
84
+
85
+ <m-form-item label="城市">
86
+ <m-select v-model="form.city" placeholder="请选择城市">
87
+ <m-option label="北京" value="beijing" />
88
+ <m-option label="上海" value="shanghai" />
89
+ <m-option label="深圳" value="shenzhen" />
90
+ </m-select>
91
+ </m-form-item>
92
+
93
+ <m-form-item label="日期">
94
+ <m-date-picker v-model="form.date" placeholder="选择日期" />
95
+ </m-form-item>
96
+
97
+ <m-form-item label="启用状态">
98
+ <m-switch v-model="form.enabled" />
99
+ </m-form-item>
100
+
101
+ <m-form-item>
102
+ <m-button type="primary" @click="handleSubmit">提交</m-button>
103
+ <m-button @click="handleReset">重置</m-button>
104
+ </m-form-item>
105
+ </m-form>
106
+
107
+ <!-- 表格示例 -->
108
+ <m-table :data="tableData" style="margin-top: 20px;">
109
+ <m-table-column prop="name" label="姓名" width="180" />
110
+ <m-table-column prop="age" label="年龄" width="180" />
111
+ <m-table-column prop="address" label="地址" />
112
+ <m-table-column label="操作" width="150">
113
+ <template #default="{ row }">
114
+ <m-button size="small" @click="handleEdit(row)">编辑</m-button>
115
+ <m-button size="small" type="danger" @click="handleDelete(row)">
116
+ 删除
117
+ </m-button>
118
+ </template>
119
+ </m-table-column>
120
+ </m-table>
121
+
122
+ <!-- 分页示例 -->
123
+ <m-pagination
124
+ v-model:current-page="currentPage"
125
+ v-model:page-size="pageSize"
126
+ :total="100"
127
+ layout="prev, pager, next"
128
+ style="margin-top: 20px;"
129
+ />
130
+ </div>
131
+ </template>
132
+
133
+ <script setup>
134
+ // 无需导入任何东西!
135
+ // ref, reactive 等 Vue API 已自动导入
136
+ // Message 等组件库 API 已自动导入
137
+ // 组件也已自动导入,直接在模板中使用即可
138
+
139
+ const form = reactive({
140
+ username: '',
141
+ city: '',
142
+ date: '',
143
+ enabled: false
144
+ })
145
+
146
+ const tableData = ref([
147
+ { name: '张三', age: 28, address: '北京市朝阳区' },
148
+ { name: '李四', age: 32, address: '上海市浦东新区' },
149
+ { name: '王五', age: 25, address: '深圳市南山区' }
150
+ ])
151
+
152
+ const currentPage = ref(1)
153
+ const pageSize = ref(10)
154
+
155
+ const handleSubmit = () => {
156
+ console.log('表单数据:', form)
157
+ Message.success('提交成功!')
158
+ }
159
+
160
+ const handleReset = () => {
161
+ Object.assign(form, {
162
+ username: '',
163
+ city: '',
164
+ date: '',
165
+ enabled: false
166
+ })
167
+ Message.info('已重置')
168
+ }
169
+
170
+ const handleEdit = (row) => {
171
+ console.log('编辑:', row)
172
+ Message.info(`编辑 ${row.name}`)
173
+ }
174
+
175
+ const handleDelete = async (row) => {
176
+ try {
177
+ await MMessageBox.confirm(`确定删除 ${row.name} 吗?`, '提示')
178
+ Message.success('删除成功')
179
+ } catch {
180
+ Message.info('已取消删除')
181
+ }
182
+ }
183
+ </script>
184
+
185
+ <style scoped>
186
+ .app {
187
+ padding: 20px;
188
+ max-width: 1200px;
189
+ margin: 0 auto;
190
+ }
191
+
192
+ h1 {
193
+ margin-bottom: 20px;
194
+ color: #333;
195
+ }
196
+ </style>
197
+ ```
198
+
199
+ ### 6. 运行项目
200
+
201
+ ```bash
202
+ npm run dev
203
+ ```
204
+
205
+ ## 项目结构
206
+
207
+ 推荐的项目结构:
208
+
209
+ ```
210
+ my-project/
211
+ ├── src/
212
+ │ ├── assets/ # 静态资源
213
+ │ ├── components/ # 业务组件
214
+ │ ├── views/ # 页面组件
215
+ │ ├── router/ # 路由配置
216
+ │ ├── store/ # 状态管理
217
+ │ ├── utils/ # 工具函数
218
+ │ ├── App.vue # 根组件
219
+ │ ├── main.js # 入口文件
220
+ │ ├── auto-imports.d.ts # 自动生成的 API 类型
221
+ │ └── components.d.ts # 自动生成的组件类型
222
+ ├── public/ # 公共资源
223
+ ├── index.html # HTML 模板
224
+ ├── vite.config.js # Vite 配置
225
+ ├── package.json # 项目配置
226
+ └── tsconfig.json # TypeScript 配置(可选)
227
+ ```
228
+
229
+ ## 常用示例
230
+
231
+ ### 对话框示例
232
+
233
+ ```vue
234
+ <template>
235
+ <m-button @click="dialogVisible = true">打开对话框</m-button>
236
+
237
+ <m-dialog v-model="dialogVisible" title="提示">
238
+ <span>这是一段信息</span>
239
+ <template #footer>
240
+ <m-button @click="dialogVisible = false">取消</m-button>
241
+ <m-button type="primary" @click="handleConfirm">确定</m-button>
242
+ </template>
243
+ </m-dialog>
244
+ </template>
245
+
246
+ <script setup>
247
+ const dialogVisible = ref(false)
248
+
249
+ const handleConfirm = () => {
250
+ dialogVisible.value = false
251
+ Message.success('操作成功')
252
+ }
253
+ </script>
254
+ ```
255
+
256
+ ### 标签页示例
257
+
258
+ ```vue
259
+ <template>
260
+ <m-tabs v-model="activeTab">
261
+ <m-tab-pane label="用户管理" name="user">
262
+ 用户管理内容
263
+ </m-tab-pane>
264
+ <m-tab-pane label="配置管理" name="config">
265
+ 配置管理内容
266
+ </m-tab-pane>
267
+ <m-tab-pane label="角色管理" name="role">
268
+ 角色管理内容
269
+ </m-tab-pane>
270
+ </m-tabs>
271
+ </template>
272
+
273
+ <script setup>
274
+ const activeTab = ref('user')
275
+ </script>
276
+ ```
277
+
278
+ ### 单选框组示例
279
+
280
+ ```vue
281
+ <template>
282
+ <m-radio-group v-model="radio">
283
+ <m-radio label="1">选项 1</m-radio>
284
+ <m-radio label="2">选项 2</m-radio>
285
+ <m-radio label="3">选项 3</m-radio>
286
+ </m-radio-group>
287
+
288
+ <div style="margin-top: 10px;">
289
+ <m-radio-group v-model="radioButton">
290
+ <m-radio-button label="北京" />
291
+ <m-radio-button label="上海" />
292
+ <m-radio-button label="深圳" />
293
+ </m-radio-group>
294
+ </div>
295
+ </template>
296
+
297
+ <script setup>
298
+ const radio = ref('1')
299
+ const radioButton = ref('北京')
300
+ </script>
301
+ ```
302
+
303
+ ### 消息提示示例
304
+
305
+ ```vue
306
+ <template>
307
+ <m-button @click="Message.success('成功消息')">成功</m-button>
308
+ <m-button @click="Message.warning('警告消息')">警告</m-button>
309
+ <m-button @click="Message.info('信息消息')">信息</m-button>
310
+ <m-button @click="Message.error('错误消息')">错误</m-button>
311
+ </template>
312
+
313
+ <script setup>
314
+ // Message 已自动导入,直接使用即可
315
+ </script>
316
+ ```
317
+
318
+ ### 通知示例
319
+
320
+ ```vue
321
+ <template>
322
+ <m-button @click="showNotification">显示通知</m-button>
323
+ </template>
324
+
325
+ <script setup>
326
+ const showNotification = () => {
327
+ NotifiMessage({
328
+ title: '通知标题',
329
+ message: '这是通知内容',
330
+ type: 'success',
331
+ duration: 3000
332
+ })
333
+ }
334
+ </script>
335
+ ```
336
+
337
+ ## 更多示例
338
+
339
+ 访问 [在线演示](https://daboluoxigua.github.io/mc-markets-ui/) 查看完整的组件示例和 API 文档。
340
+
341
+ ## 下一步
342
+
343
+ - 📖 阅读 [使用指南](./USAGE_GUIDE.md) 了解更多高级用法
344
+ - 🎨 查看 [在线演示](https://daboluoxigua.github.io/mc-markets-ui/) 了解所有组件
345
+ - 💡 参考 [配置示例](./vite.config.example.js) 优化你的配置
346
+
347
+ ## 常见问题
348
+
349
+ ### Q: 为什么组件样式没有生效?
350
+
351
+ 确保 `McMarketsUIResolver` 的 `importStyle` 选项为 `true`(默认),或手动导入样式:
352
+
353
+ ```javascript
354
+ // main.js
355
+ import '@mc-markets/ui/dist/style.css'
356
+ ```
357
+
358
+ ### Q: TypeScript 类型提示不工作?
359
+
360
+ 1. 确保 `tsconfig.json` 包含了生成的 `.d.ts` 文件
361
+ 2. 重启 IDE
362
+ 3. 运行一次 `npm run dev` 生成类型文件
363
+
364
+ ### Q: 如何使用 Element Plus 的其他组件?
365
+
366
+ 所有 Element Plus 组件都可以通过 `m-` 前缀使用,会自动转换。例如:
367
+
368
+ ```vue
369
+ <m-carousel>
370
+ <m-carousel-item>内容 1</m-carousel-item>
371
+ <m-carousel-item>内容 2</m-carousel-item>
372
+ </m-carousel>
373
+ ```
374
+
375
+ ## 获取帮助
376
+
377
+ - [GitHub Issues](https://github.com/daboluoxigua/mc-markets-ui/issues)
378
+ - [npm 主页](https://www.npmjs.com/package/@mc-markets/ui)
379
+
package/README.md CHANGED
@@ -91,8 +91,8 @@ export default defineConfig({
91
91
  Components({
92
92
  resolvers: [
93
93
  McMarketsUIResolver({
94
- // prefix: 'm', // 组件前缀,默认 'm'
95
- // importStyle: true // 自动导入样式,默认 true
94
+ // prefix: 'm', // 组件前缀,默认 'm'
95
+ // importStyle: 'css' // 样式导入方式:'css' | 'scss' | false,默认 'css'
96
96
  })
97
97
  ]
98
98
  }),
@@ -108,7 +108,33 @@ export default defineConfig({
108
108
  })
109
109
  ```
110
110
 
111
- #### 3. 配置 Webpack(Vue CLI)
111
+ #### 3. 导入样式(推荐)
112
+
113
+ 在 `main.js` 或 `main.ts` 中导入样式:
114
+
115
+ ```javascript
116
+ import { createApp } from 'vue'
117
+ import App from './App.vue'
118
+ // 导入组件库样式
119
+ import '@mc-markets/ui/dist/style.css'
120
+
121
+ createApp(App).mount('#app')
122
+ ```
123
+
124
+ **其他样式导入方式:**
125
+
126
+ ```javascript
127
+ // 方式1:导入编译后的 CSS(推荐,体积更小)
128
+ import '@mc-markets/ui/dist/style.css'
129
+
130
+ // 方式2:导入 SCSS 源文件(可自定义变量)
131
+ import '@mc-markets/ui/packages/styles/index.scss'
132
+
133
+ // 方式3:通过 resolver 自动导入(会在第一个组件导入时自动引入)
134
+ // 在 vite.config.js 中配置 importStyle: 'css'
135
+ ```
136
+
137
+ #### 4. 配置 Webpack(Vue CLI)
112
138
 
113
139
  在 `vue.config.js` 中:
114
140
 
@@ -135,7 +161,7 @@ module.exports = {
135
161
  }
136
162
  ```
137
163
 
138
- #### 4. 直接使用组件(无需手动导入)
164
+ #### 5. 直接使用组件(无需手动导入)
139
165
 
140
166
  配置完成后,可以直接在模板中使用组件,无需手动导入:
141
167