neko-ui 2.6.7 → 2.7.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.
- package/CHANGELOG.md +24 -6
- package/es/@moneko/routes/index.d.ts +1 -1
- package/es/back-top/style.js +1 -3
- package/es/back-top/style.js.map +1 -1
- package/es/button/style.js.map +1 -1
- package/es/capture-screen/index.js +1 -1
- package/es/capture-screen/index.js.map +1 -1
- package/es/cron/begin-interval.d.ts +1 -0
- package/es/cron/index.js +1 -1
- package/es/cron/index.js.map +1 -1
- package/es/cron/item.d.ts +1 -0
- package/es/cron/period.d.ts +1 -0
- package/es/cron/some.d.ts +1 -0
- package/es/date-picker/index.js +1 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/img/style.js +0 -2
- package/es/img/style.js.map +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/md-style/index.js +6 -8
- package/es/md-style/index.js.map +1 -1
- package/es/modal/hooks.d.ts +5 -0
- package/es/modal/hooks.js +2 -0
- package/es/modal/hooks.js.map +1 -0
- package/es/modal/style.js +3 -4
- package/es/modal/style.js.map +1 -1
- package/es/notification/index.d.ts +59 -0
- package/es/notification/index.js +2 -0
- package/es/notification/index.js.map +1 -0
- package/es/notification/notification.d.ts +3 -0
- package/es/notification/notification.js +2 -0
- package/es/notification/notification.js.map +1 -0
- package/es/notification/queque.d.ts +46 -0
- package/es/notification/queque.js +2 -0
- package/es/notification/queque.js.map +1 -0
- package/es/notification/styles.d.ts +1 -0
- package/es/notification/styles.js +97 -0
- package/es/notification/styles.js.map +1 -0
- package/es/popover/index.js +1 -1
- package/es/popover/index.js.map +1 -1
- package/es/popover/style.js +1 -3
- package/es/popover/style.js.map +1 -1
- package/es/prism/css.js +1 -3
- package/es/prism/css.js.map +1 -1
- package/es/select/index.js +1 -1
- package/es/select/index.js.map +1 -1
- package/es/theme/index.js +10 -8
- package/es/theme/index.js.map +1 -1
- package/es/tree/index.d.ts +3 -99
- package/es/tree/index.js +1 -1
- package/es/tree/index.js.map +1 -1
- package/es/tree/register.d.ts +1 -0
- package/es/tree/register.js +2 -0
- package/es/tree/register.js.map +1 -0
- package/es/tree/type.d.ts +104 -0
- package/es/tree/type.js +2 -0
- package/es/tree/type.js.map +1 -0
- package/lib/@moneko/routes/index.d.ts +1 -1
- package/lib/back-top/style.js +1 -3
- package/lib/back-top/style.js.map +1 -1
- package/lib/button/style.js.map +1 -1
- package/lib/capture-screen/index.js +1 -1
- package/lib/capture-screen/index.js.map +1 -1
- package/lib/cron/begin-interval.d.ts +1 -0
- package/lib/cron/index.js +1 -1
- package/lib/cron/index.js.map +1 -1
- package/lib/cron/item.d.ts +1 -0
- package/lib/cron/period.d.ts +1 -0
- package/lib/cron/some.d.ts +1 -0
- package/lib/img/style.js +0 -2
- package/lib/img/style.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/md-style/index.js +6 -8
- package/lib/md-style/index.js.map +1 -1
- package/lib/modal/hooks.d.ts +5 -0
- package/lib/modal/hooks.js +2 -0
- package/lib/modal/hooks.js.map +1 -0
- package/lib/modal/style.js +3 -4
- package/lib/modal/style.js.map +1 -1
- package/lib/notification/index.d.ts +59 -0
- package/lib/notification/index.js +2 -0
- package/lib/notification/index.js.map +1 -0
- package/lib/notification/notification.d.ts +3 -0
- package/lib/notification/notification.js +2 -0
- package/lib/notification/notification.js.map +1 -0
- package/lib/notification/queque.d.ts +46 -0
- package/lib/notification/queque.js +2 -0
- package/lib/notification/queque.js.map +1 -0
- package/lib/notification/styles.d.ts +1 -0
- package/lib/notification/styles.js +97 -0
- package/lib/notification/styles.js.map +1 -0
- package/lib/popover/index.js +1 -1
- package/lib/popover/index.js.map +1 -1
- package/lib/popover/style.js +1 -3
- package/lib/popover/style.js.map +1 -1
- package/lib/prism/css.js +1 -3
- package/lib/prism/css.js.map +1 -1
- package/lib/theme/index.js +8 -6
- package/lib/theme/index.js.map +1 -1
- package/lib/tree/index.d.ts +3 -99
- package/lib/tree/index.js +1 -1
- package/lib/tree/index.js.map +1 -1
- package/lib/tree/register.d.ts +1 -0
- package/lib/tree/register.js +2 -0
- package/lib/tree/register.js.map +1 -0
- package/lib/tree/type.d.ts +104 -0
- package/lib/tree/type.js +2 -0
- package/lib/tree/type.js.map +1 -0
- package/package.json +23 -21
- package/umd/index.js +1 -1
- package/es/@introduce/api.md +0 -158
- package/es/@introduce/getting-started/api.md +0 -34
- package/es/@introduce/html/doc.md +0 -45
- package/es/@introduce/react/doc.md +0 -49
- package/es/@introduce/solid/doc.md +0 -39
- package/es/@introduce/vue/doc.md +0 -54
- package/es/@moneko/cli/doc.md +0 -211
- package/es/@moneko/config/api.md +0 -213
- package/es/@moneko/locales/doc.md +0 -130
- package/es/@moneko/mock/api.md +0 -177
- package/es/@moneko/request/api.md +0 -31
- package/es/@moneko/routes/doc.md +0 -81
- package/es/@moneko/sso/api.md +0 -158
- package/lib/@introduce/api.md +0 -158
- package/lib/@introduce/getting-started/api.md +0 -34
- package/lib/@introduce/html/doc.md +0 -45
- package/lib/@introduce/react/doc.md +0 -49
- package/lib/@introduce/solid/doc.md +0 -39
- package/lib/@introduce/vue/doc.md +0 -54
- package/lib/@moneko/cli/doc.md +0 -211
- package/lib/@moneko/config/api.md +0 -213
- package/lib/@moneko/locales/doc.md +0 -130
- package/lib/@moneko/mock/api.md +0 -177
- package/lib/@moneko/request/api.md +0 -31
- package/lib/@moneko/routes/doc.md +0 -81
- package/lib/@moneko/sso/api.md +0 -158
package/es/@moneko/config/api.md
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
[TOC]
|
|
2
|
-
|
|
3
|
-
# 配置项
|
|
4
|
-
|
|
5
|
-
!> 适用于使用 `@moneko/cli` 创建的项目
|
|
6
|
-
!> 可以在项目根目录下的 `config/` 文件夹中进行以下配置
|
|
7
|
-
|
|
8
|
-
[1]: https://swc.rs/docs/configuration/minification#jscminifycompress 'SwcOptions'
|
|
9
|
-
[2]: https://terser.org/docs/api-reference#compress-options 'TerserOptions'
|
|
10
|
-
|
|
11
|
-
## ConfigType
|
|
12
|
-
|
|
13
|
-
| 属性 | 说明 | 类型 | 默认值 |
|
|
14
|
-
| ----------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------ |
|
|
15
|
-
| clean | 清除过时的打包文件 | boolean | true |
|
|
16
|
-
| compiler | 编译方式 | swc\|tsc | swc |
|
|
17
|
-
| swcrc | swc 配置项 | SwcConfig \| ((isDev: boolean) => SwcConfig) | - |
|
|
18
|
-
| entry | 额外的 entry, 比如兼容 es10 的 object.fromentries | Record<string, string> | - |
|
|
19
|
-
| minifier | js、css 压缩配置 | { type?: swc\|tsc; options?: [SwcOptions][1] \| [TerserOptions][2]; css?: cssnano \| parcelCss} | - |
|
|
20
|
-
| env | 环境变量, 可通过 process.env 获取 | Record<string, any> | - |
|
|
21
|
-
| sourceMap | sourceMap 配置 | SourceMapDevToolPluginOptions \| false | - |
|
|
22
|
-
| devtool | devtool 配置 | Configuration['devtool'] | - |
|
|
23
|
-
| alias | 路径别名映射 | Record<string, string> | - |
|
|
24
|
-
| basename | 根路由 | string | / |
|
|
25
|
-
| publicPath | 资源根路径 | string | auto |
|
|
26
|
-
| rem | 设置与设计图相匹配的rem | {designSize: number} | {designSize: 1680} |
|
|
27
|
-
| fallbackCompPath | 自定义容错组件路径 | string | - |
|
|
28
|
-
| modifyVars | less 全局变量 | Record<string, string> | - |
|
|
29
|
-
| prefixCls | 类名前缀 | string | n |
|
|
30
|
-
| moduleRules | 自定义 webpack module rules | | - |
|
|
31
|
-
| cssModules | node_modules 中, 需要开启 cssModules 的模块 | string[] | - |
|
|
32
|
-
| importOnDemand | 按需引入 | SwcImportOnDemandTransform \| TsImportPlugin.Options | - |
|
|
33
|
-
| proxy | 服务器代理 | Record<string, string> | - |
|
|
34
|
-
| cacheDirectory | 自定义缓存目录,为 false 时,不使用缓存 | string \| false | - |
|
|
35
|
-
| devServer | 开发服务器设置 | Record<string, string> | - |
|
|
36
|
-
| assetHtml | 自定义插入 html 的 js 和 css | AssetHtmlOptions[] | - |
|
|
37
|
-
| htmlPluginOption | HtmlWebpackPlugin Option | HtmlWebpackPluginOptions | - |
|
|
38
|
-
| routerMode | 路由模式 | hash \| browser \| memory | browser |
|
|
39
|
-
| plugins | webpack 插件 | | - |
|
|
40
|
-
| splitChunk | 对生产 chunk 进行拆分 | false \| OptimizationSplitChunksOptions | - |
|
|
41
|
-
| output | 编译输出路径 | string | - |
|
|
42
|
-
| runtimeChunk | 拆分 runtime | boolean\|single \| multiple\| { name?: string \| Function }; | - |
|
|
43
|
-
| moduleFederation | 模块联邦 | ModuleFederationOption[] | - |
|
|
44
|
-
| externals | 跳过编译的模块 | string[] | - |
|
|
45
|
-
| rulesInclude | 需要进入到规则的模块或者位置 | { less?: string[]; css?: string[]; js?: string[]; media?: string[]; fonts?: string[]; } | - |
|
|
46
|
-
| bundleAnalyzer | js打包体积分析 | { analyzerMode: string; reportFilename: string; openAnalyzer: false } | - |
|
|
47
|
-
| prefixJsLoader | 解析js/ts的前置loader | - | - |
|
|
48
|
-
| bar | 是否打包显示进度条 | - | true |
|
|
49
|
-
| theme | 设置主题, 可以在 `@app/info` 中获取值 | - | - |
|
|
50
|
-
| seo | 配置seo优化 | {domain: string; nojekyll?: boolean; path?: string;} | true |
|
|
51
|
-
| done | 打包完成执行的回调 | () => void | - |
|
|
52
|
-
| mdx | mdx loader的配置项 | MDXOptions | - |
|
|
53
|
-
| jsxDomExpressions | 使用solidjs时jsx-dom-expressions的配置项 | JsxDomExpressions | - |
|
|
54
|
-
| virtualModule | 自定义虚拟模块 | Record<string, string \| object> | - |
|
|
55
|
-
| normalizeCss | 是否使用 normalize css | boolean | true |
|
|
56
|
-
|
|
57
|
-
### SwcOptions
|
|
58
|
-
|
|
59
|
-
!> [SwcOptions][1]
|
|
60
|
-
|
|
61
|
-
### TerserOptions
|
|
62
|
-
|
|
63
|
-
!> [TerserOptions][2]
|
|
64
|
-
|
|
65
|
-
## 按需导入 `swc`
|
|
66
|
-
|
|
67
|
-
!> 使用 swc 时的按需导入配置 importOnDemand: { '库名': {...配置项} }
|
|
68
|
-
|
|
69
|
-
### SwcImportOnDemandTransform
|
|
70
|
-
|
|
71
|
-
| 属性 | 说明 | 类型 | 默认值 |
|
|
72
|
-
| --------------------- | ------------------------------------------------------------------------------- | --------------------- | ------- |
|
|
73
|
-
| transform | 要使用的库名称,而不是导入语句中指定的库名称。`${member}` 是替换的成员 | string | - |
|
|
74
|
-
| style | 设置转换时需要单独导入的样式,`${member}` 是替换的成员 | `string` \|`boolean` | `false` |
|
|
75
|
-
| skipDefaultConversion | 当设置为 true 时,将保留 `import { Button }` 语法,而不是转换为 `import Button` | boolean | `false` |
|
|
76
|
-
| preventFullImport | 当遇到会导致导入整个模块时,是否抛出 | boolean | `true` |
|
|
77
|
-
| memberTransformers | 成员转换规则 | `MemberTransformer`[] | [] |
|
|
78
|
-
|
|
79
|
-
### MemberTransformer
|
|
80
|
-
|
|
81
|
-
| 属性 | 说明 |
|
|
82
|
-
| ----------- | ---------------------------------------------------------------------------------------------------------- |
|
|
83
|
-
| pascal_case | 帕斯卡拼写法(大驼峰): 所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 |
|
|
84
|
-
| camel_case | 骆驼拼写法(小驼峰): 第一个单词的首字母小写, 后续所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 |
|
|
85
|
-
| kebab_case | 连字符拼写法: 各个单词或缩写之间以`-`做间隔 |
|
|
86
|
-
| dashed_case | 破折号式: 每个单词全小写或全大写,多单词使用`-`隔开 |
|
|
87
|
-
| snake_case | 蛇形命名: 每个单词全小写或全大写,多单词使用`_`隔开 |
|
|
88
|
-
|
|
89
|
-
### 配置案例 MemberTransformer
|
|
90
|
-
|
|
91
|
-
```javascript
|
|
92
|
-
const conf = {
|
|
93
|
-
importOnDemand: {
|
|
94
|
-
/** 库名 */
|
|
95
|
-
lodash: {
|
|
96
|
-
transform: '${member}',
|
|
97
|
-
},
|
|
98
|
-
/** 库名 */
|
|
99
|
-
antd: {
|
|
100
|
-
transform: 'es/${member}',
|
|
101
|
-
style: 'es/${member}/style',
|
|
102
|
-
memberTransformers: ['dashed_case'],
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
// 以下代码将会按照预期进行转换
|
|
107
|
-
import { BackTop } from 'antd';
|
|
108
|
-
import { isFunction } from 'lodash';
|
|
109
|
-
// to
|
|
110
|
-
import BackTop from 'antd/es/back-top';
|
|
111
|
-
import 'antd/es/back-top/style';
|
|
112
|
-
import isFunction from 'lodash/isFunction';
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## 模块联邦
|
|
116
|
-
|
|
117
|
-
!> Webpack5 Module Federation
|
|
118
|
-
|
|
119
|
-
### ModuleFederationOption
|
|
120
|
-
|
|
121
|
-
| 属性 | 说明 | 类型 | 默认值 |
|
|
122
|
-
| -------- | ---------------------------------------------- | ---------------------------------------------------- | ----------------- |
|
|
123
|
-
| name | 模块名称,唯一性,不能重名 | string | - |
|
|
124
|
-
| filename | 打包的模块文件名 | string | `remote_entry.js` |
|
|
125
|
-
| name | 模块名称,唯一性,不能重名 | string | - |
|
|
126
|
-
| remotes | 表示作为 Host 时, 去消费哪些 Remote | `ModuleFederationRemotes`[] | - |
|
|
127
|
-
| exposes | 当前模块具体导出去的内容 | `string` \| { name: `string`; path: `string`; } | - |
|
|
128
|
-
| shared | 优先用 Host 的依赖, 如果 Host 没有, 再用自己的 | `Record<string, SharedConfig \| string>`\|`string`[] | - |
|
|
129
|
-
| library | library | { type: `var` \| `string`; name: `string`; } | - |
|
|
130
|
-
| runtime | runtime | string | - |
|
|
131
|
-
|
|
132
|
-
### ModuleFederationRemotes
|
|
133
|
-
|
|
134
|
-
| 属性 | 说明 | 类型 | 默认值 |
|
|
135
|
-
| -------- | ---------------------- | ---------- | ----------------- |
|
|
136
|
-
| name | 远程模块名称 | string | - |
|
|
137
|
-
| filename | 远程模块文件名 | string | `remote_entry.js` |
|
|
138
|
-
| host | 远程模块访问地址 | string | - |
|
|
139
|
-
| alias | 远程模块别名 | string | - |
|
|
140
|
-
| library | 从此模块加载的 library | `string`[] | - |
|
|
141
|
-
|
|
142
|
-
### SharedConfig
|
|
143
|
-
|
|
144
|
-
| 属性 | 说明 | 类型 | 默认值 |
|
|
145
|
-
| --------------- | ---------------------------------------------------------------------------------------------------------------------- | ------- | ------ |
|
|
146
|
-
| eager | 直接在异步请求后面包含提供的和后备模块,这也允许在初始加载中使用此共享模块,所有可能的共享模块也都需要急切 | boolean | - |
|
|
147
|
-
| import | 应提供共享范围的提供的模块,如果在共享作用域中找不到共享模块或版本无效,则还充当回退模块,默认为属性名称 | number | - |
|
|
148
|
-
| packageName | 软件包名称,用于从描述文件中确定所需的版本,仅当无法根据请求自动确定包名称时才需要 | string | - |
|
|
149
|
-
| requiredVersion | 共享范围中来自模块的版本要求 | number | - |
|
|
150
|
-
| shareKey | 在共享范围内的此键下查找模块 | string | - |
|
|
151
|
-
| shareScope | 共享范围名称 | string | - |
|
|
152
|
-
| singleton | 在共享范围内仅允许共享模块的单个版本(默认情况下处于禁用状态) | boolean | - |
|
|
153
|
-
| strictVersion | 如果版本无效,则不接受共享模块(默认为是,如果本地后备模块可用并且共享模块不是单例,否则为 no,如果未指定所需的版本,则无效) | boolean | - |
|
|
154
|
-
| version | 所提供模块的版本,将替换较低的匹配版本,但不会替换较高的版本 | number | - |
|
|
155
|
-
|
|
156
|
-
### 配置案例 moduleFederation
|
|
157
|
-
|
|
158
|
-
```javascript
|
|
159
|
-
import type { ConfigType } from '@moneko/core';
|
|
160
|
-
|
|
161
|
-
const PACKAGENAME = process.env.npm_package_name; // 当前package.json中的name
|
|
162
|
-
const config: Partial<ConfigType> = {
|
|
163
|
-
htmlPluginOption: {
|
|
164
|
-
tags: [
|
|
165
|
-
{
|
|
166
|
-
textContent: `window.__RemoteEntry__={
|
|
167
|
-
// 比如你已经构建了一个 sharedLibrary 作为模块联邦的共享库
|
|
168
|
-
sharedLibrary: '//可以访问 sharedLibrary 的链接'
|
|
169
|
-
};`,
|
|
170
|
-
},
|
|
171
|
-
],
|
|
172
|
-
},
|
|
173
|
-
moduleFederation: [
|
|
174
|
-
{
|
|
175
|
-
name: PACKAGENAME.replace(/-/g, '_'),
|
|
176
|
-
remotes: [
|
|
177
|
-
{
|
|
178
|
-
name: 'sharedLibrary',
|
|
179
|
-
host: '[window.__RemoteEntry__.sharedLibrary]',
|
|
180
|
-
// 下面的这些模块在将通过网络使用sharedLibrary中的资源,而不是本地
|
|
181
|
-
library: ['react', 'react-dom', 'react-router', 'react-router-dom', 'antd'],
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
},
|
|
185
|
-
],
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
export default config;
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## 自定义模块解析规则
|
|
192
|
-
|
|
193
|
-
```javascript
|
|
194
|
-
// config/index.ts
|
|
195
|
-
export default {
|
|
196
|
-
moduleRules: [
|
|
197
|
-
{
|
|
198
|
-
test: /\.aaa$/,
|
|
199
|
-
type: 'assets',
|
|
200
|
-
exclude: [/node_modules/],
|
|
201
|
-
},
|
|
202
|
-
],
|
|
203
|
-
};
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
## 自定义 ts-loader 配置
|
|
207
|
-
|
|
208
|
-
!> 在项目根目录下创建一个 tsloader.config.ts
|
|
209
|
-
|
|
210
|
-
```javascript
|
|
211
|
-
// tsloader.config.ts
|
|
212
|
-
export default {};
|
|
213
|
-
```
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
[TOC]
|
|
2
|
-
|
|
3
|
-
# 文本国际化
|
|
4
|
-
|
|
5
|
-
> 通过内置的虚拟模块 @app/locales 进行文本国际化;
|
|
6
|
-
> 国际化内容依赖项目目录下的 `src/locales` 文件夹内容自动生成
|
|
7
|
-
> 一个文件对应一种语言, 默认语言名称为文件名
|
|
8
|
-
|
|
9
|
-
<div style="display:flex;gap: 16px;">
|
|
10
|
-
|
|
11
|
-
<div>
|
|
12
|
-
|
|
13
|
-
```treeview
|
|
14
|
-
项目根目录
|
|
15
|
-
`-- src
|
|
16
|
-
`-- locales
|
|
17
|
-
|-- zh-CN.ts
|
|
18
|
-
`-- en.ts
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
// zh-CN.ts
|
|
25
|
-
import type { LocaleConfig } from '@app/locales';
|
|
26
|
-
|
|
27
|
-
const en: LocaleConfig = {
|
|
28
|
-
title: '中文',
|
|
29
|
-
translation: {
|
|
30
|
-
home: '首页',
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export default en;
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
```ts
|
|
38
|
-
// en.ts
|
|
39
|
-
import type { LocaleConfig } from '@app/locales';
|
|
40
|
-
|
|
41
|
-
const en: LocaleConfig = {
|
|
42
|
-
language: 'en_US', // 自定义语言名称
|
|
43
|
-
title: '英文',
|
|
44
|
-
translation: {
|
|
45
|
-
home: 'Home',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export default en;
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
## 使用
|
|
55
|
-
|
|
56
|
-
> 或参考 [demo](https://github.com/monako97/demo-micro-app-solid)
|
|
57
|
-
|
|
58
|
-
```ts
|
|
59
|
-
import { setLang, t } from '@app/locales';
|
|
60
|
-
|
|
61
|
-
console.log(t.home); // 首页
|
|
62
|
-
setLang('en_US');
|
|
63
|
-
console.log(t.home); // Home
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## 语言列表
|
|
67
|
-
|
|
68
|
-
!> 通过 `locales` 获取当前项目的语言列表
|
|
69
|
-
|
|
70
|
-
```ts
|
|
71
|
-
import { locales } from '@app/locales';
|
|
72
|
-
|
|
73
|
-
console.log(locales);
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## 插值字符串
|
|
77
|
-
|
|
78
|
-
!> 通过 `interpolateString` 方法进行插值字符串转换; 替换字符串中的占位符 `${}` 为对应的值
|
|
79
|
-
|
|
80
|
-
```ts
|
|
81
|
-
import { interpolateString } from '@app/locales';
|
|
82
|
-
|
|
83
|
-
interpolateString('`The length is ${val} characters!`', { val: 62 });
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## 修改语言
|
|
87
|
-
|
|
88
|
-
!> 使用 `setLang` 方法修改语言
|
|
89
|
-
|
|
90
|
-
```ts
|
|
91
|
-
import { setLang } from '@app/locales';
|
|
92
|
-
|
|
93
|
-
setLang('zh_CN');
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## 使用的语言
|
|
97
|
-
|
|
98
|
-
!> 使用 `lang` 获取当前使用的语言
|
|
99
|
-
|
|
100
|
-
```ts
|
|
101
|
-
import { lang } from '@app/locales';
|
|
102
|
-
|
|
103
|
-
console.log(lang);
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## 映射
|
|
107
|
-
|
|
108
|
-
!> 使用 `t` 获取对应字典的当前语言文本
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
import { t } from '@app/locales';
|
|
112
|
-
|
|
113
|
-
console.log(t['password-fap']);
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## 设置语种
|
|
117
|
-
|
|
118
|
-
!> 通过 `setLocalizable` 设置或修改一个新的语种(滞后/更新), 可用于线上紧急更新文案
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
import { setLocalizable } from '@app/locales';
|
|
122
|
-
|
|
123
|
-
setLocalizable('lang', {
|
|
124
|
-
language: 'zh-HK',
|
|
125
|
-
title: '繁体中文',
|
|
126
|
-
});
|
|
127
|
-
setLocalizable('t', {
|
|
128
|
-
'password-fap': '这是更新后的文本',
|
|
129
|
-
});
|
|
130
|
-
```
|
package/es/@moneko/mock/api.md
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
[TOC]
|
|
2
|
-
|
|
3
|
-
# @moneko/mock
|
|
4
|
-
|
|
5
|
-
!> 在项目启动目录 mock 文件夹下创建 mock 脚本,达到模拟响应数据的效果
|
|
6
|
-
|
|
7
|
-
## 函数方式
|
|
8
|
-
|
|
9
|
-
!> (req: RequestFormData, res: Response) => void
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
import type { MockConfiguration } from '@moneko/mock';
|
|
13
|
-
|
|
14
|
-
const conf: MockConfiguration = {
|
|
15
|
-
'GET /api/account': (req, res) => {
|
|
16
|
-
const resp = {
|
|
17
|
-
success: true,
|
|
18
|
-
message: '请求成功',
|
|
19
|
-
result: {
|
|
20
|
-
inme: '人大',
|
|
21
|
-
effte: '2022/7/1',
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
res.status(200).send(resp);
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export default conf;
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### 获取 Restful Api 参数
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
import type { MockConfiguration } from '@moneko/mock';
|
|
36
|
-
|
|
37
|
-
const conf: MockConfiguration = {
|
|
38
|
-
'GET /api/account/:id': (req, res) => {
|
|
39
|
-
const resp = {
|
|
40
|
-
success: true,
|
|
41
|
-
message: '请求成功',
|
|
42
|
-
result: {
|
|
43
|
-
id: req.params.id,
|
|
44
|
-
csaa: '人额',
|
|
45
|
-
currency: req.params.id,
|
|
46
|
-
effee: '2022/7/1',
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
res.status(200).send(resp);
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export default conf;
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 获取 POST 请求体数据
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
import type { MockConfiguration } from '@moneko/mock';
|
|
61
|
-
|
|
62
|
-
const conf: MockConfiguration = {
|
|
63
|
-
'POST /api/login_by_username': (req, res) => {
|
|
64
|
-
const resp = {
|
|
65
|
-
status: 200,
|
|
66
|
-
message: '请求成功',
|
|
67
|
-
result: {
|
|
68
|
-
password: req.body.password,
|
|
69
|
-
username: req.body.username,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
res.status(resp.status).send(resp);
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export default conf;
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 模拟上传文件,返回文件 base64
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
import type { MockConfiguration } from '@moneko/core';
|
|
84
|
-
|
|
85
|
-
const conf: MockConfiguration = {
|
|
86
|
-
'POST /api/upload_file': (req, res) => {
|
|
87
|
-
const { files } = req;
|
|
88
|
-
|
|
89
|
-
const strBase64 = Buffer.from(files[0].buffer).toString('base64');
|
|
90
|
-
|
|
91
|
-
const resp = {
|
|
92
|
-
status: 200,
|
|
93
|
-
message: '上传成功',
|
|
94
|
-
result: 'data:image/jpeg;base64,' + strBase64,
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
res.status(resp.status).send(resp);
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
export default conf;
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### 使用 YApi JSON Schema 生成数据
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
import { yApiSchemaMock } from '@moneko/mock';
|
|
108
|
-
import type { MockConfiguration } from '@moneko/mock';
|
|
109
|
-
|
|
110
|
-
const getYApiOption = (id: string) => {
|
|
111
|
-
return {
|
|
112
|
-
// yapi host
|
|
113
|
-
host: 'http://yapihost',
|
|
114
|
-
// yapi open api token
|
|
115
|
-
token: 'yapi open api token',
|
|
116
|
-
// yapi 接口id
|
|
117
|
-
id,
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
const conf: MockConfiguration = {
|
|
122
|
-
'POST /getids/list': async (req, res) => {
|
|
123
|
-
const mockData = await yApiSchemaMock(getYApiOption('7610'), {
|
|
124
|
-
result: {
|
|
125
|
-
page: req.body.pageNum,
|
|
126
|
-
itemsPerPage: req.body.pageSize,
|
|
127
|
-
keyword: req.body.keyword,
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
res.status(200).send(mockData);
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
export default conf;
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### 使用 YApi 高级 Mock
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
import { yApiMock } from '@moneko/mock';
|
|
142
|
-
import type { MockConfiguration, YApiOption } from '@moneko/mock';
|
|
143
|
-
|
|
144
|
-
const yApi: YApiOption = {
|
|
145
|
-
// yapi host
|
|
146
|
-
host: 'http://yapihost:8080',
|
|
147
|
-
projectId: 143,
|
|
148
|
-
pathRewrite: '^/api/',
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
const conf: MockConfiguration = {
|
|
152
|
-
'POST /api/getids/list': async (req, res) => {
|
|
153
|
-
// 此时 mockData 将是来自 POST http://yapihost:8080/mock/143/getids/list 响应的数据
|
|
154
|
-
const resp = await yApiMock(req, yApi);
|
|
155
|
-
|
|
156
|
-
res.status(200).send(resp);
|
|
157
|
-
},
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
export default conf;
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## KV 方式
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
import type { MockConfiguration } from '@moneko/mock';
|
|
167
|
-
|
|
168
|
-
const conf: MockConfiguration = {
|
|
169
|
-
'POST /api/use/fun': {
|
|
170
|
-
status: 200,
|
|
171
|
-
message: '上传成功',
|
|
172
|
-
effectiveDate: '2022/7/1',
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
export default conf;
|
|
177
|
-
```
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
[TOC]
|
|
2
|
-
|
|
3
|
-
# @moneko/request
|
|
4
|
-
|
|
5
|
-
> 数据请求
|
|
6
|
-
|
|
7
|
-
## 设置响应拦截器、请求前缀
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
// @/services/index.ts
|
|
11
|
-
import { extend } from '@moneko/request';
|
|
12
|
-
export { request } from '@moneko/request';
|
|
13
|
-
|
|
14
|
-
extend({
|
|
15
|
-
interceptor: {
|
|
16
|
-
response: (resp) => resp,
|
|
17
|
-
},
|
|
18
|
-
prefixUrl: '/api',
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 调用 request 案例
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
import { request } from '@/services';
|
|
26
|
-
|
|
27
|
-
// 实际访问 /api/list
|
|
28
|
-
export const getApi = () => request('/list');
|
|
29
|
-
// 实际访问 /api/list
|
|
30
|
-
export const postApi = (params = {}) => request('/list', { data: params, method: 'POST' });
|
|
31
|
-
```
|
package/es/@moneko/routes/doc.md
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
[TOC]
|
|
2
|
-
|
|
3
|
-
# 约定式路由
|
|
4
|
-
|
|
5
|
-
> 通过内置的虚拟模块 @app/routes 获取约定式路由, 在编译期间动态生成,均采用懒加载;
|
|
6
|
-
|
|
7
|
-
1. 路由根据 `src/pages` 文件夹内的 `index.ts` 和 `index.tsx` 路径信息自动生成
|
|
8
|
-
2. 比如 `src/pages/user/index.tsx` 会生成一个 path 为 `/user/:id` 的路由
|
|
9
|
-
3. 文件夹名称以 `$` 开头将创建为动态路由
|
|
10
|
-
4. 比如 `src/pages/user/$id/index.tsx` 会生成一个 path 为 `/user/:id` 的动态路由
|
|
11
|
-
|
|
12
|
-
<div style="display:flex;gap: 16px;align-items:center;">
|
|
13
|
-
|
|
14
|
-
<div>
|
|
15
|
-
|
|
16
|
-
```treeview
|
|
17
|
-
项目根目录
|
|
18
|
-
`-- src
|
|
19
|
-
`-- pages
|
|
20
|
-
|-- user
|
|
21
|
-
| |-- $id
|
|
22
|
-
| | `-- index.tsx
|
|
23
|
-
| `-- index.tsx
|
|
24
|
-
`-- index.tsx
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
将创建出以下路由
|
|
30
|
-
|
|
31
|
-
1. `/`
|
|
32
|
-
2. `/user`
|
|
33
|
-
3. `/user/:id`
|
|
34
|
-
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
## 使用
|
|
38
|
-
|
|
39
|
-
> 或参考 [demo](https://github.com/monako97/demo-micro-app-solid)
|
|
40
|
-
|
|
41
|
-
## 读取路由数据
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
import routes from '@app/routes';
|
|
45
|
-
|
|
46
|
-
console.log(routes);
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## 自定义路由
|
|
50
|
-
|
|
51
|
-
!> 当创建的约定式路由不足以满足您的需求时, 您可以通过创建 `src/router/index.ts` 来对其进行补充, 最终通过 `@app/routes` 获取的数据将是合并后的路由数据
|
|
52
|
-
|
|
53
|
-
```js
|
|
54
|
-
// src/router/index.ts
|
|
55
|
-
import { lazy } from 'solid-js';
|
|
56
|
-
import type { RouteConfig } from '@app/routes';
|
|
57
|
-
|
|
58
|
-
const router: RouteConfig[] = [
|
|
59
|
-
{
|
|
60
|
-
path: '/',
|
|
61
|
-
// 补充路由
|
|
62
|
-
component: lazy(() => import('@/layout')),
|
|
63
|
-
children: [
|
|
64
|
-
// 自定义路由
|
|
65
|
-
{
|
|
66
|
-
path: 'about',
|
|
67
|
-
children: [
|
|
68
|
-
{
|
|
69
|
-
path: '/',
|
|
70
|
-
component: lazy(() => import('@/pages/home')),
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
|
-
|
|
78
|
-
export default router;
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
> React 应用与 Solid应用稍有差别, 具体可参考 [React demo](https://github.com/monako97/demo-micro-app-react) 和 [Solid demo](https://github.com/monako97/demo-micro-app-solid)
|