」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Hacktoberfest 週深入探討程式碼貢獻

Hacktoberfest 週深入探討程式碼貢獻

發佈於2024-11-01
瀏覽:775

Hacktoberfest Week Diving Deeper into Code Contributions

大家好!今年的 Hacktoberfest 怎麼樣?就我個人而言,到目前為止我真的很享受。我們現在已經進入 10 月的第二週,這意味著是時候提出完成挑戰所需的四個拉取請求 (PR) 了。本週,我決定進一步推動自己,為專案的程式碼庫做出貢獻,而不是像第一週那樣只專注於文件。

第一周回顧

在 Hacktoberfest 的第一個 PR 中,我致力於改進專案文件。作為一個初學者,我想透過較小的、可管理的任務來輕鬆進入這個過程。然而,在第二週,我決定做一些更具技術性的事情:為 GitExplorer 專案做出貢獻。

項目概述:GitExplorer

GitExplorer 是一個 Web 應用程序,可簡化頂級 GitHub 儲存庫的發現和探索。它允許用戶根據程式語言、主題和其他排序標準來過濾儲存庫。雖然 UI 仍在開發中,但該計畫為貢獻者(尤其是初學者)提供了寶貴的學習機會。存儲庫中的許多問題都被標記為“好第一個問題”,使其成為一個很好的起點。

為了做出貢獻,我選擇實作一個導航功能,以增強瀏覽儲存庫時的使用者體驗。

確定問題

該專案最初有一個用於導航到儲存庫下一頁的按鈕,但它缺乏完整的分頁系統。使用者無法輕鬆地在頁面之間來回導航或跳到特定頁面,這帶來了可用性問題。我注意到了這個限制,並要求專案維護人員將問題分配給我。

在我從事這個專案期間,突出的一個方面(但不是很好)是程式碼庫的結構方式。該專案將所有邏輯寫入單一 script.js 檔案中,隨著專案的成長,該檔案可能會變得難以維護。雖然我不想在此 PR 中進行重大更改(因為它僅關注分頁按鈕),但我計劃建議在未來的問題中重構程式碼結構。

實際上,在此之前,還有另一個開發人員創建了一個導航到下一頁的按鈕,但是當他們想要來回導航以及特定頁面時,這對用戶體驗不好。由於這個原因,我評論要求維護者為我分配這個問題。
當我從事這個專案時,有一點我不喜歡它。這是維護者建立程式碼庫的方式,因為他將每個邏輯僅寫入 1 個 script.js 檔案。但是,我不想對此問題進行太多修復,因為它只要求分頁按鈕。我將創建一個新問題,要求稍後重新建立程式碼庫。

新功能:增強分頁

現有功能只有一個按鈕可以在頁面之間導航,每頁顯示 10 個儲存庫。我的目標是實現一個更用戶友好的分頁系統,其中包含「上一頁」、「下一頁」和編號頁面按鈕。這將允許用戶直接跳到他們感興趣的頁面,使導航體驗更加流暢。

執行

GitHub API 約束

在實現分頁時,我遇到了 GitHub API 的限制,它將結果限制為 1,000 個專案。如果搜尋產生超過 1,000 個儲存庫,則嘗試超出此限制會導致錯誤,並傳回未定義的資料。鑑於設計每頁顯示 10 個儲存庫,我將頁數限制為 100 以避免遇到此問題。

代碼更改

  • 我在 script.js 中引入了一個新的

    部分用於分頁。這使我能夠添加一些 CSS 樣式來改善按鈕美觀和使用者體驗。
  • 分頁的核心邏輯被封裝在兩個新函數中:

    • createButton()
    • renderPagination() 這些函數會根據可用頁面動態生成分頁按鈕並套用樣式來停用目前頁面按鈕,防止使用者意外地重新點擊它。我還為按鈕添加了懸停效果,以獲得更精美的外觀。
  • CSS 改進

    對於分頁設計,我確保當前頁面按鈕已停用,並以不同的樣式來指示其狀態。其他頁面按鈕可獲得懸停效果,以增強互動性並改善使用者體驗。

    結論

    我對 Hacktoberfest 第二週的貢獻就到此結束。我現在正在尋找下周可以貢獻的另一個存儲庫。理想情況下,我希望找到一個更具挑戰性的項目,這樣我就可以繼續鞭策自己並逐步提高我的技能。

    感謝您的閱讀,我期待分享更多有關我的 Hacktoberfest 之旅的資訊!

版本聲明 本文轉載於:https://dev.to/anhchienvu/hacktoberfest-week-2-diving-deeper-into-code-contributions-12g1?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Node.js 中的新增功能
    Node.js 中的新增功能
    TL;DR: 让我们探索 Node.js 22 的主要功能,包括 ECMAScript 模块支持和 V8 引擎更新。此版本引入了 Maglev 编译器和内置 WebSocket 客户端,以增强性能和实时通信。还涵盖了测试、调试和文件系统管理方面的改进。 Node.js 22 将于 10 月进入 LT...
    程式設計 發佈於2024-11-07
  • 了解 MongoDB 的distinct() 操作:實用指南
    了解 MongoDB 的distinct() 操作:實用指南
    MongoDB 的distinct() 操作是一個強大的工具,用於從集合中的指定欄位檢索唯一值。本指南將幫助您了解distinct() 的用途、使用它的原因和時間,以及如何在 MongoDB 查詢中有效地實現它。 什麼是distinct()? distinct() 方法傳回集合或集...
    程式設計 發佈於2024-11-07
  • 為什麼 JavaScript 中的「0」在比較中為 False,而在「if」語句中為 True?
    為什麼 JavaScript 中的「0」在比較中為 False,而在「if」語句中為 True?
    揭開JavaScript 的悖論:為什麼「0」在比較中為假,但在If 語句中為假在JavaScript中,原語" 的行為0」給開發者帶來了困惑。雖然諸如“==”之類的邏輯運算符將“0”等同於假,但“0”在“if”條件下表現為真。 比較悖論代碼下面演示了比較悖論:"0" ...
    程式設計 發佈於2024-11-07
  • GitHub Copilot 有其怪癖
    GitHub Copilot 有其怪癖
    過去 4 個月我一直在將 GitHub Copilot 與我們的生產代碼庫一起使用,以下是我的一些想法: 好的: 解釋複雜程式碼:它非常適合分解棘手的程式碼片段或商業邏輯並正確解釋它們。 單元測試:非常擅長編寫單元測試並快速產生多個基於場景的測試案例。 程式碼片段:它可以輕鬆地為通用用例產生有用...
    程式設計 發佈於2024-11-07
  • 靜態類別或實例化類別:什麼時候應該選擇哪一個?
    靜態類別或實例化類別:什麼時候應該選擇哪一個?
    在靜態類別和實例化類別之間做出選擇:概述在PHP 中設計軟體應用程式時,開發人員經常面臨在使用靜態類別或實例化物件。這個決定可能會對程式的結構、效能和可測試性產生重大影響。 何時使用靜態類別靜態類別適用於物件不具備靜態類別的場景獨特的數據,只需要存取共享功能。例如,用於將 BB 程式碼轉換為 HTM...
    程式設計 發佈於2024-11-07
  • ⚠️ 在 JavaScript 中使用 `var` 的隱藏危險:為什麼是時候繼續前進了
    ⚠️ 在 JavaScript 中使用 `var` 的隱藏危險:為什麼是時候繼續前進了
    关键字 var 多年来一直是 JavaScript 中声明变量的默认方式。但是,它有一些怪癖和陷阱,可能会导致代码出现意外行为。现代替代方案(如 let 和 const)解决了许多此类问题,使它们成为大多数情况下声明变量的首选。 1️⃣ 提升:var 在不知不觉中声明变量! ?解释:...
    程式設計 發佈於2024-11-07
  • PDO::MYSQL_ATTR_INIT_COMMAND 需要「SET CHARACTER SET utf8」嗎?
    PDO::MYSQL_ATTR_INIT_COMMAND 需要「SET CHARACTER SET utf8」嗎?
    在有「PDO::MYSQL_ATTR_INIT_COMMAND」的 PDO 中「SET CHARACTER SET utf8」是否必要? 在PHP 和MySQL 中,「SET NAMES」 utf8」和「SET CHARACTER SET utf8」通常在使用UTF-8 編碼時使用。但是,當使用PD...
    程式設計 發佈於2024-11-07
  • 為什麼使用Password_Hash函數時哈希值會改變?
    為什麼使用Password_Hash函數時哈希值會改變?
    了解Password_Hash函數中不同的雜湊值在開發安全認證系統時,開發人員經常會遇到使用password_hash取得不同密碼哈希值的困惑功能。為了闡明此行為並確保正確的密碼驗證,讓我們分析此函數背後的機制。 密碼加鹽:有意的功能password_hash 函數有意產生唯一的鹽它對每個密碼進行哈...
    程式設計 發佈於2024-11-07
  • 為什麼與谷歌競爭並不瘋狂
    為什麼與谷歌競爭並不瘋狂
    大家好,我是 Antonio,Litlyx 的首席執行官,我們的對手是一些巨頭! Microsoft Clarity、Google Analytics、MixPanel...它們是分析領域的重要參與者。當人們聽到一家新創公司正在與如此知名的公司合作時,他們常常會感到驚訝。但讓我們看看為什麼與Goo...
    程式設計 發佈於2024-11-07
  • 如何在 Java Streams 中有效地將物件清單轉換為可選物件?
    如何在 Java Streams 中有效地將物件清單轉換為可選物件?
    使用Java 8 的可選和Stream::flatMap 變得簡潔使用Java 8 流時,將List 轉換為可選 並有效地提取第一個Other 值可能是一個挑戰。雖然 flatMap 通常需要返回流,但可選的 Stream() 的缺失使問題變得複雜。 Java 16 解決方案Java 16 引入了S...
    程式設計 發佈於2024-11-07
  • 避免前端開發失敗:編寫乾淨程式碼的行之有效的實踐
    避免前端開發失敗:編寫乾淨程式碼的行之有效的實踐
    介紹 您是否曾因看似無法理清或擴展的凌亂代碼而感到不知所措?如果你有,那麼你並不孤單。許多開發人員面臨著維護乾淨的程式碼庫的挑戰,這對於專案的長期成功和可擴展性至關重要。讓我們探索一些有效的策略來保持程式碼可管理性和專案順利運行。 了解基礎知識:什麼是乾淨程式碼?...
    程式設計 發佈於2024-11-07
  • 如何存取Python字典中的第一個和第N個鍵值對?
    如何存取Python字典中的第一個和第N個鍵值對?
    取得 Python 字典中的第一個條目使用數位索引(如顏色[0])對字典進行索引可能會導致 KeyError 異常。從 Python 3.7 開始,字典保留插入順序,使我們能夠像有序集合一樣使用它們。 取得第一個鍵和值要取得字典中的第一個鍵和值,我們可以使用以下方法:列表轉換:使用list(dict...
    程式設計 發佈於2024-11-07
  • 使用 cProfile 和 PyPy 模組優化 Python 程式碼:完整指南
    使用 cProfile 和 PyPy 模組優化 Python 程式碼:完整指南
    介绍 作为 Python 开发人员,我们通常先关注让代码正常运行,然后再担心优化它。然而,在处理大规模应用程序或性能关键型代码时,优化变得至关重要。在这篇文章中,我们将介绍两个可用于优化 Python 代码的强大工具:cProfile 模块和 PyPy 解释器。 在这篇文章的结尾,...
    程式設計 發佈於2024-11-07
  • 上週我學到了什麼(
    上週我學到了什麼(
    原生 JavaScript 中的反應性 – 使用代理模式在應用程式狀態變更時觸發事件。 (前端大師課程 - “你可能不需要框架”) throw new Error("Error!") 不能在三元中使用(至少不能用作'else' 部分。三元運算子的最後一部分必...
    程式設計 發佈於2024-11-07
  • 如何在 Linux 系統上將 Java 應用程式作為服務運行?
    如何在 Linux 系統上將 Java 應用程式作為服務運行?
    Linux 系統服務導航:將Java 應用程式作為服務運行在Linux 系統管理領域,將應用程式作為服務進行管理對於確保其可靠且受控的執行至關重要。本文深入探討了將 Java 伺服器應用程式配置為在 Linux 作業系統上作為服務運行的過程,為使用者提出的問題提供了全面的解決方案。 主要目標是創建一...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3