嗨!我叫 Peter,如果你不認識我,我是電腦科學專業的學生,目前正在學習 David Humphrey 教授的 2024 年開源主題課程。
自 2024 年 9 月以來,我一直致力於在開源社群中建立自己的影響力。如果你想跟隨我的旅程,可以在 GitHub 上找到我:

peterdanwan (Peter Wan) · GitHub
全端開發人員 |遊戲與人工智慧愛好者 -彼得丹萬

了解專案的範圍
第一步:了解我正在做什麼。 expressjs.com 是express 的官方文件網站,express 是最受歡迎的 Node.js Web 框架之一。雖然從他們設計精美的網站上可以很快掌握這一點,但旅程才剛開始。

Express - Node.js Web 應用程式框架
Express 是一個快速、無主見、簡約的 Node.js Web 框架,為 Web 和行動應用程式提供了一組強大的功能。
了解當前的問題
熟悉專案後,我尋找了一個可以解決的問題。我找到了這個:
連結損壞和頁面遺失
第1684章
以下連結已損壞 _includes/header/header-id.html
_includes/header/header-th.html
建議更改為:發布更改日誌缺少頁面導致 UZ 語言控制台錯誤: /css/langs/uz.css
建議新增此頁面。
我選擇這個問題是因為它涉及 HTML 和 CSS - 我熟悉且熟悉的技術。然而,看起來簡單的東西實際上教會了我關於開源開發的重要一課:
即使是看起來熟悉的任務也可能涉及不熟悉的領域。
儲存庫使用了我以前從未接觸過的技術,這才是真正學習的開始。我花了大約一個小時才決定是否嘗試這個問題——回想起來可能太久了。我很猶豫,因為該專案使用了 Ruby,這對我來說是全新的。
劇透警告:設定 Ruby 是...一次冒險。
了解如何在本地設定項目
設定本地開發環境通常是開源貢獻中最具教育意義的部分之一。
透過嘗試在本地運行expressjs.com,我了解了一些關於 Ruby 和 Jekyll 的知識。
以下是我的旅程:
最初的困惑:我先直接在 Windows 上安裝 Ruby。雖然它有效,但並不理想,因為我安裝的版本與專案中使用的版本不同而出現問題。 Windows 上的版本管理並不有趣。因此,我卸載了 Windows 上安裝的 Ruby 及其其他依賴項,並尋找替代解決方案。
WSL 發現:我的研究使我得出的結論是,我應該在Windows Subsystem for Linux (WSL) 上運行Ruby,因為它提供了更好的開發環境並可以存取強大的Ruby 版本管理器(RVM),它使我能夠處理使用不同版本Ruby 的專案。對我來說,安裝 RVM 的感覺非常相似,因為我使用 nvm-windows 來允許我在不同的節點版本之間切換。
版本管理學習曲線:我再次了解了 RVM 以及它與 Node.js 的 nvm 的相似之處。這教會了我在開發環境中版本管理的重要性。
以下是我用來準備開發環境的實際指令:
## 1. Installing RVM (Ruby Version Manager) # First, import GPG keys needed to verify RVM installation gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # Download and install RVM \curl -sSL https://get.rvm.io | bash -s stable # Verify RVM is installed and get its path which rvm # Load RVM into your current shell session source /home/peter/.rvm/scripts/rvm ## 2. Installing Ruby # Install Ruby version 3.3.5 (latest stable as of early 2024) rvm install 3.3.5 # Set 3.3.5 as your default Ruby version rvm use 3.3.5 # Verify RVM and Ruby installations rvm -v ruby -v ## 3. Setting up Jekyll # Install Jekyll and Bundler gems gem install bundler jekyll # Install project dependencies from Gemfile (must be within the target directory with the Gemfile) bundle install # Start the Jekyll server with live reload and external access # --host 0.0.0.0 allows access from other devices on your network # --livereload automatically refreshes your browser when files change bundle exec jekyll serve --host 0.0.0.0 --livereload
解決問題
配置好我的開發環境後,我就可以開始解決手邊的問題,即簡單地更新
包含指向英文版連結的損壞連結的錨標記(因為英文版連結並未損壞)。
這是整個貢獻中最簡單的部分。
我還確保查看一些日誌以查看是否有任何需要修復的錯誤。我建議添加另一個檔案 css/id.css,它遵循相同的
已新增的文件的編碼格式,因為我有一個可以解決某些錯誤日誌的暗示。
expressjs.com 的維護者之一 Chris Del,提供了非常即時的回饋,表明這是要做的事情(謝謝 Chris!)。
因此,我也將此變更新增至我的拉取請求。
等待合併變更並學習參與討論
話雖如此,我所做的更改現在正在等待合併到expressjs.com的主分支中。
後續也特別討論了expressjs.com網站的標準。即:
使用者應該被重定向到有效的英文頁面而不是正確語言的損壞連結嗎?
這不是由我決定,但我想參與討論。您可以在這裡關注討論。
學習成長為開源開發人員
最初的一個簡單的 HTML/CSS 修復變成了一次旅程,教會了我有關開源開發的寶貴經驗:
走出舒適圈:雖然我選擇了一個涉及熟悉技術(HTML/CSS)的問題,但我最終學習了一個全新的技術堆疊(Ruby/Jekyll)。這告訴我,當我們願意應付不熟悉的事情時,成長就會發生。
技術發展:設定開發環境、管理版本和使用新工具都是至關重要的技能。每一個挑戰都會讓下一個挑戰變得更容易實現。
社群參與:透過諸如語言重定向討論之類的討論,我了解到開源不僅僅是程式碼 - 它是關於參與影響專案決策的有意義的討論。
展望未來,我計劃透過以下方式進行改進:
- 應對日益具有挑戰性的問題
- 學習使用不同的技術堆疊和開發環境
- 更積極參與專案討論與決策
- 貢獻文件並幫助其他新人
- 在開源社群內建立關係
最重要的是,我了解到,成為一名高效的開源開發人員並不是要了解一切,而是要願意學習任何東西。每一次貢獻,無論多小,都是一個成長的機會,並對我們關心的專案產生正面影響。
如果您正在考慮參與開源,請記住:從小事做起,保持好奇心,不要害怕邊學習邊學習。社區隨時幫助您成長。
以上是為expressjs做貢獻的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。