2014年12月14日 星期日

20141215 node.js入門,學習歷程 pt.2

延續20141211 node.js入門,學習歷程 pt.1

學習資源:
閒暇之餘又找了幾篇node.js的參考資料
找到一個node.js的投影片,旁邊還有幾個投影片可以看

關於NPM
12/15依賴注入Dependency Injection pattern
學習開始:
學習從Node入門 » 行為驅動執行開始,這節很短瞬間讀完,在此摘錄核心
  • 就像這樣,我們傳遞一個東西,然後伺服器利用這個東西來完成一些事。嗨~那個叫路由的東西,能幫我把這個路由一下嗎?但是伺服器其實不需要這樣的東西。它只需要把事情做完就行,其實為了把事情做完,你根本不需要東西,你需要的是動作。也就是說,你不需要名詞,你需要動詞。
此外他推薦了這篇文章來探討一些名詞真正的意義,在此先行備份
接著閱讀Node入門 » 路由給真正的請求處理程序這篇,一開始看到這句話就覺得不錯值得摘錄
  • 路由,顧名思義,是指我們要針對不同的URL有不同的處理方式。例如處理/start的 "業務邏輯" 就應該和處理/upload的不同
在這篇介紹了requestHandlers,最早聽到request Handler是在Node.js 入門, #1:Hello WorldNode.js 入門, #3:URL Routing 觀念與實作這兩篇文章,在看到上面的擷取文字後,對Request Handler的理解又更清晰了,你有不同的request要相對應到不同的處理方式,所以你要有個handler來幫你做,哪個request要相對應到哪個response。

接著,看到一個沒見過的關鍵字,依賴注入Dependency Injection pattern。找了幾篇文章放在學習資源那邊,尚未讀先繼續瀏覽這篇文章發現,Dependency Injection pattern似乎不是好的解決辦法,較妥當的辦法是associative array關聯陣列,接著他推薦了Advanced Web Applications With Object-Oriented JavaScript這篇文章 (尚未閱讀),並摘錄了下面這段重要的文字
  • 在C++或C#中,當我們談到物件,指的是類別(Class)或者結構體(Struct)的實體。物件根據他們實體化的範本(就是所謂的類別),會擁有不同的屬性和方法。但在JavaScript裡物件不是這個概念。在JavaScript中,物件就是一個鍵/值對的集合 -- 你可以把JavaScript的物件想象成一個鍵為字串類型的字典
在實作時遇到typeof,老實說很少用這個,於是辜狗閱讀淺談類型判斷 in JavaScript - Aar0n Huang這篇,發現typeof在實作時很容易出現問題,又另外辜狗了JavaScript教學 - 資料型態(Data Type) - 上 @ 小殘的程式光廊 JavaScript Garden | typeof 操作符,我喜歡JavaScript Garden 裡關於class與type的圖表,清楚解釋typeof在實作時容易遇到的問題,大都顯示為object,從這表中取得我們要的,當value為new Function("")時,它的class是Function,type也是function,有了這些基礎後看懂了router.js的code,終於實作成功request handler

接著閱讀Node入門 » 讓請求處理程序作出回應,這節內容超短,很快就讀完,主線紀錄,換個口味學點別的支線請見20141215 socket. io 基礎已實作完成支線任務,下一個目標是把支線任務的內容模組化

(以下內容2014/12/17新增)
接著學習Node入門 » 不好的實現方式這節,稍微略讀後,為了避免不好的coding習慣,決定不實作這節,絕對有必要實作這節,non-blocking是個重要的觀念,需要再多讀幾篇資料
在此節錄重要觀念
  • Node.js是單執行緒的。它透過事件輪詢(event loop)來實現並行操作,對此,我們應該要充分利用這一點 —— 盡可能的避免Blocking操作,取而代之,多使用Non-Blocking操作。
然而,要用Non-Blocking操作,我們需要使用回呼(callback),透過將函數作為參數傳遞給其他需要花時間做處理的函數(比方說,休眠10秒,或者查詢資料庫,又或者是進行大量的計算)。
(以上內容2014/12/17新增)

沒有留言:

張貼留言