--- date: "2021-10-13T16:00:00+02:00" slug: "guidelines-frontend" sidebar_position: 30 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/) 作為前端框架。 HTML 頁面由 [Go HTML Template](https://pkg.go.dev/html/template) 渲染。 源文件可以在以下目錄中找到: - **CSS 樣式:** `web_src/css/` - **JavaScript 文件:** `web_src/js/` - **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) ### 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 的 `helpers.less` 中的輔助 CSS class 可能會有所幫助。 5. 後端可以使用 `ctx.PageData["myModuleData"] = map[]{}` 將複雜數據傳遞給前端,但不要將整個模型暴露給前端,以避免洩露敏感數據。 6. 簡單頁面和與 SEO 相關的頁面使用 Go HTML Template 渲染生成靜態 Fomantic-UI HTML 輸出。複雜頁面可以使用 Vue3。 7. 明確變量類型,優先使用 `elem.disabled = true` 而不是 `elem.setAttribute('disabled', 'anything')`,優先使用 `$el.prop('checked', var === 'yes')` 而不是 `$el.prop('checked', var)`。 8. 使用語義化元素,優先使用 `