@modern-js/main-doc 2.0.0-beta.3 → 2.0.0-beta.4
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/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +0 -4
- package/en/docusaurus-plugin-content-docs/current/components/init-app.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/routes.md +2 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/esbuild.md +16 -39
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-in-js.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-modules.md +86 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/less-sass.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/postcss.md +81 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/tailwindcss.md +95 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/data-fetch.md +66 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/routes.md +270 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/entries.md +116 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/lifecycle.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/quick-start.md +162 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/upgrade.md +78 -0
- package/{zh/tutorials/first-app → en/docusaurus-plugin-content-docs/current/guides}/overview.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current.json +11 -11
- package/package.json +3 -3
- package/zh/apis/app/commands/inspect.md +0 -4
- package/zh/apis/app/commands/new.md +1 -1
- package/zh/apis/app/hooks/src/index_.md +6 -5
- package/zh/components/debug-app.md +18 -0
- package/zh/components/global-proxy.md +28 -0
- package/zh/components/init-app.md +44 -0
- package/zh/components/prerequisites.md +19 -0
- package/zh/configure/app/server/routes.md +2 -4
- package/zh/configure/app/tools/esbuild.md +16 -39
- package/zh/guides/advanced-features/bff/bff-proxy.md +1 -1
- package/zh/guides/advanced-features/compatibility.md +2 -38
- package/zh/guides/advanced-features/custom-app.md +15 -17
- package/zh/guides/advanced-features/ssg.md +6 -6
- package/zh/guides/advanced-features/ssr.md +94 -51
- package/zh/guides/advanced-features/testing.md +33 -1
- package/zh/guides/advanced-features/web-server.md +2 -2
- package/zh/guides/basic-features/css/tailwindcss.md +2 -6
- package/zh/guides/basic-features/html.md +182 -0
- package/zh/guides/basic-features/mock.md +3 -9
- package/zh/guides/basic-features/proxy.md +2 -27
- package/zh/guides/concept/entries.md +4 -5
- package/zh/guides/get-started/quick-start.md +6 -78
- package/zh/guides/get-started/upgrade.md +8 -8
- package/zh/guides/topic-detail/model/quick-start.md +1 -1
- package/zh/guides/topic-detail/model/test-model.md +2 -2
- package/zh/guides/topic-detail/monorepo/intro.md +1 -1
- package/zh/guides/troubleshooting/dependencies.md +0 -69
- package/zh/tutorials/first-app/_category_.json +1 -1
- package/zh/tutorials/first-app/c01-start.md +94 -0
- package/zh/tutorials/first-app/{c05-component/5.1-use-ui-library.md → c02-component.md} +13 -15
- package/zh/tutorials/first-app/c03-css.md +305 -0
- package/zh/tutorials/first-app/{c08-client-side-routing/8.1-code-based-routing.md → c04-routes.md} +52 -39
- package/zh/tutorials/first-app/c05-loader.md +82 -0
- package/zh/tutorials/first-app/c06-model.md +256 -0
- package/zh/tutorials/first-app/c07-container.md +268 -0
- package/zh/tutorials/first-app/c08-entries.md +134 -0
- package/zh/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/apis/generator/overview.md +0 -32
- package/zh/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/guides/topic-detail/monorepo/deploy.md +0 -43
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +0 -25
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +0 -118
- package/zh/tutorials/first-app/c01-getting-started/1.3-dev-command.md +0 -29
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +0 -47
- package/zh/tutorials/first-app/c01-getting-started/1.5-start-command.md +0 -18
- package/zh/tutorials/first-app/c01-getting-started/1.6-create-repo.md +0 -31
- package/zh/tutorials/first-app/c01-getting-started/_category_.json +0 -3
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -79
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +0 -34
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +0 -19
- package/zh/tutorials/first-app/c02-generator-and-studio/_category_.json +0 -3
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +0 -55
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +0 -60
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +0 -11
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +0 -63
- package/zh/tutorials/first-app/c03-ide/_category_.json +0 -3
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +0 -54
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +0 -135
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +0 -67
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/_category_.json +0 -3
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +0 -72
- package/zh/tutorials/first-app/c05-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +0 -110
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +0 -143
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +0 -84
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +0 -83
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +0 -77
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +0 -104
- package/zh/tutorials/first-app/c06-css-and-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +0 -69
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +0 -100
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +0 -69
- package/zh/tutorials/first-app/c07-app-entry/_category_.json +0 -3
- package/zh/tutorials/first-app/c08-client-side-routing/_category_.json +0 -3
- package/zh/tutorials/first-app/c09-bff/9.1-serverless.md +0 -30
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +0 -95
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +0 -131
- package/zh/tutorials/first-app/c09-bff/_category_.json +0 -3
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +0 -21
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +0 -185
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +0 -55
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +0 -69
- package/zh/tutorials/first-app/c10-model/_category_.json +0 -3
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +0 -240
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +0 -109
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +0 -63
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +0 -56
- package/zh/tutorials/first-app/c11-container/_category_.json +0 -3
|
@@ -5,25 +5,9 @@ sidebar_position: 1
|
|
|
5
5
|
|
|
6
6
|
## 环境准备
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import Prerequisites from '@site-docs/components/prerequisites.md'
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Modern.js 推荐在开发环境里先安装 [nvm](https://github.com/nvm-sh/nvm#install--update-script),在 shell 里集成[自动切换 node 版本的脚本](https://github.com/nvm-sh/nvm#deeper-shell-integration)。
|
|
13
|
-
|
|
14
|
-
然后只要仓库根目录下有内容为 `lts/fermium` 或 `lts/gallium` 的 `.nvmrc` 文件,进入这个仓库时就会自动安装或切换到正确的 Node.js 版本。
|
|
15
|
-
|
|
16
|
-
### pnpm
|
|
17
|
-
|
|
18
|
-
推荐使用 [pnpm](https://pnpm.io/installation) 来管理依赖:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm install -g pnpm
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
:::note
|
|
25
|
-
Modern.js 同样支持使用 `yarn`、`npm` 进行依赖管理。
|
|
26
|
-
:::
|
|
10
|
+
<Prerequisites />
|
|
27
11
|
|
|
28
12
|
## 安装
|
|
29
13
|
|
|
@@ -44,72 +28,16 @@ npx @modern-js/create myapp
|
|
|
44
28
|
|
|
45
29
|
## 初始化项目
|
|
46
30
|
|
|
47
|
-
Modern.js 生成器会提供一个可交互的问答界面,根据结果初始化项目,按照默认的选择进行初始化:
|
|
48
31
|
|
|
49
|
-
|
|
50
|
-
? 请选择你想创建的工程类型 应用
|
|
51
|
-
? 请选择开发语言 TS
|
|
52
|
-
? 请选择包管理工具 pnpm
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
在生成项目后,Modern.js 会自动安装依赖、创建 git 仓库。
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
[INFO] 依赖自动安装成功
|
|
59
|
-
[INFO] git 仓库初始化成功
|
|
60
|
-
[INFO] 创建成功!
|
|
61
|
-
可在新项目的目录下运行以下命令:
|
|
62
|
-
pnpm run dev # 按开发环境的要求,运行和调试项目
|
|
63
|
-
pnpm run build # 按产品环境的要求,构建项目
|
|
64
|
-
pnpm run start # 按产品环境的要求,运行项目
|
|
65
|
-
pnpm run lint # 检查和修复所有代码
|
|
66
|
-
pnpm run new # 继续创建更多项目要素,比如应用入口
|
|
67
|
-
```
|
|
32
|
+
import InitApp from '@site-docs/components/init-app.md'
|
|
68
33
|
|
|
69
|
-
|
|
70
|
-
Modern.js 生成器除了在项目初始化时工作外,也能在后续研发中生成项目各种粒度的模块,并非一用即抛开。
|
|
71
|
-
:::
|
|
72
|
-
|
|
73
|
-
现在,项目结构如下:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
.
|
|
77
|
-
├── node_modules
|
|
78
|
-
├── src
|
|
79
|
-
│ ├── modern-app-env.d.ts
|
|
80
|
-
│ └── routes
|
|
81
|
-
│ ├── index.css
|
|
82
|
-
│ ├── layout.tsx
|
|
83
|
-
│ └── page.tsx
|
|
84
|
-
├── modern.config.ts
|
|
85
|
-
├── package.json
|
|
86
|
-
├── pnpm-lock.yaml
|
|
87
|
-
├── README.md
|
|
88
|
-
└── tsconfig.json
|
|
89
|
-
```
|
|
34
|
+
<InitApp />
|
|
90
35
|
|
|
91
36
|
## 启动项目
|
|
92
37
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
$ pnpm run dev
|
|
97
|
-
|
|
98
|
-
> modern dev
|
|
99
|
-
|
|
100
|
-
info Starting dev server...
|
|
101
|
-
info App running at:
|
|
102
|
-
|
|
103
|
-
> Local: http://localhost:8080/
|
|
104
|
-
> Network: http://10.94.58.87:8080/
|
|
105
|
-
> Network: http://10.254.68.105:8080/
|
|
106
|
-
|
|
107
|
-
Client ✔ done in 76.10ms
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
在浏览器中打开 `http://localhost:8000/`,能看到以下内容:
|
|
38
|
+
import DebugApp from '@site-docs/components/debug-app.md'
|
|
111
39
|
|
|
112
|
-
|
|
40
|
+
<DebugApp />
|
|
113
41
|
|
|
114
42
|
## 使用配置
|
|
115
43
|
|
|
@@ -16,28 +16,28 @@ $ pnpm run upgrade
|
|
|
16
16
|
|
|
17
17
|
[INFO] [项目类型]: 应用
|
|
18
18
|
[INFO] [Modern.js 最新版本]: 2.0.0
|
|
19
|
-
[INFO]
|
|
19
|
+
[INFO] 已更新 Modern.js 依赖至最新版本!
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
可以看到项目 `package.json`
|
|
22
|
+
可以看到项目 `package.json` 中的依赖已经更改到最新。
|
|
23
23
|
|
|
24
24
|
## 指定版本升级
|
|
25
25
|
|
|
26
|
-
Modern.js
|
|
26
|
+
Modern.js 所有的官方包目前都使用**统一版本号**进行发布。
|
|
27
27
|
|
|
28
28
|
根据官网 Release Note,开发者也可以手动将项目升级到想要的版本。
|
|
29
29
|
|
|
30
30
|
:::tip
|
|
31
|
-
|
|
31
|
+
当升级时,需要对 Modern.js 官方提供的所有包做统一升级,而不是升级单个依赖。
|
|
32
32
|
:::
|
|
33
33
|
|
|
34
34
|
## 锁定子依赖
|
|
35
35
|
|
|
36
36
|
当项目某个子依赖出现问题,而 Modern.js 无法立即更新时,可以使用包管理器锁定子依赖版本。
|
|
37
37
|
|
|
38
|
-
###
|
|
38
|
+
### pnpm
|
|
39
39
|
|
|
40
|
-
对于使用
|
|
40
|
+
对于使用 pnpm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `pnpm install`:
|
|
41
41
|
|
|
42
42
|
```json
|
|
43
43
|
{
|
|
@@ -51,7 +51,7 @@ Modern.js 所有的官方包目前都使用统一版本号进行发布。
|
|
|
51
51
|
|
|
52
52
|
### Yarn
|
|
53
53
|
|
|
54
|
-
对于使用 Yarn 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `yarn
|
|
54
|
+
对于使用 Yarn 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `yarn install`:
|
|
55
55
|
|
|
56
56
|
```json
|
|
57
57
|
{
|
|
@@ -63,7 +63,7 @@ Modern.js 所有的官方包目前都使用统一版本号进行发布。
|
|
|
63
63
|
|
|
64
64
|
### Npm
|
|
65
65
|
|
|
66
|
-
对于使用 Npm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `npm
|
|
66
|
+
对于使用 Npm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `npm install`:
|
|
67
67
|
|
|
68
68
|
```json
|
|
69
69
|
{
|
|
@@ -4,75 +4,6 @@ sidebar_position: 1
|
|
|
4
4
|
|
|
5
5
|
# 依赖安装问题
|
|
6
6
|
|
|
7
|
-
### 如何升级项目中的 Modern.js 到最新版本?
|
|
8
|
-
|
|
9
|
-
对于使用 yarn 的项目,可以执行:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
yarn upgrade --scope @modern-js
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
对于使用 pnpm 的项目,可以执行:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
pnpm update "@modern-js/*" -r
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
如果需要了解不同版本之间的更新内容,可以查看:
|
|
22
|
-
|
|
23
|
-
- Modern.js 发版日志:[Modern.js/releases](https://github.com/modern-js-dev/modern.js/releases)。
|
|
24
|
-
- 各个 package 下的 `CHANGELOG.md` 文件。
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
### 如何锁定项目中的某个依赖版本?
|
|
29
|
-
|
|
30
|
-
如果需要锁定项目中的某个依赖的版本,可以通过以下方式进行操作:
|
|
31
|
-
|
|
32
|
-
**yarn**
|
|
33
|
-
|
|
34
|
-
对于使用 yarn 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `yarn`:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"resolutions": {
|
|
39
|
-
"package-name": "^1.0.0"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**pnpm**
|
|
45
|
-
|
|
46
|
-
对于使用 pnpm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `pnpm i`:
|
|
47
|
-
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"pnpm": {
|
|
51
|
-
"overrides": {
|
|
52
|
-
"package-name": "^1.0.0"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**npm**
|
|
59
|
-
|
|
60
|
-
对于使用 npm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `npm i`:
|
|
61
|
-
|
|
62
|
-
```json
|
|
63
|
-
{
|
|
64
|
-
"overrides": {
|
|
65
|
-
"package-name": "^1.0.0"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
:::info
|
|
71
|
-
对于 monorepo 场景,只能在项目根目录的 `package.json` 中锁定依赖版本,并且会影响 monorepo 中的所有 package。
|
|
72
|
-
:::
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
7
|
### 如何查看项目里某个依赖实际安装的版本?
|
|
77
8
|
|
|
78
9
|
可以使用包管理器自带的 `ls` 命令来查看项目里依赖的版本。
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 创建项目
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
从这一章节开始,我们将进入实战教程部分。在实战教程中,我们将会从环境准备开始,从简单到复杂,一步一步搭建一个真实的项目。
|
|
6
|
+
|
|
7
|
+
## 环境准备
|
|
8
|
+
|
|
9
|
+
import Prerequisites from '@site-docs/components/prerequisites.md'
|
|
10
|
+
|
|
11
|
+
<Prerequisites />
|
|
12
|
+
|
|
13
|
+
## 初始化项目
|
|
14
|
+
|
|
15
|
+
我们创建新的目录,通过命令行工具初始化项目:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
mkdir myapp && cd myapp
|
|
19
|
+
npx @modern-js/create
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
import InitApp from '@site-docs/components/init-app.md'
|
|
23
|
+
|
|
24
|
+
<InitApp />
|
|
25
|
+
|
|
26
|
+
## 调试项目
|
|
27
|
+
|
|
28
|
+
import DebugApp from '@site-docs/components/debug-app.md'
|
|
29
|
+
|
|
30
|
+
<DebugApp />
|
|
31
|
+
|
|
32
|
+
## 修改代码
|
|
33
|
+
|
|
34
|
+
我们将原本的示例代码删除,替换成一个简单的联系人列表:
|
|
35
|
+
|
|
36
|
+
```tsx title="src/routes/page.tsx"
|
|
37
|
+
const getAvatar = (users: Array<{ name: string; email: string }>) =>
|
|
38
|
+
users.map(user => ({
|
|
39
|
+
...user,
|
|
40
|
+
avatar: `https://avatars.dicebear.com/v2/identicon/${user.name}.svg`,
|
|
41
|
+
}));
|
|
42
|
+
|
|
43
|
+
const mockData = getAvatar([
|
|
44
|
+
{ name: 'Thomas', email: 'w.kccip@bllmfbgv.dm' },
|
|
45
|
+
{ name: 'Chow', email: 'f.lfqljnlk@ywoefljhc.af' },
|
|
46
|
+
{ name: 'Bradley', email: 'd.wfovsqyo@gpkcjwjgb.fr' },
|
|
47
|
+
{ name: 'Davis', email: '"t.kqkoj@utlkwnpwk.nu' },
|
|
48
|
+
]);
|
|
49
|
+
|
|
50
|
+
function App() {
|
|
51
|
+
return (
|
|
52
|
+
<ul>
|
|
53
|
+
{mockData.map(({ name, avatar, email }) => (
|
|
54
|
+
<li key={name}>
|
|
55
|
+
<img src={avatar} width={60} height={60} /> ---
|
|
56
|
+
<span>{name}</span> ---
|
|
57
|
+
<span>{email}</span>
|
|
58
|
+
</li>
|
|
59
|
+
))}
|
|
60
|
+
</ul>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default App;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
因为框架默认支持 [HMR](https://webpack.js.org/concepts/hot-module-replacement/),可以看到 `http://localhost:8080/` 里的内容会自动变成 Hello Modern.js。
|
|
68
|
+
|
|
69
|
+
删除多余的 css 文件,保持目录没有多余的文件:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
rm src/routes/index.css
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 使用配置
|
|
76
|
+
|
|
77
|
+
接下来,我们修改项目中的 `modern.config.ts`,开启 SSR 能力:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { defineConfig } from '@modern-js/app-tools';
|
|
81
|
+
|
|
82
|
+
// https://modernjs.dev/docs/apis/app/config
|
|
83
|
+
export default defineConfig({
|
|
84
|
+
runtime: {
|
|
85
|
+
router: true,
|
|
86
|
+
state: true,
|
|
87
|
+
},
|
|
88
|
+
server: {
|
|
89
|
+
ssr: true,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
重新执行 `pnpm run dev`,可以发现项目已经在服务端完成了页面渲染。
|
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: 编写 UI 组件
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
上一章节中,我们学习了如何初始化项目,并使用配置修改 Modern.js 的默认行为。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
这一章节中,我们继续沿用上一章节的项目代码,继续完善联系人列表。
|
|
8
8
|
|
|
9
|
-
为了做更好的 UI
|
|
10
|
-
|
|
11
|
-
先添加依赖:
|
|
9
|
+
为了做更好的 UI 展示和交互,我们引入组件库 [Antd](https://ant.design/index-cn) 来开发,使用 `<List>` 组件来代替原始的列表。先添加依赖:
|
|
12
10
|
|
|
13
11
|
```bash
|
|
14
12
|
pnpm add antd
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
修改 `src/routes/page.tsx
|
|
15
|
+
修改 `src/routes/page.tsx`,在顶部导入组件:
|
|
18
16
|
|
|
19
|
-
```
|
|
17
|
+
```ts
|
|
20
18
|
import { List } from 'antd';
|
|
21
19
|
```
|
|
22
20
|
|
|
23
|
-
修改
|
|
21
|
+
修改 `<App>` 组件的实现:
|
|
24
22
|
|
|
25
|
-
```
|
|
26
|
-
function
|
|
23
|
+
```tsx
|
|
24
|
+
function App() {
|
|
27
25
|
return (
|
|
28
26
|
<div>
|
|
29
27
|
<List
|
|
@@ -45,7 +43,7 @@ function Index() {
|
|
|
45
43
|
|
|
46
44
|
执行 `pnpm run dev`,查看运行结果:
|
|
47
45
|
|
|
48
|
-

|
|
49
47
|
|
|
50
48
|
可以看到 Ant Design 导出的组件,已经具备了完整的样式。
|
|
51
49
|
|
|
@@ -53,6 +51,6 @@ function Index() {
|
|
|
53
51
|
Modern.js 会[自动按需导入 Ant Design 组件需要的 CSS](https://github.com/ant-design/babel-plugin-import)。
|
|
54
52
|
:::
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
:::note
|
|
55
|
+
我们也可以使用其他组件库来实现同样的功能,例如 [Arco Design](https://arco.design/)。
|
|
56
|
+
:::
|