Q1: 請問期中題目還沒做好準備,可以稍微延後完成嗎?會建議進度落後的同學完成14周課程後再進行其中測驗嗎?還是可以直接測驗呢?謝謝老師
A1: W20 再買一個月給大家用。
Q2: 在 week12 [MTR05] Todo list 參考範例 Part4 的影片中看到,todolist 的資料是以 JSON 的格式儲存在資料庫中,想問這做法和另外開 table 專門存 todolist 資料的差異。想儲存 JSON 格式是否用 mongoDB 這類非關聯式資料庫會比較適合呢
A2: 根據不同情境去選,因為這裡沒有要對資料做 query,所以可以把整包 json 丟進去。
Q3: 目前學到現在學了工具也打了程式基礎,開始思考未來的領域,想詢問如果還不確定自己喜歡哪一個方向的話是怎麼去做選擇的呢?(這邊指的是類型:例如 寫app,或是 去做網站,甚至是開發軟體,或寫遊戲等等的) 需要等到出去外面找工作一一接觸過後才可以確定自己喜歡或者更擅長哪一個領域嗎?
A3: 沒有很明確的方向的話,就代表你其實都可以。要不就在花時間再去寫一個 app,或者開發一個遊戲看你有沒有興趣,課程中沒有的,那就自己試著接觸看看,要接觸才知道喜不喜歡。
Q4: 請問老師 fetch 如果寫了 content-type 為 application/json 為什麼 body 還需要用 JSON.stringify() 去解析,既然是要求 content 為 JSON 為什麼不能直接用物件 {} 的方式帶入 body,謝謝
A4: 因為這兩個東西是獨立分開的,用 axios 可以直接轉換。fetch 是比較底層的 api,所以不會有更多的邏輯操作。
Q5: week12 老師示範 $.ajax 串 api_add_comments.php ,表單 submit 網頁就可以將新增最新留言出現在頁面上了,為什麼需要在監聽事件阻止預設行為又用 .done 重新 append 來顯示最新留言呢 ? 純為了使用者體感嗎 ?
A5: 對,因為 ajax 就是為了不換頁跟 server 交換資料。
Q6: 有關final project] 想問老師如果想要提早做 final project 但現在還沒學 react 是建議從後端開始做嗎 還是要學到 react後再做比較好規劃
A6: 後端建議用 express 不要 PHP,會比較好寫,現在可以先規劃你要做的東西,偷偷去看 PD101 的課程,會對整個產品會比較了解。
Q7: 每週作業說明跟範例影片都是要盡量不要看範例解答先自己實作看看,老師在隨意聊也提到結業理想目標是「不看解答能查資料」能做出作業,這邊疑惑如果學習方式作業都先看範例做,但自己規劃類似的功能或project是參考作業跟範例,想問老師這樣可以算學會嗎,或是是好的學習方式嗎 (edited)
A7: 要看你自己,對於完全學會的定義,就是「能獨立自己憑空開始做,自己做完,可以查資料,但不可以看範例之類的」
Q8: 不太理解為什麼第四期官網適合用 gulp 而不是 webpack ~ 能否請老師詳解? 謝謝!
A8: 因為第四期的官網是純靜態的東西,沒有東西可以打包,所以比較適合用 gulp,真正需要的是「圖片壓縮」、「html 壓縮」、「js uglify」
Q9: 使用 babel 讓程式碼也可以支援舊瀏覽器,可是這樣轉換後的程式碼可讀性降低很多,一般做 babel 轉換之後,還會保留原始(轉換前)的程式碼來做後續開發維護嗎? 是的話,那寫程式的時候是不是盡量用比較新的語法例如 async 比較好(因為會比 cb 好閱讀)?
A9: 我們只會保留原始的程式碼,永遠只會修改原始檔案,要上傳時才會去 build 再上傳。用新語法比較好。
Q10: week13 介紹了 SCSS, babel, gulp, webpack ,課程是說有很多套件,所以只介紹幾個常用的。想請教老師還有什麼其他好用的套件嗎?
A10: 這些就是比較常用的,其他的套件都是特定領域的。
Q11: 【W12 留言板範例程式碼】 不知老師是否能講解96行與42~51行之間是怎麼運作的(執行順序) 不太懂為什麼cb沒有被定義但 cb(data) 之後會把 data 帶回去96行那邊再把留言render出來 謝謝老師!
A11: 這裡使用的箭頭函式其實就是一個 fn,因此 cb 是有定義的,只是不熟悉的話,很難看出來。
Q12: e.stopPropagation() 是阻止事件的傳遞,目前只了解定義不太會運用,老師可舉範例嗎 e.preventDefault()是預設原本的行為 要怎麼知道目前預設的行為是什麼呢 根據 html標籤嗎 ,例如 form的預設行為是 submit
A12: 是根據 html標籤沒錯,btn 的預設行為就是 click,form 是 submit
Q13: 想請問 Async await 這樣把非同步寫成類似同步的樣子是現在主流的寫法嗎 如果是的話代表先前的cb因不好閱讀而逐漸被淘汰嗎
A13: 對,比較好看也好懂,還可以用 try catch 抓錯誤。但有時候還是需要 cb,例如 eventListener 之類的。
Q14: 老師~~剛剛callback function那題 留言是在第50行的cb(data) 那邊被執行而render出來的嗎 而不是第9x行那邊
A14: 就是一種跳來跳去的概念
Q15: 面試的時候比較常採用大概怎樣的方式?可以稍微敘述一下嗎
A15: 可能會有前測,線上寫完題目以後,去面試。有些會有筆試,主管問問題。
Q16: 想請問全部進度上完後,如果回頭改寫部分作業,可以再次push給助教訂正嗎?謝謝老師~~
A16: 可以。
Q17: 之後我們還會機會再用到 gulp 跟 webpack 嗎
A17: W20 會默默用到
Q18: 之前直播有說實務工作上大部分是改code(維護)居多 想請教老師為何認為自己從頭寫出來還是最重要
A18: 作業碰不到維護的東西,但是要找出 bug 之前,就會清楚整個流程,所以更容易找出錯誤的地方,也是身為工程師的基本能力。
Q19: 想請教老師 callback, Promise, async/await, 之間的差異嗎?真的很常搞混,感謝老師
Q20: 如果 MySQL 安裝成功,可是用 sequel pro, sequel ace, MySQL workbench 都連接不到資料庫,這樣怎麼辦?
A20: 應該是跟資料庫設定有關,就跟你用哪個工具無關。
Q21: 會推薦看語法書嗎?
A21: 老師小時候看過,長大就沒有了,沒有推薦也沒有不推薦。
Q22: 語法糖的定義可以再講多一點嗎 不是很懂,或是為什麼叫語法糖
A22: 對實際功能沒有太大差別,但比較好寫。例如 async, await 沒有改變它是一個 promise 的事實。
Q23: GraphQL 介紹
A23: 概念:能不能打一次 api,就拿到所有資料;只有一個 endpoint,永遠用 POST,要什麼資料就寫在 body 裡面。
PS W14 直播 會 live 帶大家部署。