Update zh tw languages and fix some broken links (#455)

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/455
Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com>
This commit is contained in:
Lunny Xiao
2026-07-09 23:41:46 +00:00
parent c0f8a04185
commit 965c269495
652 changed files with 30864 additions and 30792 deletions

View File

@@ -8,114 +8,114 @@ aliases:
- /zh-tw/guidelines-frontend
---
# 前端开发指南
# 前端開發指南
## 背景
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
源文件可以在以下目中找到:
源文件可以在以下目中找到:
- **CSS 式** `web_src/css/`
- **CSS 式** `web_src/css/`
- **JavaScript 文件** `web_src/js/`
- **Vue 件** `web_src/js/components/`
- **Vue 件** `web_src/js/components/`
- **Go HTML 模板** `templates/`
## 通用准则
## 通用準則
们推荐使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
們推薦使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
## Gitea 特定准则
## Gitea 特定準則
1.功能Fomantic-UI/jQuery 模块)应放在单独的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 个与功能相关的关键词
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整个项目中是唯一的,并且应包含 2-3 个与功能相关的关键词。建议在仅在 JavaScript 中使用的 class 中使用 `js-`
4.应覆盖框架提供的 class 的 CSS 式。始使用具有 2-3 个与功能相关的关键词的新 class 名称来覆盖框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以通过使用`ctx.PageData["myModuleData"] = map[]{}`将复杂数据传递给前端,但不要将整个模型暴露前端,以避免泄露敏感数据
6. 简单页面和 SEO 相关的页面使用 Go HTML 模板渲染生成静态的 Fomantic-UI HTML 出。复杂页面可以使用 Vue3。
7.确变量类型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用语义化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加注释解释为什么需要它。
10. 避免在一事件监听器中混合不同的事件,优先为每个事件使用立的事件监听器。
11.使用自定义事件名称前缀`ce-`
12.使用 Tailwind CSS它可以通过 `tw-`缀获得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-word-break`Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免内联脚本和式,建议将 JS 代码放入 JS 文件中使用 CSS 。如果内联脚本和式不可避免,请解释无法避免的原因。
1.功能Fomantic-UI/jQuery 模組)應放在單獨的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 個與功能相關的關鍵詞
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整個專案中是唯一的,並且應包含 2-3 個與功能相關的關鍵詞。建議在僅在 JavaScript 中使用的 class 中使用 `js-`
4.應覆蓋框架提供的 class 的 CSS 式。始使用具有 2-3 個與功能相關的關鍵詞的新 class 名稱來覆蓋框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以透過使用`ctx.PageData["myModuleData"] = map[]{}`將複雜資料傳遞給前端,但不要將整個模型暴露前端,以避免泄露敏感資料
6. 簡單頁面和 SEO 相關的頁面使用 Go HTML 模板渲染生成靜態的 Fomantic-UI HTML 出。複雜頁面可以使用 Vue3。
7.確變量類型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用語義化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加註釋解釋為什麼需要它。
10. 避免在一事件監聽器中混合不同的事件,優先為每個事件使用立的事件監聽器。
11.使用自事件名稱前綴`ce-`
12.使用 Tailwind CSS它可以透過 `tw-`綴獲得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-word-break`Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免內聯腳本和式,建議將 JS 程式碼放入 JS 文件中使用 CSS 。如果內聯腳本和式不可避免,請解釋無法避免的原因。
### 可访问性 / ARIA
### 可訪問性 / ARIA
史上Gitea 大量使用了可访问性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可访问性(参见 `aria.md`
但仍然存在许多问题需要大量的工作和时间来修复
史上Gitea 大量使用了可訪問性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可訪問性(參見 `aria.md`
但仍然存在許多問題需要大量的工作和時間來修復
### 框架使用
不建混合使用不同的框架,这会使代码难以维护
JavaScript 模块应遵循一主要框架,遵循框架的最佳实践
不建混合使用不同的框架,這會使程式碼難以維護
JavaScript 模組應遵循一主要框架,遵循框架的最佳實踐
荐的实现方式:
薦的實現方式:
- Vue + Vanilla JS
- Fomantic-UIjQuery
- htmx (部分面重新加其他静态组件)
- htmx (部分面重新加其他靜態元件)
- Vanilla JS
不推荐的实现方式:
不推薦的實現方式:
- Vue + Fomantic-UIjQuery
- jQuery + Vanilla JS
- htmx + 任何其他需要大量 JavaScript 代码或不必要的功能,如 htmx 本 (`hx-on`)
- htmx + 任何其他需要大量 JavaScript 程式碼或不必要的功能,如 htmx 本 (`hx-on`)
了保持面一致Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 进行简单的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一个简单交互的例,其中使用 htmx。如果您需要更高的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,并且代码设计良好且易于维护,也可以工作。
了保持面一致Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 進行簡單的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一個簡單交互的例,其中使用 htmx。如果您需要更高的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,並且程式碼設計良好且易於維護,也可以工作。
### `async` 函
### `async` 函
只有当函数内部存在`await`用或返回`Promise`时,才将函数标记为`async`
只有當函數內部存在`await`調用或返回`Promise`時,纔將函數標記為`async`
不建使用`async`事件监听器,可能会导致问题
原因是`await`后的代码在事件分之外行。
https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
不建使用`async`事件監聽器,可能會導致問題
原因是`await`後的程式碼在事件分之外行。
https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
如果一事件监听器必`async`在任何`await`之前使用`e.preventDefault()`
议将其放在函数的开头
如果一事件監聽器必`async`在任何`await`之前使用`e.preventDefault()`
議將其放在函數的開頭
如果我想在非步上下文中`async`
使用`const _promise = asyncFoo()`来告诉读
是有意之的,我们想调用异步函数并忽略 Promise。
一些 lint 规则和 IDE 也在未理返回的 Promise 时发出警告。
如果我想在非步上下文中調`async`
使用`const _promise = asyncFoo()`來告訴讀
是有意之的,我們想調用異步函數並忽略 Promise。
一些 lint 規則和 IDE 也在未理返回的 Promise 時發出警告。
### 获取数据
### 獲取資料
获取数据,请使用`modules/fetch.js`中的包装函数`GET``POST`等。他
接受容的`data`选项,将自动设置 CSRF 令牌返回
獲取資料,請使用`modules/fetch.js`中的包裝函數`GET``POST`等。他
接受容的`data`選項,將自動設定 CSRF 令牌返回
[Response](https://developer.mozilla.org/en-US/docs/Web/API/Response)。
### HTML 性和 dataset
### HTML 性和 dataset
禁止使用`dataset`,它的峰命名行使得搜索属性变得困
然而,仍然存在一些特殊情,因此前的准则是:
禁止使用`dataset`,它的峰命名行使得搜索屬性變得困
然而,仍然存在一些特殊情,因此前的準則是:
- 对于旧代码
- 對於舊程式碼
- 应将`$.data()`构为`$.attr()`
-极少数情况下,可以使用`$.data()`一些非字符串数据绑定到元素上,但烈不推使用。
- 應將`$.data()`構為`$.attr()`
-極少數情況下,可以使用`$.data()`一些非字符串資料綁定到元素上,但烈不推使用。
- 对于新代码
-使用`node.dataset`,而使用`node.getAttribute`
- 不要任何用户数据绑定到 DOM 节点上,使用合适的设计模式描述节点和数据之间的关系
- 對於新程式碼
-使用`node.dataset`,而使用`node.getAttribute`
- 不要任何使用者資料綁定到 DOM 節點上,使用合適的設計模式描述節點和資料之間的關係
### 示/藏元素
### 示/藏元素
-在 Vue 件中使用`v-if``v-show`来显示/藏元素。
- Go 模板代码应使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 来显示/藏元素,请参阅`.tw-hidden`注释以获取更多详细信息
-在 Vue 件中使用`v-if``v-show`來顯示/藏元素。
- Go 模板程式碼應使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 來顯示/藏元素,請參閱`.tw-hidden`註釋以獲取更多詳細資訊
### Go HTML 模板中的式和
### Go HTML 模板中的式和
使用以下方式:
使用以下方式:
```html
<div
@@ -136,16 +136,16 @@ Gitea 使用一些补丁使 Fomantic UI 更具可访问性(参见 `aria.md`
></div>
```
以使代码更易
以使程式碼更易
### 旧代码
### 舊程式碼
许多旧代码已经存在本文撰之前。建议重构旧代码以遵循指南。
許多舊程式碼已經存在本文撰之前。建議重構舊程式碼以遵循指南。
### Vue3 和 JSX
Gitea 在正在使用 Vue3。我们决定不引入 JSX以保持 HTML 代码和 JavaScript 代码分离
Gitea 在正在使用 Vue3。我們決定不引入 JSX以保持 HTML 程式碼和 JavaScript 程式碼分離
### UI
### UI
Gitea 使用一些自制的 UI 元素并自定义其他元素,以将它们更好地集成到通用 UI 方法中。当在开发模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些标准化 UI 例的面。
Gitea 使用一些自制的 UI 元素並自訂其他元素,以將它們更好地整合到通用 UI 方法中。當在開發模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些標準化 UI 例的面。