Contents
使用 Node.js、PostgreSQL、SQL、React、Redux等建構一個全端專案!涵蓋API、身份驗證等等!
從這 18.5 小時的課程,你會學到
- 用 Node 建立一個後端伺服器和應用程式
- 使用 Node 和 Express 建構一個 Web API
- 用 React 和 Redux 建構一個 Web 應用程式
- 從頭開始建構一個安全的身份驗證系統
- 理解 NodeJS 原理,包括 V8 引擎和著名的事件迴圈( event loop )
- 瞭解關聯資料庫設計及其優點
- 理解基本的 Web 開發概念,如 Web 請求、客戶端-伺服器關係以及核心 Web 協議
- 瞭解資料庫中函式( functions )和表名字( table names)的某些軟體命名實踐之間的權衡
要求
- 這門課程需要一些程式設計經驗。 這門課程不是程式設計的入門。 最好是學過一兩個程式設計課程之後修。
- 不需要Node、 PostgreSQL、 React 和 Redux 經驗。 所有這些概念將從頭為你說明
- 建議已有 JavaScript 經驗。 本課程將介紹 JavaScript 並解釋每一行。 然而,一旦一個關鍵詞被引入,課程假設你已熟悉這些關鍵詞的概念。 本課程關注的焦點是帶你成為全端工程師,而不是入門 JavaScript。 如果這是你第一次學習 JavaScript,那麼把這門課程的進度看作是一個從不同方位了解各種語言很好的方式。
- 建議具備一些命令列( command line )的經驗,但並非絕對必要。 這門課程在命令列原則上有一個簡短的複習,我們只會使用基礎知識。 但是你對命令列越熟悉將越容易進入狀況。
課程說明
你為什麼要選這門課?給我五分鐘,讓我解釋一下為什麼。
這是我成為軟體工程師之前需要的課程
這是我成為一名在舊金山市中心工作的全職軟體工程師之前所需要的課程。 這裡集合我每天工作運用的知識。 瞭解全端的所有知識是至關重要的。
但是當我在自學的時候,要涵蓋每一層次的知識就像是在散落廣闊的拼圖碎片中尋找拼接。 資源到處分散,他們都在不同的地方。
我需要它們都在同一個地方。 我需要這一切都在一個專案中。 這就是這門課的目的。
本課程是幾個月(實際上是幾年)研究的精選,有關閱讀過的數以百計程式設計文章,聆聽過的許多場技術講座,在很多場駭客松開發的專案,在大學裡學習的電腦科學,還有我以軟體工程師的身份從事專案工作的經驗。
全包在同一處一起學。 一專案包羅萬象。
專注於功能,就像在行業中開發一樣
本課程的專案映射你將在行業中開發專案的樣子。
我還對專案開發做結構化,以映射應用程式是如何在行業內建立的。 你將開展你的全端專案,就像現實世界中的專案如何進行一樣。 你將專注於功能。
你將一次建立專案的一個功能 – 不斷地改進軟體和向用戶發佈。 這與其他聚焦架構的課程截然不同。 這意味著,你不會建構整個後端,然後再去做整個前端。 相反,每個新功能都將涉及到全端( 前端+後端 )架構的各方各面。
DragonStack 專案
什麼是 DragonStack 專案?
Dragonstack 專案是一個用於收集龍的多帳戶收集器應用程式。 你可以交易、購買、繁殖你的龍! 通過出售龍,你可以賺取貨幣。 或者如果另一個帳戶使用你的龍進行交配服務,你也可以得到貨幣。 每條龍都有獨一無二的特點,屬於特定的一代。
這個應用程式很不一樣。 這不是一個 Facebook,也不是 Twitter 的克隆。 現在,架構的核心是一樣的。 在 Facebook 和 Twitter 這樣的大型應用背後,是你在這門課程中學到的概念。 但是你會用這些概念來創造一些獨特的東西。 如果你已經在投入時間去學習全端,我希望你能做一些別人以前沒有做過的東西。 這樣,你就能學會如何將這些概念應用到創新。
從頭開始
在這個課程中,你將從頭開始建構所有的東西。 你將接管全端的每一層。 你不會使用任何獨立的 API 功能。
- 你將建立 API。 當然,你可以通過使用一個公共 API 來了解 web 請求( web requests )。 但是為了充分了解這些 web 請求 API 是如何作用,你需要自己建構一個。
- 你將能完全控制資料庫。 你不需要依靠一個程式庫( library )來幫你管理資料庫。 你不會感到資料庫難以掌控。 不,你將擁有完全的控制權,並自己生成 SQL。
- 你將建立身份驗證系統。 在學習過程中,通常身份認證是一個容易被跳過的步驟。 這裡不會,身份認證是一個需要理解的關鍵概念。 99% 的應用程式,或者正在開發的應用程式,都有一個帳戶庫。
這是本課程的核心哲學。 除了從頭開始建構 API,你還會建立完整的後端。 這將包括伺服器和核心資料庫檔案。 此外,你還將建立一個完整的前端,使用現代化的和非常廣泛使用的 React 程式庫( library )。
基於概念理解的全貌
當你使用新技術的時候,看到全貌是非常重要的。 因此,在這門課程中,你將學到的不僅僅是如何以用 Node.js、 PostgreSQL、 React 和 Redux 做程式設計。 除此之外,你還可以瞭解這些技術背後的設計、模型和想法。 你會知道公司如何將這些技術應用到他們的問題上。 通過對這些概念的基本理解,你將能夠看到每一層次在全端中怎樣合在一起。
實踐經驗
不會因為這門課程有很大成分強調概念,就意味著你不會盡快深入瞭解這些程式碼。 這門課程也側重於實踐經驗。 畢竟,只有當你實際應用並建構軟體時,這些概念才會被強化!
在課程結束的時候,你將已歷經多種技術的開發。 毫無疑問,你可以自信地將 Node.js、 PostgreSQL、 React 和 Redux 新增到你的履歷中。 另外,你的履歷組合中會有一個令人印象深刻的全端( full-stack )專案來佐證。
更不用說,你可以做很多最後的課程挑戰,讓你的課程專案成為最獨特和最先進的展現。
課程挑戰
在整個課程中散落著各種挑戰。 這不是那種你會一直盲目追隨的課程。 這些挑戰會讓你有機會自己實現下一個功能——根據自己的經驗加強你的知識。
如前所述,還有一個最終課程挑戰列表。 這些都超出了課程的範圍。 但是這些都會讓你的專案顯得更加突出。
簡單
除了教授全端 Web 開發及其核心技術之外,本課程的首要重點是簡單地建構程式碼。 無論我們用什麼技術編寫程式碼,我們都會確保以一種簡單的方式來設計我們的類( classes )和建構我們的功能。
現在簡單並不意味著容易。 容易意思很相近。 但不要以為容易和直接的解決方案,就意味其是正確的。 有時候,容易的解決方案實際上是一個需要更多工來修復的捷徑。
我們對簡單的定義就是單一性( singularity )。 這門課程的簡單性是組成單一( one-fold )的意思。 我們將盡可能使我們的功能簡單、組成單一、目的單一。 我們不希望我們的函式具有大量的副作用,這些副作用會給我們的應用帶來不必要的複雜性。
可擴張性
簡單是可擴張性的前提。 因為你將以一種簡單的方式編寫函式,然後將發現你能夠快速地新增新的功能到應用程式。 製作出最簡單設計的前期成本將為後續的程式擴張帶來巨大的回報。
Dragonstack 的進展
你在 Dragonstack 專案上的進展將如指數曲線般成長。 在整個課程中,將有圖表顯示你在這門課上的進展狀況。 將會有一個初始的熱身期。 然而,一旦你度過了這個難關,你的步伐就會飛速上升。 下定決心讓這種勢頭繼續下去。 當你上了生產力的高速公路,這是最好的感覺之一。
其他詳情:
Promo Music Credits
Ben Sound 的 “Slow Motion”
Redux Broken Down
Redux 對於處理前端開發和 React 可以是非常複雜的概念。本課程對 Redux 歸根究底,並深入底層。我們不會將 Redux 看成是解決所有問題的魔法程式庫( library)。不,這門課程將全面深入 Redux。我們將實驗它的功能,檢查它的參數,甚至考慮程式庫的整體設計的各個決策。
Promises !
即是 JavaScript Promises ! Promises 將在這門課程的後端發揮巨大的作用。所以,如果你正在尋找一個很好的藉口來學習 JavaScript 的 Promises,那麼這個專案對你來說是完美的! 我保證。
命名
這門課程會多花點時間討論命名,可能比其他課程多。 有些人可能會說變數命名是任意的:”只要給某個東西一個簡潔明瞭的名字就可以了…” 對此,我完全不同意! 命名是軟體最重要的部分之一。 命名正確與否可能決定讓人輕鬆理解一個程式碼基底讓工作流程順利進行,或要花費幾分鐘甚至數小時來理解函式如何互相作用耽擱了工作。
演講速度
由於 Udemy 允許學生加快講課速度,我會以能讓人了解的速度講述。 你可以依自己喜好改變速度。
目標受眾
- 任何有一些程式設計經驗,想知道開發全端應用程式需要做什麼的人
- 學習了 React,但是還沒建立過全端的專案的學生
- 那些有後端經驗,想要前端經驗的工程師。 同樣適用,那些想要後端經驗的前端工程師
- 瞭解一點點 Node、PostgreSQL、React 或 Redux ,但還沒把所有這些概念整合一起的學生
講師簡介
David Joseph Katz 軟體工程師
David 是舊金山 Zendesk 的一名軟體工程師,擁有舊金山大學的電腦科學學士。
David 從科技產業獲得了寶貴的經驗。 他希望與其他程式設計師和新興工程師分享他所學到的許多經驗。 他的程式設計方法背後的哲學是 : “把弱點轉變成力量。 學習最令人生畏的語言。 深入探究最棘手的問題。 有了這種心態,你就能掌握一切。”
你可以隨興與 David 聯絡。 他總是對你正在做的很酷的專案感到好奇。 他也樂於分享如何建立有影響力技術的想法。
英文字幕:有
- 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To
參加課程 | ♥找優惠折扣碼?| 課程討論專區

也許你會有興趣
- React 程式設計學習地圖
- 更多 NodeJS 相關線上課程
- ★英語學習地圖 – 練好英文是最大的學習槓桿
- 如何找工作學習地圖 – 找工作不要靠運氣!
- 追蹤這個 Twitter ,得到 Soft & Share 特價課程訊息