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

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 (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