@modern-js/main-doc 2.0.0-beta.4 → 2.0.0-beta.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +8 -3
  3. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +33 -8
  4. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/serve.md +32 -0
  5. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/server.md +31 -0
  6. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +4 -3
  7. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/create-app.md +2 -3
  8. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-module-apps.md +1 -1
  9. package/en/docusaurus-plugin-content-docs/current/components/init-app.md +1 -1
  10. package/en/docusaurus-plugin-content-docs/current/configure/app/builder-plugins.md +70 -0
  11. package/en/docusaurus-plugin-content-docs/current/configure/app/dev/with-master-app.md +0 -1
  12. package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +11 -5
  13. package/en/docusaurus-plugin-content-docs/current/configure/app/source/disable-entry-dirs.md +38 -0
  14. package/en/docusaurus-plugin-content-docs/current/configure/app/source/entries.md +66 -2
  15. package/en/docusaurus-plugin-content-docs/current/configure/app/tools/esbuild.md +1 -1
  16. package/en/docusaurus-plugin-content-docs/current/guides/concept/entries.md +1 -1
  17. package/en/docusaurus-plugin-content-docs/current/guides/get-started/quick-start.md +3 -3
  18. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/_category_.json +4 -0
  19. package/en/docusaurus-plugin-content-docs/current/guides/{concept → topic-detail/framework-plugin}/lifecycle.md +0 -0
  20. package/package.json +3 -3
  21. package/zh/apis/app/commands/dev.md +9 -4
  22. package/zh/apis/app/commands/inspect.md +34 -9
  23. package/zh/apis/app/commands/{start.md → serve.md} +3 -3
  24. package/zh/apis/app/hooks/src/index_.md +1 -1
  25. package/zh/apis/app/hooks/src/server.md +31 -0
  26. package/zh/apis/app/runtime/core/bootstrap.md +3 -4
  27. package/zh/apis/app/runtime/core/create-app.md +1 -18
  28. package/zh/apis/app/runtime/core/use-module-apps.md +64 -33
  29. package/zh/apis/app/runtime/web-server/hook.md +1 -1
  30. package/zh/apis/app/runtime/web-server/middleware.md +1 -0
  31. package/zh/components/default-mwa-generate.md +5 -0
  32. package/zh/components/deploy.md +1 -0
  33. package/zh/components/enable-micro-frontend.md +13 -0
  34. package/zh/components/init-app.md +2 -2
  35. package/zh/components/micro-runtime-config.md +18 -0
  36. package/zh/components/prerequisites.md +2 -2
  37. package/zh/components/release-note.md +1 -0
  38. package/zh/configure/app/builder-plugins.md +72 -0
  39. package/zh/configure/app/deploy/_category_.json +4 -0
  40. package/zh/configure/app/deploy/microFrontend.md +64 -0
  41. package/zh/configure/app/dev/with-master-app.md +0 -2
  42. package/zh/configure/app/plugins.md +10 -4
  43. package/zh/configure/app/runtime/master-app.md +33 -36
  44. package/zh/configure/app/source/disable-entry-dirs.md +37 -0
  45. package/zh/configure/app/source/entries-dir.md +0 -3
  46. package/zh/configure/app/source/entries.md +66 -3
  47. package/zh/guides/advanced-features/compatibility.md +12 -1
  48. package/zh/guides/advanced-features/eslint.md +21 -21
  49. package/zh/guides/advanced-features/ssg.md +14 -3
  50. package/zh/guides/advanced-features/ssr.md +1 -1
  51. package/zh/guides/advanced-features/testing.md +11 -0
  52. package/zh/guides/advanced-features/web-server.md +12 -1
  53. package/zh/guides/basic-features/css/tailwindcss.md +11 -0
  54. package/zh/guides/basic-features/data-fetch.md +398 -5
  55. package/zh/guides/basic-features/routes.md +35 -3
  56. package/zh/guides/concept/entries.md +104 -14
  57. package/zh/guides/get-started/quick-start.md +8 -5
  58. package/zh/guides/get-started/upgrade.md +3 -1
  59. package/zh/guides/{concept → topic-detail/framework-plugin}/lifecycle.md +0 -0
  60. package/zh/guides/topic-detail/micro-frontend/c01-introduction.md +29 -0
  61. package/zh/guides/topic-detail/micro-frontend/c02-development.md +191 -0
  62. package/zh/guides/topic-detail/micro-frontend/c03-main-app.md +246 -0
  63. package/zh/guides/topic-detail/micro-frontend/c04-communicate.md +54 -0
  64. package/zh/guides/topic-detail/micro-frontend/{mixed-stack.md → c05-mixed-stack.md} +3 -3
  65. package/zh/guides/topic-detail/monorepo/create-sub-project.md +2 -2
  66. package/zh/tutorials/first-app/c01-start.md +9 -4
  67. package/zh/tutorials/first-app/c03-css.md +19 -0
  68. package/zh/tutorials/first-app/c04-routes.md +4 -4
  69. package/zh/tutorials/first-app/c05-loader.md +3 -3
  70. package/zh/tutorials/first-app/c06-model.md +19 -19
  71. package/zh/tutorials/first-app/c07-container.md +38 -23
  72. package/zh/tutorials/first-app/c08-entries.md +4 -1
  73. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +0 -32
  74. package/zh/guides/advanced-features/custom-app.md +0 -70
  75. package/zh/guides/topic-detail/micro-frontend/communicate.md +0 -39
  76. package/zh/guides/topic-detail/micro-frontend/debugging.md +0 -168
  77. package/zh/guides/topic-detail/micro-frontend/introduction.md +0 -13
  78. package/zh/guides/topic-detail/micro-frontend/route-mode.md +0 -110
@@ -10,7 +10,6 @@ sidebar_label: entries
10
10
 
11
11
  如需自定义构建入口时,可以通过该选项指定。
12
12
 
13
-
14
13
  ## String 类型
15
14
 
16
15
  当值为 `string` 类型时,为入口的文件路径:
@@ -28,9 +27,33 @@ export default defineConfig({
28
27
  });
29
28
  ```
30
29
 
31
- 自定义的入口,只需要默认导出 `App`, Modern.js 会生成真正的入口文件。
30
+ 默认情况下,配置的入口等价于 `App.[jt]sx`,即指定的入口文件只需要导出应用的根组件。
31
+
32
+ 例如以下目录结构:
33
+
34
+ ```bash
35
+ .
36
+ ├── src
37
+ │ └── entry
38
+ │ ├── chat.tsx
39
+ │ └── home.tsx
40
+ └── package.json
41
+ ```
42
+
43
+ 结合上面默认入口机制的内容,Modern.js 在分析上述目录结构时,不会得到任何默认入口。
32
44
 
33
- 需要关闭这一行为时,可以将值设为 `Object`,属性 `disableMount` 设置为 `true`。
45
+ 在不想改变目录结构的情况下(如项目迁移),可以通过 `source.entries` 自定义入口:
46
+
47
+ ```ts title="modern.config.js"
48
+ export default defineConfig({
49
+ source: {
50
+ entries: {
51
+ home: './src/entry/home.tsx',
52
+ chat: './src/entry/chat.tsx',
53
+ },
54
+ },
55
+ });
56
+ ```
34
57
 
35
58
  ## Object 类型
36
59
 
@@ -60,3 +83,43 @@ export default defineConfig({
60
83
  },
61
84
  });
62
85
  ```
86
+
87
+ 默认情况下,配置的入口等价于 `App.[jt]sx`,如果希望该入口等价于构建模式下的入口,可以将属性 `disableMount` 设置为 `true`。
88
+
89
+
90
+ ## 自定义入口和默认入口合并
91
+
92
+ 在指定 `source.entries` 后,Modern.js 会将用户自定义的入口与分析目录结构得到的默认入口合并。合并规则为:
93
+
94
+ 比较自定义入口设置的入口路径和默认入口路径,当入口路径一致时,自定义入口会覆盖默认入口。
95
+
96
+ 例如以下目录结构:
97
+
98
+ ```
99
+ .
100
+ ├── src
101
+ │ ├── chat
102
+ │ │ └── App.jsx
103
+ │ └── home
104
+ │ └── index.js
105
+ └── package.json
106
+ ```
107
+
108
+ Modern.js 分析 `src/` 目录,得到默认入口 `chat` 和 `home`。当用户在 `modern.config.js` 文件中配置如下时:
109
+
110
+ ```ts title="modern.config.ts"
111
+ import { defineConfig } from '@modern-js/app-tools';
112
+
113
+ export default defineConfig({
114
+ source: {
115
+ entries: {
116
+ index: './src/home/index.js',
117
+ },
118
+ },
119
+ };
120
+ ```
121
+
122
+ 可以看到自定义入口 `index` 的路径和默认入口 `home` 的路径一致,在合并的过程中,`index` 会覆盖掉 `home`,最终入口如下:
123
+
124
+ - `chat -> ./src/chat/App.jsx`
125
+ - `index -> ./src/home/index.js`
@@ -29,7 +29,18 @@ Modern.js 中还提供了基于浏览器 [UA](https://developer.mozilla.org/zh-C
29
29
  ? 启用可选功能 启用「基于 UA 的 Polyfill」功能
30
30
  ```
31
31
 
32
- 安装依赖后,配置 `output.polyfill` `ua` 并且执行 `pnpm run build && pnpm run start` 启动服务器后,访问页面可以看到 HTML 产物中包含如下脚本:
32
+ 执行命令后,在 `modern.config.ts` 中注册 Polyfill 插件:
33
+
34
+ ```ts title="modern.config.ts"
35
+ import PolyfillPlugin from '@modern-js/plugin-polyfill';
36
+ // https://modernjs.dev/docs/apis/app/config
37
+ export default defineConfig({
38
+ ...,
39
+ plugins: [..., PolyfillPlugin()],
40
+ });
41
+ ```
42
+
43
+ 配置 `output.polyfill` 为 `ua` 并且执行 `pnpm run build && pnpm run serve` 启动服务器后,访问页面可以看到 HTML 产物中包含如下脚本:
33
44
 
34
45
  ```js
35
46
  <script src="/__polyfill__" crossorigin></script>
@@ -49,10 +49,6 @@ pnpm run lint:error
49
49
 
50
50
  【Modern.js ESLint 规则集】要求 [eslint-disable](https://eslint.org/docs/user-guide/configuring/rules#disabling-rules) 必须成对使用,必须明确表达要影响的范围,以及在这个范围内明确表达要禁用什么规则,目的是让**例外**有明确的、最小化的范围,避免 [eslint-disable](https://eslint.org/docs/user-guide/configuring/rules#disabling-rules) 被滥用,导致不属于例外的代码也被禁用了规则。
51
51
 
52
- ### 添加自定义配置
53
-
54
- <!-- 见 [如何自定义 Lint 规则](/guide/more-guides/more-about-lint#q-如何自定义-lint-规则) -->
55
-
56
52
  ## Q: 如何自定义 ESLint 规则
57
53
 
58
54
  ### 仓库根目录下 `package.json` 里的 "eslintConfig" 字段
@@ -73,7 +69,7 @@ pnpm run lint:error
73
69
 
74
70
  ```
75
71
 
76
- ### `src/.eslintrc.json` 文件
72
+ ### `src/.eslintrc.js` 文件
77
73
 
78
74
  Modern.js 的应用工程、模块工程,源代码目录里都会默认有这个配置文件,是针对 Universal JS 代码设计的。
79
75
 
@@ -83,25 +79,29 @@ Universal JS 代码是既能浏览器端也能在服务器端运行的代码。
83
79
 
84
80
  如果项目在某些规则上确实有特殊要求或不可避免的兼容问题(不是例外),可以在这里增加规则配置,该配置会优先于默认的【Modern.js ESLint 规则集】,比如:
85
81
 
86
- ```json
87
- {
88
- "extends": [
89
- "@modern-js-app"
90
- ],
91
- "rules": {
92
- "filenames/match-exported": "off"
93
- }
94
- }
82
+ ```js
83
+ // eslint-disable-next-line import/no-commonjs
84
+ module.exports = {
85
+ root: true,
86
+ extends: ['@modern-js-app'],
87
+ parserOptions: {
88
+ tsconfigRootDir: __dirname,
89
+ project: ['../tsconfig.json'],
90
+ },
91
+ rules: {
92
+ 'filenames/match-exported': 'off',
93
+ },
94
+ };
95
95
  ```
96
96
 
97
- 如果有需要,还可以继续在不同的子目录里增加 `.eslintrc.json` 文件,针对这个子目录里的代码做特殊配置:
97
+ 如果有需要,还可以继续在不同的子目录里增加 `.eslintrc.js` 文件,针对这个子目录里的代码做特殊配置:
98
98
 
99
- ```json
100
- {
101
- "rules": {
102
- "filenames/match-exported": "off"
103
- }
104
- }
99
+ ```js
100
+ module.exports = {
101
+ rules: {
102
+ 'filenames/match-exported': 'off',
103
+ },
104
+ };
105
105
  ```
106
106
 
107
107
  :::tip 提示
@@ -16,6 +16,17 @@ SSG 是构建阶段的解决方案,因此仅对生产环境有效。通过 `de
16
16
  ? 启用可选功能 启用「SSG」功能
17
17
  ```
18
18
 
19
+ 执行命令后,在 `modern.config.ts` 中注册 SSG 插件:
20
+
21
+ ```ts title="modern.config.ts"
22
+ import SSGPlugin from '@modern-js/plugin-ssg';
23
+ // https://modernjs.dev/docs/apis/app/config
24
+ export default defineConfig({
25
+ ...,
26
+ plugins: [..., SSGPlugin()],
27
+ });
28
+ ```
29
+
19
30
  SSG 在**约定式路由**和**自控式路由**下的使用方式不同。
20
31
 
21
32
  ### 在约定式路由中使用
@@ -71,7 +82,7 @@ export default defineConfig({
71
82
 
72
83
  **约定式路由**中的每一条路由,都会生成一个单独的 HTML 文件。查看 `main/index.html`,可以发现包含 `Index Page` 的文本内容,这正是 SSG 的效果。
73
84
 
74
- 执行 `pnpm run start` 启动项目后,访问页面,在浏览器我们工具的 Network 窗口,查看请求返回的文档,文档包含组件渲染后的完整页面内容。
85
+ 执行 `pnpm run serve` 启动项目后,访问页面,在浏览器我们工具的 Network 窗口,查看请求返回的文档,文档包含组件渲染后的完整页面内容。
75
86
 
76
87
  ### 在自控式路由中使用
77
88
 
@@ -111,7 +122,7 @@ export default defineConfig({
111
122
  })
112
123
  ```
113
124
 
114
- 执行 `pnpm run build` 与 `pnpm run start` 后,访问 `http://localhost:8080/about`,在 Preview 视图中可以看到页面已经完成渲染。
125
+ 执行 `pnpm run build` 与 `pnpm run serve` 后,访问 `http://localhost:8080/about`,在 Preview 视图中可以看到页面已经完成渲染。
115
126
 
116
127
  查看构建产物文件,可以看到 `dist/` 目录中,新增了一个 `main/about/index.html` 文件。
117
128
 
@@ -159,4 +170,4 @@ export default () => {
159
170
 
160
171
  执行 `pnpm run dev`,重复刷新页面,可以看到 `/foo` 页面的渲染结果不断发生变化,说明数据是在请求时获取的。
161
172
 
162
- 重新执行 `pnpm run build` 后,执行 `pnpm run start`,重复刷新页面,发现页面渲染结果始终保持同样的内容,数据在请求时不会再次获取,说明页面在编译时已经完成渲染。
173
+ 重新执行 `pnpm run build` 后,执行 `pnpm run serve`,重复刷新页面,发现页面渲染结果始终保持同样的内容,数据在请求时不会再次获取,说明页面在编译时已经完成渲染。
@@ -177,7 +177,7 @@ import { PreRender } from '@modern-js/runtime/ssr';
177
177
  <PreRender interval={5} />
178
178
  ```
179
179
 
180
- 修改后,执行 `pnpm run build && pnpm run start` 启动应用,并打开页面。
180
+ 修改后,执行 `pnpm run build && pnpm run serve` 启动应用,并打开页面。
181
181
 
182
182
  首次打开时,和之前的渲染并没有什么不同,同样存在 2s 延迟。点击刷新,页面瞬间打开,但此时,页面数据并没有因为刷新发生变化,这是因为缓存还没有过期。
183
183
 
@@ -15,6 +15,17 @@ Modern.js 默认继承了 [Jest](https://jestjs.io/) 的测试能力。
15
15
 
16
16
  执行上述命令后,`package.json` 中将会自动生成 `"test": "modern test"` 命令。
17
17
 
18
+ 在 `modern.config.ts` 中注册 Test 插件:
19
+
20
+ ```ts title="modern.config.ts"
21
+ import TestPlugin from '@modern-js/plugin-testing';
22
+ // https://modernjs.dev/docs/apis/app/config
23
+ export default defineConfig({
24
+ ...,
25
+ plugins: [..., TestPlugin()],
26
+ });
27
+ ```
28
+
18
29
  ## 测试文件
19
30
 
20
31
  Modern.js 默认识别的测试文件路径为: `<rootDir>/src/**/*.test.[jt]s?(x)` 和 `<rootDir>/tests/**/*.test.[jt]s?(x)`。
@@ -16,7 +16,18 @@ Modern.js 作为以客户端为中心的开发框架,对服务端的定制能
16
16
  ? 创建工程元素 新建「自定义 Web Server」源码目录
17
17
  ```
18
18
 
19
- 执行命令后,项目目录下会新建 `server/index.ts` 文件,自定义逻辑在这个文件中编写。
19
+ 执行命令后,在 `modern.config.ts` 中注册 Server 插件:
20
+
21
+ ```ts title="modern.config.ts"
22
+ import ServerPlugin from '@modern-js/plugin-server';
23
+ // https://modernjs.dev/docs/apis/app/config
24
+ export default defineConfig({
25
+ ...,
26
+ plugins: [..., ServerPlugin()],
27
+ });
28
+ ```
29
+
30
+ 项目目录下会新建 `server/index.ts` 文件,自定义逻辑在这个文件中编写。
20
31
 
21
32
  ## 使用 API 扩展 Web Server
22
33
 
@@ -13,6 +13,17 @@ sidebar_position: 2
13
13
  ? 启用可选功能 启用 Tailwind CSS 支持
14
14
  ```
15
15
 
16
+ 在 `modern.config.ts` 中注册 Tailwind 插件:
17
+
18
+ ```ts title="modern.config.ts"
19
+ import TailwindCSSPlugin from '@modern-js/plugin-tailwindcss';
20
+ // https://modernjs.dev/docs/apis/app/config
21
+ export default defineConfig({
22
+ ...,
23
+ plugins: [..., TailwindCSSPlugin()],
24
+ });
25
+ ```
26
+
16
27
  使用时在入口的根组件(如 `src/App.jsx`)添加如下代码:
17
28
 
18
29
  ```js