標籤

2017年3月19日 星期日

Node.js-Module(導論)

重點整理
  • 什麼是module?在此引用Node.js v7.7.3 Documentation的部分內文"In Node.js, files and modules are in one-to-one correspondence (each file is treated as a separate module)."。簡而言之,匯入一個檔案就可以說是匯入一個module
  • Module可分為兩類:
    Core module,已被編譯為二進位格式,屬於Node.js資源(source)的一部分,通常會比file module優先載入。在此引用Node.js v7.7.3 Documentation的部分內文"Node.js has several modules compiled into the binary. These modules are described in greater detail elsewhere in this documentation. The core modules are defined within Node.js's source and are located in the lib/ folder. Core modules are always preferentially loaded if their identifier is passed to require(). For instance, require('http') will always return the built in HTTP module, even if there is a file by that name."
    File module,自行撰寫或由他人撰寫的.js、.json或.node檔案
  • require()可匯入core module及file module,但是file module必須明確指定檔案路徑,可以是絕對路徑"/path/.../circle.js",或是相對路徑"./circle.js",當沒有註明路徑類型時會假設其為core module或是位於node_modules資料夾中。在此引用Node.js v7.7.3 Documentation的部分內文"A required module prefixed with '/' is an absolute path to the file. For example, require('/home/marco/foo.js') will load the file at /home/marco/foo.js. A required module prefixed with './' is relative to the file calling require(). That is, circle.js must be in the same directory as foo.js for require('./circle') to find it. Without a leading '/', './', or '../' to indicate a file, the module must either be a core module or is loaded from a node_modules folder."
  • 當匯入模組成功後會傳回一個物件,包含該module的所有屬性及方法。但module中大部分的程式邏輯都視為private而無法直接被使用,除了exports及module.exports物件(object)

實作
Core module的寫法:
執行結果

File module的寫法:
執行結果

其他參考文章
佳魁資訊所出版"為什麼全世界都在學Node.js"

2017年3月16日 星期四

Node.js-Synchronous和Asynchronous(導論)

前言
非同步(Asynchronous)作為Node.js的一大特點,很難經由一篇文章便完全說明其精髓,預計整理出一系列文章並陸續發佈。

重點整理
  • 同步(Synchronous)在程式碼執行過程中,必須依照編寫的順序執行,當一行程式碼執行完畢並傳回其結果之後,才會執行下一行程式碼。
  • 非同步(Asynchronous)與同步相反,當一行非同步的程式碼開始執行後,可以馬上接著執行下一行程式碼,不會耽誤後續程式碼的執行。而當該非同步的程式碼執行完畢後,可透過callback function傳回其結果,接著執行後續對應的程式碼。
  • 在Node.js中,並不是全部的function都能夠以非同步的方式執行。

實作
Synchronous的寫法:
執行結果

Asynchronous的寫法:
執行結果


其他參考文章
佳魁資訊所出版"為什麼全世界都在學Node.js"

2017年3月15日 星期三

Node.js-Callback function(進階用法)

相關文章

重點整理
  • 利用typeof可以檢查傳入的參數是否為function。
  • Callback function可以針對特定function的執行方式進行客製化,以sort()進行簡單的舉例,日後再詳細介紹各種可客製化的function及規則。
  • Callback function可以回傳非同步呼叫(Asynchronous function)的執行結果,以setTimeout()進行簡單的舉例,日後再詳細介紹非同步呼叫與同步呼叫。
  • 這篇文章開始換了一個新的工具:Visual Studio Code。能夠安裝JavaScript Standard Style的擴充功能,幫助維持程式碼格式一致,且不需要另外開啟小黑窗執行程式。細節及其他內容請參考陳鍾誠的文章"用JavaScript實踐⟪軟體工程⟫的那些事兒"。

實作
typeof的寫法:
執行結果

客製化的寫法(sort()):
執行結果

回傳非同步呼叫執行結果的寫法(setTimeout()):
執行結果


其他參考文章
Techsith的Youtube影片"javascript callback functions tutorial"
W3Schools的文章"JavaScript Array sort() Method"
W3Schools的文章"Window setTimeout() Method"