mirror of
https://github.com/Raghu-Ch/angular-challenges.git
synced 2026-02-10 04:43:03 -05:00
docs: add Chinese translation (#1112)
* docs: add Chinese translation * docs: translate checkout-answers.md * docs: guide、leaderboard translate * docs: translate 1-projection
This commit is contained in:
@@ -23,6 +23,10 @@ export const locales = {
|
||||
ru: {
|
||||
label: 'Русский',
|
||||
lang: 'ru'
|
||||
},
|
||||
'zh-cn': {
|
||||
label: '简体中文',
|
||||
lang: 'zh-CN'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -51,7 +55,8 @@ export default defineConfig({
|
||||
es: 'Guías',
|
||||
fr: 'Guides',
|
||||
pt: 'Guias',
|
||||
ru: 'Руководство'
|
||||
ru: 'Руководство',
|
||||
'zh-CN': '指南'
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -64,7 +69,8 @@ export default defineConfig({
|
||||
es: 'Leaderboard',
|
||||
fr: 'Leaderboard',
|
||||
pt: 'Tabela de Classificação',
|
||||
ru: 'Leaderboard'
|
||||
ru: 'Leaderboard',
|
||||
'zh-CN': '排行榜'
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -76,7 +82,8 @@ export default defineConfig({
|
||||
es: 'Desafíos',
|
||||
fr: 'Challenges',
|
||||
pt: 'Desafios',
|
||||
ru: 'Задачи'
|
||||
ru: 'Задачи',
|
||||
'zh-CN': '挑战'
|
||||
}
|
||||
}],
|
||||
head: [{
|
||||
|
||||
@@ -3,7 +3,8 @@ import type { Props } from '@astrojs/starlight/props';
|
||||
|
||||
const {lang, locale} = Astro.props;
|
||||
|
||||
const shortLang = lang.split('-')[0];
|
||||
// Chinese needs to `zh-CN`
|
||||
// const shortLang =lang.split('-')[0];
|
||||
---
|
||||
|
||||
<div class="separator"></div>
|
||||
@@ -19,7 +20,7 @@ const shortLang = lang.split('-')[0];
|
||||
data-emit-metadata="0"
|
||||
data-input-position="bottom"
|
||||
data-theme="preferred_color_scheme"
|
||||
data-lang={shortLang}
|
||||
data-lang={lang}
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous"
|
||||
async>
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: 🟢 投影
|
||||
description: 挑战1是学习如何通过组件投影DOM元素
|
||||
author: thomas-laforge
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- jdegand
|
||||
- dmmishchenko
|
||||
- kabrunko-dev
|
||||
- svenson95
|
||||
challengeNumber: 1
|
||||
command: angular-projection
|
||||
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
|
||||
videoLinks:
|
||||
- link: https://www.youtube.com/watch?v=npyEyUZxoIw&ab_channel=ArthurLannelucq
|
||||
alt: Projection video by Arthur Lannelucq
|
||||
flag: FR
|
||||
- link: https://www.youtube.com/watch?v=yNrfvu7vTa4
|
||||
alt: Projection video by Amos Lucian IsailaAmos Lucian Isaila
|
||||
flag: ES
|
||||
sidebar:
|
||||
order: 1
|
||||
---
|
||||
|
||||
## 信息
|
||||
|
||||
在Angular中,内容投影是一种创建高度可定制组件的强大技术。利用和理解<b>ng-content</b>和<b>ngTemplateOutlet</b>的概念可以显著增强你创建可共享组件的能力
|
||||
|
||||
你可以在[这里](https://angular.dev/guide/components/content-projection)了解<b>ng-content</b> 的所有内容,从简单的投影到更复杂的投影。
|
||||
|
||||
要了解<b>ngTemplateOutlet</b>,你可以在[这里](https://angular.io/api/common/NgTemplateOutlet)找到API文档和一些基本示例。
|
||||
|
||||
有了这两个工具,您现在就可以接受挑战了。
|
||||
|
||||
## 说明
|
||||
|
||||
您将从一个功能齐全的应用程序开始,该应用程序包括一个包含教师卡和学生卡的仪表盘。目标是实现城市卡。
|
||||
|
||||
虽然应用程序可以工作,但开发人员的体验还远没有达到最佳。每次需要实现新卡时,都必须修改`card.component.ts` 。在实际项目中,该组件可以在许多应用程序之间共享。该挑战的目标是创建一个 `CardComponent` ,它可以在不做任何修改的情况下进行自定义。一旦你创建了这个组件,你就可以开始实现 `CityCardComponent` ,并确保你没有触碰 `CardComponent` 。
|
||||
|
||||
## 约束
|
||||
|
||||
- <b>必须</b>重构 `CardComponent` 和 `ListItemComponent`。
|
||||
- `NgFor` 指令必须声明并保持在 `CardComponent` 内。你可能想把它移到 `ParentCardComponent` ,比如 `TeacherCardComponent` 。
|
||||
- `CardComponent` 不应包含任何 `NgIf` 或 `NgSwitch` 。
|
||||
- CSS:尽量避免使用 `::ng-deep` 。寻找更好的方法来处理CSS样式。
|
||||
|
||||
## 挑战奖励
|
||||
|
||||
- 尝试使用新的内置控制流语法for循环和条件语句(文档在[这里](https://angular.dev/guide/templates/control-flow))
|
||||
- 使用signal API来管理组件状态(文档在[这里](https://angular.dev/guide/signals))
|
||||
- 要引用模板,请使用指令而不是魔术字符串([魔术字符串有什么问题?](https://softwareengineering.stackexchange.com/a/365344))
|
||||
57
docs/src/content/docs/zh-cn/guides/checkout-answer.md
Normal file
57
docs/src/content/docs/zh-cn/guides/checkout-answer.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: 查看某人的回答
|
||||
description: 查看某人的回答指南
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- gsgonzalez88
|
||||
- 1fbr
|
||||
- jdegand
|
||||
sidebar:
|
||||
order: 3
|
||||
---
|
||||
|
||||
所有Angular Challenges的答案都将以pull request (PR)的形式呈现。要查看和跟踪它们,请浏览GitHub上的**文件更改**页面。但是,如果您不熟悉界面,理解和遵循此过程可能并不简单。在许多情况下,您可能更喜欢签出分支并在您首选的IDE中检查解决方案。
|
||||
|
||||
## 安装 GitHub CLI
|
||||
|
||||
在[这里](https://github.com/cli/cli#installation)按照操作系统的说明操作。
|
||||
|
||||
## 查看本地其他人的PR
|
||||
|
||||
### 同步存储库
|
||||
|
||||
首先,您需要同步您的分支,以确保它与分支存储库是最新的。
|
||||
|
||||
这可以通过点击你的分支主页上的**Sync fork**按钮来实现。
|
||||
|
||||

|
||||
|
||||
上图显示我的分支落后于主分支 8 个提交,我需要将其同步才能保持最新。
|
||||
|
||||

|
||||
|
||||
### 本地检出查看
|
||||
|
||||
导航到你想在本地查看的PR并获取其ID。你可以在PR的标题中找到它(如下所示)。
|
||||
|
||||

|
||||
|
||||
接下来,切换到项目目录中的任意终端,并运行以下命令:
|
||||
|
||||
```bash
|
||||
gh pr checkout <ID>
|
||||
```
|
||||
|
||||
如果你不记得这个命令,点击标题右侧的Code按钮,你可以轻松地复制/粘贴这个命令。
|
||||
|
||||

|
||||
|
||||
:::note[注意]
|
||||
如果命令不起作用或失败,GitHub CLI会引导你完成整个过程。
|
||||
:::
|
||||
|
||||
🔥您现在可以在本地浏览解决方案并提供服务以测试它。🔥
|
||||
|
||||
### 使用GitHub Codespaces检出查看
|
||||
|
||||
你可以使用GitHub Codespaces查看任何**打开**的PR。点击code按钮后,你可以导航到codespaces标签,然后点击绿色按钮,在PR的分支上创建一个codesace。codespace初始化后,就可以启动应用了。
|
||||
25
docs/src/content/docs/zh-cn/guides/contribute.md
Normal file
25
docs/src/content/docs/zh-cn/guides/contribute.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: 贡献
|
||||
description: 贡献指南
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- jdegand
|
||||
sidebar:
|
||||
order: 4
|
||||
---
|
||||
|
||||
你可以通过以下多种方式为这个存储库做出贡献:
|
||||
|
||||
🔥 依照以下[指示](/guides/create-challenge)创建一个新的挑战。
|
||||
|
||||
🔥 接受挑战并提交结果(指南 [在此](/guides/resolve-challenge))。
|
||||
|
||||
🔥 对他人提出的解决方案给予有建设性的、热情的反馈。
|
||||
|
||||
🔥 校正文档中的拼写错误。
|
||||
|
||||
🔥 协助翻译文档。
|
||||
|
||||
🔥 提交问题建议新的挑战想法或报告错误。
|
||||
|
||||
🔥 [在此](https://github.com/sponsors/tomalaforge)赞助该项目。
|
||||
68
docs/src/content/docs/zh-cn/guides/create-challenge.md
Normal file
68
docs/src/content/docs/zh-cn/guides/create-challenge.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: 创建你自己的挑战
|
||||
description: 创建你自己的挑战指南
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- gsgonzalez88
|
||||
- jdegand
|
||||
sidebar:
|
||||
order: 5
|
||||
---
|
||||
|
||||
你有一个想法想要分享,你正在努力解决某个私人项目或业余项目中的一个有趣的bug,或者你发现的一个Angular技巧。所有这些可能性都是创建挑战并与他人分享解决方案的良好起点。
|
||||
|
||||
如何开始创造这些挑战?
|
||||
|
||||
## 样板设置
|
||||
|
||||
为了简化这个过程,我创建了一个Nx生成器,它将为您设置所有样板文件。运行它最简单的方法是使用Nx控制台:转到<b>Nx Console > generate > @angular-challenges/cli - challenge</b>。
|
||||
|
||||
或者,你也可以利用IDE的 [Nx Console extension](https://nx.dev/getting-started/editor-setup)来生成文件
|
||||
|
||||
### 参数
|
||||
|
||||
#### 强制参数
|
||||
|
||||
- <b>title</b>: 你想给你的挑战的标题。
|
||||
:::note[注意]
|
||||
标题长度不能超过25个字符。
|
||||
:::
|
||||
|
||||
- <b>author</b>: 你的名字
|
||||
|
||||
:::note[注意]
|
||||
你的名字应该使用烤肉串格式(如: john-doe)
|
||||
:::
|
||||
|
||||
:::note[注意]
|
||||
别忘了在以你名字命名的文件中更新你的个人信息
|
||||
:::
|
||||
|
||||
- <b>challengeDifficulty</b>:你认为你的挑战有多大的难度。有三个难度级别:🟢简单/🟠中等/🔴困难
|
||||
|
||||
- <b>docRepository</b>: 你挑战的类别是Nx、Angular、Angular性能、Rxjs、NgRx、Typescript、表单或信号。
|
||||
|
||||
#### 可选参数
|
||||
|
||||
- <b>challengeNumber</b>: 当有挑战提交时,可以指定挑战号。(如果为空,该数字将是下一个数字)。
|
||||
- <b>directory</b>: 如果您希望您的应用程序位于 `apps` 中的特定文件夹中。
|
||||
- <b>addTest</b>: 如果您想添加测试配置。
|
||||
|
||||
### 创建了什么?
|
||||
|
||||
- 生成器将创建新应用程序运行所需的所有文件。所有这些文件都将创建在 `apps/${directory}/${name}` 中
|
||||
- 将在 `docs/src/content/docs/challenges/${docRepository}` 中创建一个带有最小设置的Markdown文件。
|
||||
|
||||
## 创造挑战
|
||||
|
||||
剩下唯一要做的就是创造挑战。 🚀
|
||||
|
||||
:::danger[危险]
|
||||
不要忘记更新文档以介绍您的挑战并提供说明。
|
||||
:::
|
||||
|
||||
轮到你行动了!!💪
|
||||
|
||||
## 解决方案提交
|
||||
|
||||
大约一周后,提供一个针对您的挑战的解决方案的pull request。
|
||||
22
docs/src/content/docs/zh-cn/guides/faq.md
Normal file
22
docs/src/content/docs/zh-cn/guides/faq.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: 常见问题解答
|
||||
description: 回答问题
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- jdegand
|
||||
sidebar:
|
||||
order: 7
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
为什么我的应用程序没有启动,或者为什么我在运行`nx serve`时在终端中遇到错误?
|
||||
</summary>
|
||||
|
||||
大多数情况下,出现这个问题是因为你的node_modules已经过时了,你需要通过运行 `npm ci` 来更新它们。
|
||||
|
||||
如果安装失败,可以通过 `rm -rf node_modules` 或 `npx npkill` 删除node_modules文件夹,然后重新运行 `npm ci` 来解决。
|
||||
|
||||
如果问题仍然存在,请在[这里](https://github.com/tomalaforge/angular-challenges/issues/new)报告问题。
|
||||
|
||||
</details>
|
||||
83
docs/src/content/docs/zh-cn/guides/getting-started.md
Normal file
83
docs/src/content/docs/zh-cn/guides/getting-started.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: 开始
|
||||
description: 关于如何开始Angular挑战的指南。
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- 1fbr
|
||||
- ho-ssain
|
||||
- jdegand
|
||||
sidebar:
|
||||
order: 1
|
||||
---
|
||||
|
||||
要开始使用 <b>Angular Challenges</b>,请按照以下步骤操作:
|
||||
|
||||
## 创建一个GitHub账户
|
||||
|
||||
如果你想提交答案,你需要拥有自己的GitHub账户。此外,拥有GitHub账户总是有益的,而且是免费的。
|
||||
|
||||
## Fork GitHub 项目
|
||||
|
||||
导航至 [Angular Challenges Repository](https://github.com/tomalaforge/angular-challenges) 在页面顶部点击 <span class="github-neutral-btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="mr-2 octicon octicon-repo-forked">
|
||||
<path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path></svg>Fork</span> 按钮。这将在您的 GitHub 个人资料中创建该存储库的副本。
|
||||
|
||||
## 将存储库克隆到您的本地机器上
|
||||
|
||||
在您的本地计算机上选择一个目录,然后克隆此存储库。
|
||||
|
||||
打开终端,导航到选择的目录,并输入以下命令:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/[YOUR_GITHUB_NAME]/angular-challenges.git
|
||||
```
|
||||
|
||||
:::note[注意]
|
||||
|
||||
你可以通过点击Angular Challenges存储库中<b>你自己的实例</b>中的<span class="github-success-btn"><> Code</span> 按钮来找到克隆URL
|
||||
|
||||

|
||||
|
||||
:::
|
||||
|
||||
## 在您最喜欢的IDE中打开该项目
|
||||
|
||||
使用您选择的任意集成开发环境(IDE)打开该项目。
|
||||
|
||||
## 安装所有依赖项
|
||||
|
||||
```bash
|
||||
npm ci
|
||||
```
|
||||
|
||||
## 选择一个挑战
|
||||
|
||||
您的项目现已启动并正在运行。剩下的唯一步骤是选择一个挑战 🚀
|
||||
|
||||
每项挑战包括:
|
||||
|
||||
- <b>Name</b>: 表示挑战的内容。
|
||||
- <b>Number</b>: 创建顺序。 这个数字没有任何特别的含义,但有助于在 GitHub Pull Request 部分进行参考。
|
||||
- <b>Badge</b>: 有助于可视化难度程度。这完全是主观的 😅
|
||||
- 🟢 容易
|
||||
- 🟠 中等
|
||||
- 🔴 困难
|
||||
|
||||
## (交替) 使用 GitHub Codespaces
|
||||
|
||||
在你自己的 Angular Challenges 存储库<b>实例</b>中,单击代码按钮并导航到 codespaces 选项卡。
|
||||
|
||||

|
||||
|
||||
单击 `Create codespace on main` 按钮, 您将导航到 GitHub codespace
|
||||
|
||||
如果您以前从未使用过 GitHub codespace,我建议您尝试这个简短的交互式 [GitHub Skills Tutorial](https://github.com/skills/code-with-codespaces).
|
||||
|
||||
当您导航到codespace时,将出现一个提示,要求安装推荐的 `VS Code` 插件。如果您打算创建一个挑战,您可以使用 `Nx plugin` 来生成开始代码。无论哪种方式,codespace都将安装依赖项,你可以创建一个新分支,解决任何挑战,并创建一个pull request。
|
||||
|
||||
当您推送到分支时,您不必提供 GitHub 令牌。
|
||||
|
||||
一旦你完成,记得暂停或删除你的codesace。如果不这样做,GitHub将在30分钟后自动暂停空闲的codesace。你每个月确实有大量的免费codespace时间,但重要的是不要浪费你的分配时间
|
||||
|
||||
在GitHub codesace中,复制和粘贴将被阻止,直到你获得许可
|
||||
|
||||
GitHub codespace使用端口转发为项目提供服务。单击运行 `npx nx serve [project-name]` 后的提示符,导航到 `localhost:4200` 。
|
||||
57
docs/src/content/docs/zh-cn/guides/rebase.md
Normal file
57
docs/src/content/docs/zh-cn/guides/rebase.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: 变基分支
|
||||
description: 将分支变基到最新更改的指南
|
||||
contributors:
|
||||
- tomalaforge
|
||||
sidebar:
|
||||
order: 6
|
||||
---
|
||||
|
||||
有时,可能会向项目添加更改。我会尝试做出不会破坏任何东西的更改,但有时这是不可避免的。
|
||||
|
||||
大多数情况下,您不需要变基您的解决方案,但这里有一个指南可以帮助您知道如何操作。
|
||||
|
||||
:::note[注意]
|
||||
本指南适用于任何开源项目。
|
||||
:::
|
||||
|
||||
## 变基分支的步骤
|
||||
|
||||
### 同步存储库
|
||||
|
||||
首先,你需要同步你的分支,以确保它与分支的存储库是最新的。
|
||||
|
||||
你可以通过点击你的fork主页面上的Sync fork按钮来实现这一点。
|
||||
|
||||

|
||||
|
||||
上图显示我的分支比主分支落后 8 个提交,我需要将其同步才能保持最新。
|
||||
|
||||

|
||||
|
||||
### 打开终端
|
||||
|
||||
打开您选择的任何终端,可以是您最喜欢的 IDE 中的终端,也可以是独立实例。
|
||||
|
||||
### Git
|
||||
|
||||
请按照以下命令重新设置本地分支的基础:
|
||||
|
||||
- git checkout main
|
||||
- git pull
|
||||
- git checkout [你的分支]
|
||||
- git rebase main
|
||||
- 解决冲突
|
||||
|
||||
在此步骤中,变基可能会停止,因为您的本地分支与主分支有冲突的文件。纠正它们。完成此操作后:
|
||||
|
||||
- git add .
|
||||
- git rebase --continue
|
||||
|
||||
如果您的分支没有任何冲突,则会显示成功消息。
|
||||
|
||||
### 将你的工作推送到远程分支
|
||||
|
||||
最后,将你的工作推送到GitHub:
|
||||
|
||||
- git push -f
|
||||
107
docs/src/content/docs/zh-cn/guides/resolve-challenge.md
Normal file
107
docs/src/content/docs/zh-cn/guides/resolve-challenge.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: 解决挑战
|
||||
description: 解决挑战指南
|
||||
contributors:
|
||||
- tomalaforge
|
||||
- 1fbr
|
||||
- gsgonzalez88
|
||||
sidebar:
|
||||
order: 2
|
||||
---
|
||||
|
||||
在本指南中,您将学习如何解决挑战并向主GitHub存储库提交答案。
|
||||
|
||||
## 介绍
|
||||
|
||||
此存储库由 [Nx](https://nx.dev/getting-started/intro) 提供支持。<b>Nx</b>是一个 monorepository,允许您将多个应用程序存储在同一个工作区中。每个挑战都是一个单独的应用程序。如果您打开`apps`目录,您将找到多个目录,每个目录都与一个特定的挑战相关。每个目录都代表一个完整的独立的`Nx`应用程序。想要运行并从某个开始,请打开您的终端并运行:
|
||||
|
||||
```bash
|
||||
npx nx serve <APPLICATION_NAME>
|
||||
```
|
||||
|
||||
:::note[注意]
|
||||
如果您不确定 `APPLICATION_NAME` ,请打开README.md文件。 `serve` 命令写在那里,并有一个到挑战文档的链接。
|
||||
:::
|
||||
|
||||
:::note[注意]
|
||||
|
||||
如果您的设备已全局安装 `nx` ,则可以跳过使用 `npx`
|
||||
|
||||
要全局安装 `nx` ,使用
|
||||
|
||||
```bash
|
||||
npm i -g nx
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## 创建 Git 分支
|
||||
|
||||
在你开始实现解决挑战的解决方案之前,创建一个git分支来提交你的工作。
|
||||
|
||||
```bash
|
||||
git checkout -b <BRANCH_NAME>
|
||||
```
|
||||
|
||||
## 完成挑战
|
||||
|
||||
按照说明来完成挑战。
|
||||
|
||||
## 提交和推送您的工作
|
||||
|
||||
最后一步是按照常规的[指导方针](https://www.conventionalcommits.org/en/v1.0.0/)提交工作
|
||||
|
||||
最后,使用以下命令将工作推送到远程仓库
|
||||
|
||||
```bash
|
||||
git push --set-upstream origin <BRANCH_NAME>
|
||||
```
|
||||
|
||||
:::tip[不用去记]
|
||||
你不必精确地记住这个命令。你只需要记住 `git push` ,如果这是你第一次推送这个分支, `git` 将为你提供完整的命令。
|
||||
:::
|
||||
|
||||
## 将您的工作提交到主仓库
|
||||
|
||||
现在,你所有的工作都位于Angular Challenges仓库的本地实例中。
|
||||
|
||||
下一步是转到Angular的主要[挑战页面](https://github.com/tomalaforge/angular-challenges),并创建一个新的Pull Request。
|
||||
|
||||
GitHub应该显示一个通知头来帮助你创建拉取请求。
|
||||
|
||||
如果不是这样,要么是你错误地执行了前面的某个步骤,要么你可以转到<b>Pull Request</b>选项卡并点击<span class="github-success-btn">New pull request</span>按钮
|
||||
|
||||
一旦你选择了要比较的两个分支,就会看到下面的页面:
|
||||
|
||||

|
||||
|
||||
在标题部分,以<b>Answer:</b>开始,然后是你的<b>挑战号</b>。之后,您可以随意添加任何您想要的内容
|
||||
|
||||
:::danger[危险]
|
||||
这非常重要。它让别人知道你试图解决的是什么挑战。
|
||||
:::
|
||||
|
||||
在描述部分,您可以添加您遇到的问题、麻烦或任何其他您想要分享的内容。如果你没什么可说的,可以把它空着
|
||||
|
||||
现在你可以点击 <span class="github-success-btn">Create pull request</span>.
|
||||
|
||||
## 获取审查
|
||||
|
||||
为了继续提供有价值的反馈和评论,<a href="https://github.com/sponsors/tomalaforge">请在Github上支持这个项目</a>:
|
||||
|
||||
<ul>
|
||||
<li>每次评论5美元</li>
|
||||
<li>终身评论25美元</li>
|
||||
<li>创建一个挑战/贡献终身评论</li>
|
||||
</ul>
|
||||
|
||||
:::note[注意]
|
||||
|
||||
您仍然可以提交您的PR加入已回答的挑战列表。你仍然可以被社区成员审查🔥
|
||||
|
||||
欢迎大家评论和阅读其他PRs。💪
|
||||
:::
|
||||
|
||||
:::tip[开源拥护者]
|
||||
🔥完成本教程后,您就可以为任何其他公共GitHub存储库做出贡献并提交PR。就这么简单。🔥
|
||||
:::
|
||||
79
docs/src/content/docs/zh-cn/index.mdx
Normal file
79
docs/src/content/docs/zh-cn/index.mdx
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: 欢迎来到 Angular 挑战
|
||||
description: 从解决这些挑战开始,成为一名更好的Angular前端工程师.
|
||||
template: splash
|
||||
noCommentSection: true
|
||||
hero:
|
||||
tagline: 现在就开始成为Angular专家吧!
|
||||
image:
|
||||
file: ../../../assets/angular-challenge.webp
|
||||
actions:
|
||||
- text: 开始
|
||||
link: /zh-cn/guides/getting-started/
|
||||
icon: right-arrow
|
||||
variant: primary
|
||||
- text: 进入最新的挑战
|
||||
link: /zh-cn/challenges/signal/56-forms-and-signal/
|
||||
icon: rocket
|
||||
- text: 给个星星
|
||||
link: https://github.com/tomalaforge/angular-challenges
|
||||
icon: github
|
||||
variant: secondary
|
||||
---
|
||||
|
||||
import { Card, CardGrid } from '@astrojs/starlight/components';
|
||||
import MyIcon from '../../../components/MyIcon.astro';
|
||||
|
||||
import SubscriptionForm from '../../../components/SubscriptionForm.astro';
|
||||
|
||||
<CardGrid>
|
||||
<Card title="56 挑战">
|
||||
该存储库包含与<b>Angular</b>, <b>Nx</b>, <b>RxJS</b>, <b>Ngrx</b>和<b>Typescript</b>相关的56个挑战。这些挑战围绕现实生活中的问题或特定功能,旨在提升您的技能。
|
||||
</Card>
|
||||
|
||||
<Card title="订阅以获取最新挑战的通知">
|
||||
<SubscriptionForm isNote={false} />
|
||||
</Card>
|
||||
|
||||
<Card title="成为开源软件维护者">
|
||||
这个存储库的一个目标是<b>降低进入开放源码软件(OSS)的门槛</b>。通过参与这些挑战,您将学习如何开始为其他任何开源项目做出贡献
|
||||
</Card>
|
||||
|
||||
<Card title="与他人共同学习">
|
||||
学习和实践一个新的框架总是具有挑战性的。这些挑战提供了实际使用案例,可以让你将所学的知识应用到实际中。
|
||||
任何人都可以发表评论或提供帮助。
|
||||
<b>
|
||||
独自学习固然很棒,但与他人一起学习会让你走得更远。
|
||||
</b>
|
||||
</Card>
|
||||
|
||||
<Card title="贡献">
|
||||
你有任何问题、有趣的bug或者想法吗?不要犹豫,{' '}不要浪费任何时间<b>创造属于你自己的挑战</b>。
|
||||
</Card>
|
||||
|
||||
<Card title="为面试做好准备">
|
||||
通过完成这些挑战,您将为前端面试中可能出现的任何技术问题做好准备
|
||||
</Card>
|
||||
|
||||
<Card title="赞助">
|
||||
这个项目是免费的,并且希望能够长期保持免费。然而,所有工作都是在我的业余时间完成的,包括创建挑战和审核合并请求(PR)。<b>赞助可以支持我,并有助于项目的成长。</b>
|
||||
</Card>
|
||||
</CardGrid>
|
||||
|
||||
---
|
||||
|
||||
<div class="article-footer">
|
||||
<a
|
||||
class="action"
|
||||
href="https://github.com/sponsors/tomalaforge"
|
||||
alt="Sponsor link">
|
||||
<MyIcon name="heart" size="1.2rem" color="white" />
|
||||
赞助这个项目
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="main-page-footer">
|
||||
由{' '}
|
||||
<a href="https://github.com/tomalaforge?tab=repositories">Thomas Laforge</a>
|
||||
创建 - 由🌟 <a href="https://starlight.astro.build/">Starlight</a>驱动
|
||||
</div>
|
||||
12
docs/src/content/docs/zh-cn/leaderboard/answers.mdx
Normal file
12
docs/src/content/docs/zh-cn/leaderboard/answers.mdx
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: 挑战的回答
|
||||
description: 排行榜显示已回答的挑战数量
|
||||
noCommentSection: true
|
||||
prev: false
|
||||
next: false
|
||||
---
|
||||
|
||||
import LeaderboardAnswer from '../../../../components/leaderboard/LeaderboardAnswer.svelte';
|
||||
|
||||
加入这个列表,通过阅读入门指南[开始](/zh-cn/guides/getting-started)你的Angular挑战之旅。
|
||||
<LeaderboardAnswer client:load />
|
||||
13
docs/src/content/docs/zh-cn/leaderboard/challenges.mdx
Normal file
13
docs/src/content/docs/zh-cn/leaderboard/challenges.mdx
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: 创建的挑战数量
|
||||
description: 排行榜显示创建的挑战数量
|
||||
noCommentSection: true
|
||||
prev: false
|
||||
next: false
|
||||
---
|
||||
|
||||
import LeaderboardChallenge from '../../../../components/leaderboard/LeaderboardChallenge.svelte';
|
||||
|
||||
缺少挑战,创建自己的挑战并登上排行榜!阅读创建挑战指南来学习如何[创建挑战](/zh-cn/guides/create-challenge)。
|
||||
|
||||
<LeaderboardChallenge client:load />
|
||||
13
docs/src/content/docs/zh-cn/leaderboard/commit.mdx
Normal file
13
docs/src/content/docs/zh-cn/leaderboard/commit.mdx
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: 贡献数量
|
||||
description: 显示贡献数量的排行榜
|
||||
noCommentSection: true
|
||||
prev: false
|
||||
next: false
|
||||
---
|
||||
|
||||
import LeaderboardCommit from '../../../../components/leaderboard/LeaderboardCommit.svelte';
|
||||
|
||||
您想要改进项目,修复一个错别字,为一个挑战添加一些文档,或者翻译一个页面?这个排行榜显示了每个用户的贡献数量。这个存储库是开源的,您可以为它做出贡献。阅读贡献[贡献](/zh-cn/guides/contribute)指南开始。
|
||||
|
||||
<LeaderboardCommit client:load />
|
||||
10
docs/src/content/docs/zh-cn/subscription/index.mdx
Normal file
10
docs/src/content/docs/zh-cn/subscription/index.mdx
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: 订阅
|
||||
description: Email订阅
|
||||
noCommentSection: true
|
||||
---
|
||||
import SubscriptionForm from '../../../../components/SubscriptionForm.astro'
|
||||
|
||||
<div>如果您想了解新的挑战,可以订阅电子邮件</div>
|
||||
<SubscriptionForm isNote={true} />
|
||||
|
||||
27
docs/src/content/i18n/zh-CN.json
Normal file
27
docs/src/content/i18n/zh-CN.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"page.title.challenge": "挑战",
|
||||
"author.createdBy": "创建者",
|
||||
"buttons.email": "Email 订阅",
|
||||
"buttons.star": "给个星星",
|
||||
"buttons.sponsor": "赞助",
|
||||
"buttons.clipboardCopy": "已复制!",
|
||||
"challenge.footer.note": "注意",
|
||||
"challenge.footer.running": "通过执行启动项目:",
|
||||
"challenge.footer.start": "您的 PR 标题开头必须是",
|
||||
"challenge.footer.reminder": "提醒",
|
||||
"challenge.footer.communityAnswers": "社区解决方案",
|
||||
"challenge.footer.authorAnswer": "作者的解决方案",
|
||||
"challenge.footer.blogPost": "文章",
|
||||
"challenge.footer.video": "视频",
|
||||
"challenge.footer.gettingStarted.title": "要完成这个挑战,开始阅读: ",
|
||||
"challenge.footer.gettingStarted.link": "开始",
|
||||
"challenge.footer.upvoteAnswer": "如果你喜欢,可以使用👍给答案投票",
|
||||
"subscription.button": "订阅",
|
||||
"subscription.email": "username@gmail.com",
|
||||
"subscription.note.title": "注意",
|
||||
"subscription.note.description": "此电子邮件将仅用于发送新的挑战更新",
|
||||
"contributor.title": "贡献者",
|
||||
"contributor.subtitle": "感谢所有帮助本文档变得更好的贡献者!",
|
||||
"sponsors.description": "非常感谢支持这个项目的人: ",
|
||||
"sponsors.joinButton": "加入列表"
|
||||
}
|
||||
Reference in New Issue
Block a user