終於可以去學Backend
話說花世終於可以去學寫程式,課程簡介是由Node.js和MongoDB開始教,但是class schedule由什麼是JavaScript開始,還不會教到constructor。
⋯⋯不過實際上課老師還提到有些人大學讀CS可能沒選algorithm,這樣可能需要再學會比較好。
1. 寫App前記得要做UML,也要學會考慮網站期望。例如政府網站期望用戶很短時間找到需要的資訊,不是期望用戶留很長時間,所以網站醜樣是正常的。
2. 多數人都用VS code,但是有的企業會用JetBrains的東西,可以看一下。
3. 就算上課學不了技術,也可以當做學習 project mangment 。
4. ECMA-262就是JavaScript ,JavaScript特別要注意this的用法。
5. Browser有parsing phase和execution phase。Script放HTML body底部,因為次序會影響user體驗。DOM的JS Parsing會slow down HTML loading。還有不要寫古怪code,因為chrome V8會optimise 。
6. 關於蟬翼,用lighthouse檢查慢的原因,拖曳的功能加了不少多餘CSS。Wordpress plugin 不要update,可以先用wordpress做V1,有營利的時候再Django做V2。
7. React雙數字尾是stable的版本,react出了後前端變難因為react比較複雜。用框架是因為這樣不會污染dom(?),還因為react出現所以網絡爬蟲打撈不到資訊。
8. 以前用XML,不需要用太多資訊所以改JSON。
9. 相容性問題,Firefox都過到的話就基本可以,因為它比較像IE,Chrome有連node,不是standard。
10. Windows有path的問題,寫程式用Mac比較方便。一種防止慘劇發生的方法是用WintoUSB,Mac就接external hard desk。
11. HTML Document = 一個DOM = 一個object還是global object。
–
程式課⋯⋯上課講到最重要的地方花世直接睡成死豬被關愛,不重要的地方例如同學下載失敗卡著就一直清醒。
1. Bowser有三大陣營,Chrome、Edge都是用V8;IE 、Firefox一組、Opera歐美和大陸比較常見。開發主流都是用chrome,因為node 是chrome的internal engine。
2. JQuery在node出現後慢慢退潮流⋯⋯ JQuery Ajax非同步的功能,在node的function call有event loop就不再需要Ajax。
3. JavaScript萬物都是object,除了7個基本data type。
4. Scope change到頂層的window是null。然後undefined是系統使用的,沒有塞數值時都是undefined,如果想避免混亂空的變數最好套null而非undefined。
5. Window = 執行環境,HTML Script 呼應browser internal function。Excretion content 結構是樹型,宣告變數後變數名稱會勾去excretion content。所以盡量用function讓function貼去excretion content,宣告很多variables會污染window還無法刪除。
6. 重要function 用const。
7. 等於的left value是地址,right value 是計算。任何小括號出現都是表示要計算+有值返回,程式優先處理小括號。
8. Parsing中bowser認關鍵字、看有沒有打錯,當遇到獨立開頭字是function(或var let等等),就會註冊到window object(function顯示成一個f),function的名字變成地址,function入面的東西先不理會。Execution時之後再找有沒有註冊。進入另一層再Parsing,execution。沒事做才逐漸還回memory。 function有括號才execution,沒有括號只會將顯示地址內容。
9. Expression是計數,statement不需值只是動詞(做事情),for while loop 都是statement又有expression計算控制次數。JavaScript特別的是expression能加分號能變expression statement。總之expression尾加分號就不會出錯,不加就有機會中伏。
–
心煩意亂的scope chain那部分沒有聽進去。
1. 舊式教法hoisting是錯誤的,compiler並不是將function 擺最上面,這只是方便理解的說法。
2. JavaScript是scripting language ,不會翻譯做exe,會逐行逐行運作。第一步是分配資源,bowser不會處理HTML的錯誤,但會檢查JavaScript的問題⋯⋯因為寫錯的memory 會爆炸。雖然用compiler的說法但JavaScript是interpreter  。
3. 用ZEAL可以找內建function用法。
4. WordPress的檔案太大方面無能為力。
5. JAVA有private,JavaScript沒有,所以就用closure的手法做protection。
6. Parsing時見到var就登記window object,註冊先給undefined。Let const都不在parsing註冊,而是先放在TDZ(Temporal Dead Zone)。
–
繼續是電腦課筆記:
1. 雖然寫程式可以分行,但是關鍵字必須是完整的一行,否則電腦會當成是獨立的意思。
2. -1/0+1/0=NaN
3. 電腦記錄數字方式分為整數和少數。
4. Const 通常習慣都是全部大寫,Class就是起首大寫。
5. Basic data type自動入window object class,於是用有輔助性的method,例如Number(3.0).toFixed()。
6. Parallel processing在Node時再講。
7. 使用Let時如果先console.log變數才declare variable會error(但是var不會),這是因為parsing 使用let時會先放在TDZ, 變數一直沒有value,直至到expression找不到地址,就給undefined。Let去 heap隨時可以刪除,TDZ會數變數的次數,相反var會貼在window。
–





–
Leave a Reply