我曾經認爲--若是我瞭解JavaScript,那寫後端會很容易。我之因此認爲簡單,是由於Node是JavaScript。我不必去學一門新語言。前端
然而,我錯了。git
可是,後端是很難去學的。我花了很長的時間去學習它。(固然,我如今仍然嘗試去掌握它)。github
我意識到在學習後端中我有些問題,由於我曾認爲前端和後端是同樣的 -- 它們都是代碼而已。數據庫
這是個很大的錯誤。後端
前端和後端徹底是不一樣的野獸。我能正確地學習後端以前,我必須尊重他們的差別。服務器
若是讓我來解析前端和後端之間的差別(在執行方面),我會說:frontend
當咱們構建前端事物,咱們很大程度上關注了用戶對咱們構建的東西是怎麼看的。咱們花費了大量的時間自問了下面這些問題(每一個問題都帶來數不盡的工做):學習
咱們都關心。網站
有時候,咱們爲了提升用戶的視覺體驗(帶來愉悅感),咱們添加了諸以下面的事物:code
伴隨着每一個附加功能,咱們還必須考慮它們可能帶來的影響:
咱們考慮不少東西 -- 從用戶的視圖層面。這就是爲何我說前端是有關視覺的。
咱們爲用戶着想。而後咱們爲他們構建產品。
不幸的是,一些開發者自欺欺人地認爲
用戶 === 他們本身
。他們爲本身創建網站而不是他們的用戶。
讓我具體一點。當我說到後端,我指的是前端和數據庫之間的層。它也是前端和你須要通訊的任何API
之間的層(若是它經過你本身的服務器)。
咱們簡化事情讓一些人明白,我在講你將在哪裏建立一個Express
應用程序。
當你作後端工做時(前端->後端),你會發現咱們再也不建立接口了。你不用填寫表單;你不用點擊按鈕。那是由於它們不須要。
後端不是關於視覺。沒人肉眼看到發生了什麼。它只是要運行...
可是,運行意味着什麼?
後端容許前端和數據庫之間的通訊(或任何外部的API)。回到之前,想象下一個電話接線員。若是你打電話給一我的,這些接線員必須手動的鏈接你和你要打給的那我的。(若是他們接線錯誤,你就打給了錯的人)。
當你構建一個後端時,你就像電話接線員。你把東西鏈接起來就能夠了。
當咱們構建後端時,咱們會問以下的問題:
咱們還要考慮速度和可靠性。(想象一下,若是你發送了一些東西,可是沒有收到任何回覆的話會發生什麼...)。可是,這是更加高級的話題了。
這是我在學習後端的早期觀察到的一種常見模式:
Google
上搜索,如何經過我想到的具體方式來實現東西Google
結果也許是空)我幾乎老是錯的,由於在學習後端的時候,不自覺地依靠了個人前端經驗。我必須學習從新思考問題的方法。
這是我最大的收穫:
不要覺得你對本身學的東西瞭如指掌。你幾乎老是錯的。慢下來,讓你有時間和空間去學習。在學習的過程當中始終驗證,以便你記住並從新鏈接你的大腦。