m8-codex-mcp 1.0.0

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.
Files changed (110) hide show
  1. package/README.md +113 -0
  2. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/000-/347/273/204/344/273/266/345/272/223/344/270/213/350/275/275/344/275/277/347/224/250.md +188 -0
  3. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/001-actionsheet/345/212/250/344/275/234/351/235/242/346/235/277.md +460 -0
  4. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/004-amap/345/234/260/345/233/276.md +285 -0
  5. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/005-button/346/214/211/351/222/256.md +211 -0
  6. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/008-cell/345/215/225/345/205/203/346/240/274.md +213 -0
  7. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/009-checkbox/345/244/215/351/200/211/346/241/206.md +501 -0
  8. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/010-circle/347/216/257/345/275/242/350/277/233/345/272/246/346/235/241.md +168 -0
  9. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/011-datepicker/346/227/245/346/234/237/351/200/211/346/213/251.md +617 -0
  10. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/013-field/350/276/223/345/205/245/346/241/206.md +539 -0
  11. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/015-form/350/241/250/345/215/225.md +999 -0
  12. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/018-header/345/244/264/351/203/250/345/257/274/350/210/252/346/240/217.md +150 -0
  13. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/019-icon/345/233/276/346/240/207.md +133 -0
  14. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/020-loading/345/212/240/350/275/275.md +117 -0
  15. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/021-noticebar/351/200/232/347/237/245/346/240/217.md +152 -0
  16. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/022-numberkeyboard/346/225/260/345/255/227/351/224/256/347/233/230.md +427 -0
  17. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/023-pagination/345/210/206/351/241/265.md +212 -0
  18. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/024-panel/351/235/242/346/235/277.md +85 -0
  19. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/025-passwordinput/345/257/206/347/240/201/350/276/223/345/205/245/346/241/206.md +175 -0
  20. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/026-picker/351/200/211/346/213/251/345/231/250.md +519 -0
  21. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/027-popup/345/274/271/345/207/272/345/261/202.md +152 -0
  22. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/028-progress/350/277/233/345/272/246/346/235/241.md +103 -0
  23. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/029-radio/345/215/225/351/200/211/346/241/206.md +285 -0
  24. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/030-rate/350/257/204/345/210/206.md +189 -0
  25. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/031-search/346/220/234/347/264/242.md +217 -0
  26. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/032-slider/346/273/221/345/235/227.md +166 -0
  27. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/033-stepper/346/255/245/350/277/233/345/231/250.md +340 -0
  28. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/035-swipecell/346/273/221/345/212/250/345/215/225/345/205/203/346/240/274.md +265 -0
  29. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/036-switch/345/274/200/345/205/263.md +196 -0
  30. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/037-switchcell/345/274/200/345/205/263/345/215/225/345/205/203/346/240/274.md +115 -0
  31. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/038-tag/346/240/207/350/256/260.md +232 -0
  32. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/039-treeselect/345/210/206/347/261/273/351/200/211/346/213/251.md +631 -0
  33. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/040-uploader/346/226/207/344/273/266/344/270/212/344/274/240.md +531 -0
  34. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/041-verifycode/351/252/214/350/257/201/347/240/201.md +111 -0
  35. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/042-minirefresh/344/270/213/346/213/211/345/210/267/346/226/260.md +337 -0
  36. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/043-layout/345/270/203/345/261/200.md +150 -0
  37. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/044-image/345/233/276/347/211/207.md +144 -0
  38. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/045-toast/350/275/273/346/217/220/347/244/272.md +429 -0
  39. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/046-calendar/346/227/245/345/216/206.md +467 -0
  40. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/047-area/347/234/201/345/270/202/345/214/272/351/200/211/346/213/251.md +295 -0
  41. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/048-tab/346/240/207/347/255/276/351/241/265.md +577 -0
  42. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/049-dialog/345/274/271/345/207/272/346/241/206.md +491 -0
  43. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/050-dropdownmenu/344/270/213/346/213/211/350/217/234/345/215/225.md +265 -0
  44. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/051-notify/346/266/210/346/201/257/351/200/232/347/237/245.md +203 -0
  45. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/052-overlay/351/201/256/347/275/251/345/261/202.md +139 -0
  46. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/053-collapse/346/212/230/345/217/240/351/235/242/346/235/277.md +199 -0
  47. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/054-grid/345/256/253/346/240/274.md +183 -0
  48. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/055-countdown/345/200/222/350/256/241/346/227/266.md +289 -0
  49. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/056-divider/345/210/206/345/211/262/347/272/277.md +97 -0
  50. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/057-empty/347/251/272/347/212/266/346/200/201.md +146 -0
  51. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/058-imagepreview/345/233/276/347/211/207/351/242/204/350/247/210.md +292 -0
  52. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/059-lazyload/346/207/222/345/212/240/350/275/275.md +120 -0
  53. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/060-skeleton/351/252/250/346/236/266/345/261/217.md +114 -0
  54. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/061-steps/346/255/245/351/252/244/346/235/241.md +119 -0
  55. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/062-sticky/347/262/230/346/200/247/345/270/203/345/261/200.md +208 -0
  56. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/063-indexbar/347/264/242/345/274/225/346/240/217.md +161 -0
  57. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/064-sidebar/344/276/247/350/276/271/345/257/274/350/210/252.md +248 -0
  58. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/065-tabbar/346/240/207/347/255/276/346/240/217.md +314 -0
  59. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/066-badge/345/276/275/346/240/207.md +162 -0
  60. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/067-popover/346/260/224/346/263/241/345/274/271/345/207/272/346/241/206.md +325 -0
  61. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/068-cascader/347/272/247/350/201/224/351/200/211/346/213/251.md +360 -0
  62. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/069-selectperson/351/200/211/344/272/272/347/273/204/344/273/266.md +595 -0
  63. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/070-swipe/350/275/256/346/222/255.md +262 -0
  64. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/071-/345/233/275/351/231/205/345/214/226.md +51 -0
  65. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/072-easycalendar/346/227/245/345/216/206.md +132 -0
  66. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/073-qrcode/344/272/214/347/273/264/347/240/201.md +1538 -0
  67. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/074-imagescale/345/233/276/347/211/207/350/243/201/345/211/252.md +261 -0
  68. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/075-dragsort/346/213/226/346/213/275/346/216/222/345/272/217.md +161 -0
  69. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/076-chart/345/233/276/350/241/250.md +381 -0
  70. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/077-rtc/351/237/263/350/247/206/351/242/221.md +531 -0
  71. package/data/m8mpdoc/UI/347/273/204/344/273/266/345/272/223/078-table/350/241/250/346/240/274.md +849 -0
  72. package/data/m8mpdoc//345/205/270/345/236/213/346/241/210/344/276/213/003-/345/210/227/350/241/250/350/257/246/346/203/205.md +247 -0
  73. package/data/m8mpdoc//345/205/270/345/236/213/346/241/210/344/276/213/003-/345/210/227/350/241/250/350/257/246/346/203/205vue3.md +276 -0
  74. package/data/m8mpdoc//345/205/270/345/236/213/346/241/210/344/276/213/003-/350/241/250/345/215/225/346/217/220/344/272/244.md +130 -0
  75. package/data/m8mpdoc//345/205/270/345/236/213/346/241/210/344/276/213/003-/350/241/250/345/215/225/346/217/220/344/272/244vue3.md +115 -0
  76. package/data/m8mpdoc//346/240/270/345/277/203/351/200/232/347/224/250Util/345/267/245/345/205/267/345/272/223/Ajax/344/270/216/346/226/207/344/273/266/344/270/212/344/274/240.md +456 -0
  77. package/data/m8mpdoc//346/240/270/345/277/203/351/200/232/347/224/250Util/345/267/245/345/205/267/345/272/223//345/267/245/345/205/267/345/207/275/346/225/260/345/272/223.md +398 -0
  78. package/data/standards/01-project/naming.md +158 -0
  79. package/data/standards/01-project/structure.md +106 -0
  80. package/data/standards/01-project/version-detection.md +195 -0
  81. package/data/standards/02-vue/basic.md +242 -0
  82. package/data/standards/02-vue/component.md +299 -0
  83. package/data/standards/02-vue/examples.md +240 -0
  84. package/data/standards/02-vue/performance.md +74 -0
  85. package/data/standards/02-vue/state-management.md +293 -0
  86. package/data/standards/03-css/index.md +165 -0
  87. package/data/standards/04-api/ajax.md +178 -0
  88. package/data/standards/04-api/ejs-api.md +192 -0
  89. package/data/standards/04-api/util.md +166 -0
  90. package/data/standards/05-typescript/index.md +166 -0
  91. package/data/standards/06-mock/index.md +154 -0
  92. package/data/standards/07-router/index.md +141 -0
  93. package/data/standards/README.md +82 -0
  94. package/data/standards/_index.md +215 -0
  95. package/dist/index.d.ts +10 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +2 -0
  98. package/dist/knowledge/index.d.ts +36 -0
  99. package/dist/knowledge/index.d.ts.map +1 -0
  100. package/dist/knowledge/index.js +1 -0
  101. package/dist/templates/vue2.d.ts +41 -0
  102. package/dist/templates/vue2.d.ts.map +1 -0
  103. package/dist/templates/vue2.js +1 -0
  104. package/dist/templates/vue3.d.ts +41 -0
  105. package/dist/templates/vue3.d.ts.map +1 -0
  106. package/dist/templates/vue3.js +1 -0
  107. package/dist/tools/generate_module_structure.d.ts +21 -0
  108. package/dist/tools/generate_module_structure.d.ts.map +1 -0
  109. package/dist/tools/generate_module_structure.js +1 -0
  110. package/package.json +47 -0
@@ -0,0 +1,398 @@
1
+ # 核心通用Util
2
+
3
+ 框架内置`Util`工具库通过框架自动全局引入,代码中可以直接使用,无需额外引入。
4
+
5
+ ## 使用场景
6
+
7
+ 框架内置核心`Util`
8
+
9
+ - `Util`编写时,内部使用
10
+
11
+ - `Widget`编写时,内部使用
12
+
13
+ - 项目中任何需要用到核心通用函数的地方
14
+
15
+ ## 方法说明
16
+
17
+ 注:此工具集下的方法通过`Util.method()`调用,如`Util.uuid()`
18
+
19
+ ### os
20
+
21
+ 判断当前的运行环境
22
+
23
+ __系统环境判断__
24
+
25
+ ```js
26
+ // Android环境与iOS只会有一个为true
27
+ Util.os.android;
28
+ Util.os.ios;
29
+ ```
30
+
31
+ __容器环境判断__
32
+
33
+ ```js
34
+ // ejs,dd,h5容器只会有一个为true
35
+ // 分别代表`EJS`容器,`钉钉`容器,`其它`(包括普通浏览器)容器
36
+ Util.os.ejs;
37
+ Util.os.dd;
38
+ Util.os.h5;
39
+ ```
40
+ __其他容器判断__
41
+
42
+ ```js
43
+ // M7_v7.4.2版本支持
44
+ // 分别代表`微信`容器,`企业微信`容器,`政务微信`容器,同时也是h5环境
45
+ Util.os.wechat;
46
+ Util.os.wxWork;
47
+ Util.os.wxWorkLoacl;
48
+ ```
49
+ __更多功能__
50
+
51
+ ```js
52
+ // Android环境下
53
+ // 获取Android的版本号以及是否是非Chrome的Android环境
54
+ Util.os.version;
55
+ Util.os.isBadAndroid;
56
+
57
+ // iOS环境下
58
+ // 获取iOS的版本号以及是否是苹果手机,是否是pad
59
+ Util.os.version;
60
+ Util.os.iphone;
61
+ Util.os.ipad;
62
+ ```
63
+
64
+
65
+ ### uuid(options)
66
+
67
+ 生成一个随机uuid
68
+
69
+ **平台差异**
70
+
71
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
72
+ | :---: | :--------: | :--------: | :----------: |
73
+ | √ | √ | √ | √ |
74
+
75
+ __参数说明__
76
+
77
+ | 参数 | 参数类型 | 说明 |
78
+ | :------------- |:-------------:|:-------------|
79
+ | len | Number | 长度,默认为32位,最大不能超过36,最小不能小于4 |
80
+ | radix | Number | 随机的基数,如果小于等于10代表只用纯数字,最大为62,最小为2,默认为62 |
81
+ | type | String | 类别,默认为`default`代表 a-c-c-d-e的连线模式,如果为` noline`代表不会有连线 |
82
+
83
+ **示例**
84
+
85
+ ```js
86
+ // 生成一个8-4-4-4-12格式的 32位uuid,例如 yczYoFSp-ooru-ANjl-Hrgg-XgXmMxSN
87
+ var uuid = Util.uuid();
88
+
89
+ // 生成一个只有数字的36位 uuid,例如 52616056-5161-7170-8460-802618729824
90
+ var uuid = Util.uuid({
91
+ len: 36,
92
+ radix: 10
93
+ });
94
+
95
+ // 生成一个没有下划线的10位 uuid,例如 xOvHy03wfA
96
+ var uuid = Util.uuid({
97
+ len: 10,
98
+ type: 'noline'
99
+ });
100
+ ```
101
+
102
+
103
+ ### getExtraDataByKey(key)
104
+
105
+ 通过传入key值,得到页面key的初始化传值,实际情况是获取 `window.location.href` 中的参数的值
106
+
107
+ __注意:__
108
+
109
+ 微信、支付宝小程序不支持获取`window.location.href`参数。
110
+
111
+ 在跨端框架中,页面传递参数可以统一从页面的`onLoad函数`中获取上一个页面传递的参数。
112
+
113
+ **平台差异**
114
+
115
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
116
+ | :---: | :--------: | :--------: | :----------: |
117
+ | √ | √ | x | x |
118
+
119
+ __参数说明__
120
+
121
+ | 参数 | 参数类型 | 说明 |
122
+ | :------------- |:-------------:|:-------------|
123
+ | key | String | 对应的key值 |
124
+
125
+ __返回说明__
126
+
127
+ | 参数 | 参数类型 | 说明 |
128
+ | :------------- |:-------------:|:-------------|
129
+ | value | String | 返回href中对应的key的value |
130
+
131
+ **示例**
132
+
133
+ ```js
134
+ //查询参数,key对应的value
135
+ var value = Util.getExtraDataByKey(key);
136
+
137
+ // 建议在跨端框架中统一使用页面的onLoad函数获取上一个页面传递的参数
138
+ export default {
139
+ data: function() {
140
+ return {
141
+ key: ''
142
+ }
143
+ }
144
+ onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
145
+ this.key = option.key;
146
+ }
147
+ }
148
+ ```
149
+
150
+
151
+ ### getFullUrlByParams(url, data)
152
+
153
+ 将json参数拼接到url中
154
+
155
+ **平台差异**
156
+
157
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
158
+ | :---: | :--------: | :--------: | :----------: |
159
+ | √ | √ | √ | √ |
160
+
161
+ __参数说明__
162
+
163
+ | 参数 | 参数类型 | 说明 |
164
+ | :------------- |:-------------:|:-------------|
165
+ | url | String | `必填`,需要拼接的url |
166
+ | data | JSON | `必填`,对应需要拼接的JSON参数 |
167
+ | isType | Boolean | `选填`,是否相对路径。 默认`false`,微信,支付宝小程序不支持istype=ture相对路径选项 |
168
+
169
+ **示例**
170
+
171
+ ```js
172
+ var url = 'http://app.epoint.com.cn/m8fedoc';
173
+ var data = {
174
+ 'key1': 'value1'
175
+ };
176
+
177
+ // 例如返回: http://app.epoint.com.cn/m8fedoc?key1=value1
178
+ var finalUrl = Util.getFullUrlByParams(url, data);
179
+ ```
180
+
181
+ ### noop
182
+
183
+ 空函数
184
+
185
+ **平台差异**
186
+
187
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
188
+ | :---: | :--------: | :--------: | :----------: |
189
+ | √ | √ | √ | √ |
190
+
191
+ **示例**
192
+
193
+ ```js
194
+ // 这个空函数: function() {};
195
+ var noop = Util.noop;
196
+ ```
197
+
198
+ ### extend(deep, target, source1, source...)
199
+
200
+ 合并多个对象
201
+
202
+ **平台差异**
203
+
204
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
205
+ | :---: | :--------: | :--------: | :----------: |
206
+ | √ | √ | √ | √ |
207
+
208
+ __参数说明__
209
+
210
+ | 参数 | 参数类型 | 说明 |
211
+ | :------------- |:-------------:|:-------------|
212
+ | deep | Boolean | 为true时会进行递归合并,可以省略(代表默认`false`) |
213
+ | target | Object | `必填`,需要合并的目标对象,这个对象会随之修改,并且作为返回值 |
214
+ | object1 | Object | `必填`,需要合并的目标对象 |
215
+ | objectN | Object | 需要合并的目标对象 |
216
+
217
+ **示例**
218
+
219
+ ```js
220
+ var target = {
221
+ company: "epoint",
222
+ product: {
223
+ ejs: "ejs混合开发方案"
224
+ }
225
+ };
226
+
227
+ var obj1 = {
228
+ city: "suzhou",
229
+ product: {
230
+ m7: "m7移动框架"
231
+ }
232
+ };
233
+
234
+ // 非递归合并
235
+ var newObj1 = Util.extend({}, target, object1);
236
+
237
+ // 输出:{"company": "epoint", "product": {"m7": "m7移动框架"}, "city": "suzhou"}
238
+ console.log(JSON.stringify(newObj1));
239
+
240
+ // 递归合并
241
+ var newObj2 = Util.extend(true, {}, target, obj1);
242
+
243
+ // 输出:{"company": "epoint", "product": {"ejs": "ejs混合开发方案", "m7": "m7移动框架"}, "city": "suzhou"}
244
+ console.log(JSON.stringify(newObj2));
245
+ ```
246
+
247
+ ### each(object, handler)
248
+
249
+ 遍历对象或数组
250
+
251
+ **平台差异**
252
+
253
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
254
+ | :---: | :--------: | :--------: | :----------: |
255
+ | √ | √ | √ | √ |
256
+
257
+ __参数说明__
258
+
259
+ | 参数 | 参数类型 | 说明 |
260
+ | :------------- |:-------------:|:-------------|
261
+ | object | Object或Array | `必填`,需要遍历的对象或数组,若为对象,仅遍历对象根节点下的key |
262
+ | handler | Function(Integer或String, Anything element) | `必填`,每个元素执行的回调函数;其中,index表示当前元素的下标或key(下标从0开始),element表示当前匹配元素 |
263
+
264
+ **示例**
265
+
266
+ ```js
267
+ var array = [1,2,3];
268
+
269
+ Util.each(array, function(index,item) {
270
+ console.log(item*item);
271
+ });
272
+ ```
273
+
274
+ ### getProjectBasePath(patten)
275
+
276
+ 得到项目的根路径
277
+
278
+ **平台差异**
279
+
280
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
281
+ | :---: | :--------: | :--------: | :----------: |
282
+ | √ | √ | x | x |
283
+
284
+ __参数说明__
285
+
286
+ | 参数 | 参数类型 | 说明 |
287
+ | :------------- |:-------------:|:-------------|
288
+ | patten | String | 匹配模式,如果在其它文件夹下面,需要换为对应的目录 |
289
+
290
+ **示例**
291
+
292
+ ```js
293
+ // 例如页面地址为http://127.0.0.1:5500/ejs.m8.mobileframe/dist/build/h5/index.html#/pages/utils/core
294
+
295
+ // 结果: http://127.0.0.1:5500/ejs.m8.mobileframe/
296
+ var basePath = Util.getProjectBasePath();
297
+
298
+ // 结果: http://127.0.0.1:5500/ejs.m8.mobileframe/dist/build/
299
+ var basePath2 = Util.getProjectBasePath('/h5/');
300
+ ```
301
+
302
+ 上述示例项目对应的目录结构为
303
+
304
+ ```
305
+ ejs.m8.mobileframe
306
+ |- dist
307
+ | |- build
308
+ | | |- h5
309
+ | | | |- index.html // 页面index.html路径
310
+ ```
311
+
312
+
313
+
314
+ ### getPathSuffix(path)
315
+
316
+ 得到文件的后缀
317
+
318
+ **平台差异**
319
+
320
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
321
+ | :---: | :--------: | :--------: | :----------: |
322
+ | √ | √ | √ | √ |
323
+
324
+ __参数说明__
325
+
326
+ | 参数 | 参数类型 | 说明 |
327
+ | :------------- |:-------------:|:-------------|
328
+ | path | String |`必填`, 对应文件路径 |
329
+
330
+ **示例**
331
+
332
+ ```js
333
+ var path = 'pages/test.js';
334
+
335
+ // 返回: 'js'
336
+ var suffix = Util.getPathSuffix(path);
337
+ ```
338
+
339
+ ### dataProcess(response, options)
340
+
341
+ 处理返回数据,返回按指令处理过后的最终数据
342
+
343
+ **平台差异**
344
+
345
+ | H5 | 新点小程序 | 微信小程序 | 支付宝小程序 |
346
+ | :---: | :--------: | :--------: | :----------: |
347
+ | √ | √ | √ | √ |
348
+
349
+ __参数说明__
350
+
351
+ | 参数 | 参数类型 | 说明 |
352
+ | :------------- |:-------------:|:-------------|
353
+ | response | JSON | `必填`,需要处理的数据 |
354
+ | options | Object | 配置信息 |
355
+ | options.dataPath | String或Array | 需要获取的路径指令 |
356
+
357
+ __返回说明__
358
+
359
+ 返回一个`result`,以下是`result`中的对象
360
+
361
+ 注意,如果`dataPath`没传,默认不会处理数据,即返回的是原始数据`response`
362
+
363
+ | 参数 | 参数类型 | 说明 |
364
+ | :------------- |:-------------:|:-------------|
365
+ | code | Number | 处理完的结果,为`1`代表处理成功,`0`代表失败,一般失败的原因是接口返回的`status`不正确或者格式不匹配 |
366
+ | message | String | 处理完后的提示,例如错误信息提示等 |
367
+ | data | JSON | 处理完后的最终数据,如果没有获取到对应节点下的数据,为`null` |
368
+
369
+ **示例**
370
+
371
+ ```js
372
+ var response = {
373
+ "custom": {
374
+ "infolist": [{
375
+ "title": "测试的title",
376
+ "guid": "131830"
377
+ }]
378
+ },
379
+ "status": {
380
+ "code": 1,
381
+ "text": "成功",
382
+ "url": ""
383
+ }
384
+ };
385
+
386
+ // 直接处理数据
387
+ var result = Util.dataProcess(response, {
388
+ dataPath: 'custom.infolist'
389
+ });
390
+
391
+ // result.data才是最终数据
392
+ console.log(result.data);
393
+
394
+ // 或者也可以这样处理,这样会一直处理路径数组中的每一个,直到拿到数据为止或结束
395
+ var result = Util.dataProcess(response, {
396
+ dataPath: ['custom.infolist', 'custom.infoList']
397
+ });
398
+ ```
@@ -0,0 +1,158 @@
1
+ # 命名规范
2
+
3
+ > 定义 M8 项目中各类资源的命名规则。
4
+
5
+ ## 📝 文件命名
6
+
7
+ ### Vue 文件
8
+
9
+ | 类型 | 规则 | 示例 |
10
+ | -------- | ------------------------ | ----------------------------------- |
11
+ | 页面组件 | 小写字母 + 数字 + 下划线 | `user_list.vue`, `order_detail.vue` |
12
+ | 通用组件 | PascalCase(大驼峰) | `UserCard.vue`, `SearchBar.vue` |
13
+
14
+ **禁止规则**:
15
+
16
+ - ❌ 禁止使用中文
17
+ - ❌ 禁止使用特殊字符
18
+ - ❌ 禁止使用大写字母(页面组件)
19
+
20
+ ```
21
+ ✅ 正确: user_profile.vue, order_list.vue
22
+ ❌ 错误: UserProfile.vue, 用户列表.vue, order-list.vue
23
+ ```
24
+
25
+ ### 资源文件
26
+
27
+ | 类型 | 规则 | 示例 |
28
+ | ---- | ------------------- | -------------------------------- |
29
+ | 图片 | `img_` 前缀 + 描述 | `img_logo.png`, `img_banner.jpg` |
30
+ | 图标 | `icon_` 前缀 + 描述 | `icon_home.svg`, `icon_user.png` |
31
+ | 样式 | 与 Vue 文件同名 | `login.scss`, `user_list.scss` |
32
+
33
+ ### 目录命名
34
+
35
+ | 类型 | 规则 | 示例 |
36
+ | -------- | ----------------- | ----------------------------- |
37
+ | 模块目录 | 小写字母 + 下划线 | `user_center`, `order_manage` |
38
+ | 组件目录 | `components` | 固定名称 |
39
+ | 样式目录 | `css` | 固定名称 |
40
+ | 图片目录 | `images` | 固定名称 |
41
+
42
+ ## 🏷️ 代码命名
43
+
44
+ ### JavaScript/TypeScript
45
+
46
+ | 类型 | 规则 | 示例 |
47
+ | ---- | --------------------- | --------------------------------- |
48
+ | 变量 | camelCase(小驼峰) | `userName`, `orderList` |
49
+ | 常量 | UPPER_SNAKE_CASE | `MAX_COUNT`, `API_BASE_URL` |
50
+ | 函数 | camelCase | `getUserInfo()`, `handleSubmit()` |
51
+ | 类 | PascalCase | `UserService`, `OrderManager` |
52
+ | 接口 | PascalCase + `I` 前缀 | `IUserInfo`, `IOrderData` |
53
+ | 类型 | PascalCase + `T` 前缀 | `TStatus`, `TCallback` |
54
+
55
+ **变量声明原则**:
56
+
57
+ ```javascript
58
+ // ✅ 优先使用 const
59
+ const userName = "admin";
60
+ const userList = [];
61
+
62
+ // ⚠️ 仅在需要重新赋值时使用 let
63
+ let currentPage = 1;
64
+ currentPage = 2;
65
+
66
+ // ❌ 禁止使用 var
67
+ var oldStyle = "deprecated";
68
+ ```
69
+
70
+ ### CSS 命名
71
+
72
+ 采用 **BEM 命名规范**:
73
+
74
+ | 类型 | 格式 | 示例 |
75
+ | ------------------ | ------------------ | -------------------------------- |
76
+ | 块(Block) | `.block` | `.card`, `.header` |
77
+ | 元素(Element) | `.block__element` | `.card__title`, `.header__logo` |
78
+ | 修饰符(Modifier) | `.block--modifier` | `.card--active`, `.btn--primary` |
79
+
80
+ ```scss
81
+ // ✅ 正确的 BEM 命名
82
+ .user-card {
83
+ &__avatar {
84
+ /* 元素 */
85
+ }
86
+ &__name {
87
+ /* 元素 */
88
+ }
89
+ &--vip {
90
+ /* 修饰符 */
91
+ }
92
+ }
93
+
94
+ // ❌ 错误示例
95
+ .userCard {
96
+ /* 禁止驼峰 */
97
+ }
98
+ .UserCard {
99
+ /* 禁止大写 */
100
+ }
101
+ ```
102
+
103
+ **class/id 命名规则**:
104
+
105
+ - ✅ 使用小写字母
106
+ - ✅ 使用中划线连接
107
+ - ❌ 禁止使用大写
108
+ - ❌ 禁止使用驼峰
109
+ - ❌ 避免过度简写
110
+
111
+ ## 🛣️ 路由命名
112
+
113
+ ```javascript
114
+ const routes = [
115
+ {
116
+ // 格式: pages/[module_name]/[page_name]
117
+ path: "pages/user_center/profile",
118
+ style: {
119
+ navigationBarTitleText: "个人中心",
120
+ },
121
+ },
122
+ ];
123
+ ```
124
+
125
+ ## 📦 Store 命名
126
+
127
+ ### Vue2 (Vuex)
128
+
129
+ ```javascript
130
+ export default {
131
+ // 模块名与目录名一致
132
+ moduleName: "user_center",
133
+ namespaced: true,
134
+ state: {},
135
+ mutations: {},
136
+ actions: {},
137
+ };
138
+ ```
139
+
140
+ ### Vue3 (Pinia)
141
+
142
+ ```typescript
143
+ // 命名规则: use + 模块名 + Store
144
+ export const useUserCenterStore = defineStore("user_center", {
145
+ state: () => ({}),
146
+ getters: {},
147
+ actions: {},
148
+ });
149
+ ```
150
+
151
+ ## ✅ 命名检查清单
152
+
153
+ - [ ] 页面 Vue 文件使用小写 + 下划线
154
+ - [ ] 通用组件使用 PascalCase
155
+ - [ ] 变量/函数使用 camelCase
156
+ - [ ] 常量使用 UPPER_SNAKE_CASE
157
+ - [ ] CSS 类名使用 BEM 规范
158
+ - [ ] 图片资源使用 `img_` 前缀
@@ -0,0 +1,106 @@
1
+ # 项目结构规范
2
+
3
+ > 定义 M8 项目的标准目录结构与文件组织方式。
4
+
5
+ ## 📁 标准目录结构
6
+
7
+ ```
8
+ ejs.m8.project/
9
+ ├── src/
10
+ │ ├── components/ # 通用组件目录
11
+ │ │ └── [ComponentName].vue # PascalCase 命名
12
+ │ │
13
+ │ ├── pages/ # 页面视图目录
14
+ │ │ └── [module_name]/ # 模块目录(小写+下划线)
15
+ │ │ ├── css/ # 样式文件目录
16
+ │ │ │ └── [page_name].scss
17
+ │ │ ├── images/ # 模块图片资源
18
+ │ │ ├── [page_name].vue # 页面组件
19
+ │ │ ├── router.js # 路由配置
20
+ │ │ ├── store.js # 状态管理(Vue2: Vuex)
21
+ │ │ ├── store.ts # 状态管理(Vue3: Pinia)
22
+ │ │ └── mock.js # Mock 数据定义
23
+ │ │
24
+ │ ├── shared/ # 配置文件目录
25
+ │ │ └── config.js # 全局配置
26
+ │ │
27
+ │ ├── common/ # 通用文件目录
28
+ │ │ └── css/
29
+ │ │ └── common.extend # 拓展样式
30
+ │ │
31
+ │ └── static/ # 静态资源目录
32
+ │ └── [module_name]/ # 按模块存放静态资源
33
+ │ └── img_[name].png # 图片以 img_ 为前缀
34
+
35
+ ├── package.json
36
+ └── pages.json # 路由配置汇总(自动生成)
37
+ ```
38
+
39
+ ## 📄 文件组织规则
40
+
41
+ ### 1. 页面文件组织
42
+
43
+ 每个业务模块应包含以下文件:
44
+
45
+ | 文件 | 必需 | 说明 |
46
+ | ------------------------ | ---- | ------------------------ |
47
+ | `[module_name].vue` | ✅ | 页面主组件 |
48
+ | `css/[module_name].scss` | ✅ | 页面样式(禁止内联样式) |
49
+ | `router.js` | ✅ | 路由配置 |
50
+ | `store.js/store.ts` | ❌ | 状态管理(按需) |
51
+ | `mock.js` | ❌ | Mock 数据(开发阶段) |
52
+ | `images/` | ❌ | 模块专用图片资源 |
53
+
54
+ ### 2. 样式文件分离
55
+
56
+ **规则**:Vue 文件中禁止直接编写 CSS 代码
57
+
58
+ ```
59
+ src/pages/login/
60
+ ├── login.vue # 页面组件
61
+ └── css/
62
+ └── login.scss # 对应的样式文件
63
+ ```
64
+
65
+ **Vue 文件中引用方式**:
66
+
67
+ ```vue
68
+ <!-- style 标签与 script 标签同级 -->
69
+ <style lang="scss" scoped>
70
+ @import "./css/login.scss";
71
+ </style>
72
+ ```
73
+
74
+ ### 3. 静态资源存放
75
+
76
+ ```
77
+ static/
78
+ ├── notice/ # 与路由模块同名
79
+ │ ├── img_banner.png # 以 img_ 为前缀
80
+ │ └── img_icon.png
81
+ └── login/
82
+ └── img_logo.png
83
+ ```
84
+
85
+ **引用方式**:
86
+
87
+ ```html
88
+ <image src="/static/notice/img_banner.png" />
89
+ ```
90
+
91
+ ## 🔒 强制规则
92
+
93
+ | 规则 | 说明 |
94
+ | ---------------- | -------------------- |
95
+ | 样式必须分离 | Vue 文件禁止内联 CSS |
96
+ | 使用 scoped 样式 | 避免全局样式污染 |
97
+ | 模块化存放 | 按模块组织文件 |
98
+ | 统一命名 | 同模块文件名保持一致 |
99
+
100
+ ## ✅ 检查清单
101
+
102
+ - [ ] 页面组件放置在 `src/pages/[module_name]/` 下
103
+ - [ ] 样式文件放置在 `css/` 子目录
104
+ - [ ] 静态资源放置在 `static/[module_name]/` 下
105
+ - [ ] 图片命名以 `img_` 为前缀
106
+ - [ ] 路由配置在 `router.js` 中定义