課程目標

  • 用 node 讀取檔案內容

課程內容

來學習一下用 node 讀取檔案的方法

學會這方法,可以用 node 寫出簡易的檔案內容分析程式


建立一個 my-name.txt 文字檔,在裡面輸入你的名字

然後建立 read-my-name.js 程式,裡面輸入

var fs = require('fs');

fs.readFile('my-name.txt', function(err, data) {
  console.log("您好," + data);

  process.exit(0);
});

然後去終端機輸入

node read-my-name.js

你會看到一段打招呼的訊息!


讓我們逐行說明一下

var fs = require('fs');

這是載入「檔案系統模組」的意思,fsfile system 的縮寫

readFile 函式,第一個參數是檔案名稱,第二個參數是「一個函式定義」

看起來有點怪,其實是「非同步程式設計」的關係

之前在學網頁元素的事件處理時,就是用「非同步」程式設計處理

也就是我不確定「點擊」事件何時會發生,但我先「綁定」好事件發生時要做的任務

還有在網頁呼叫 AJAX 時也是,我不確定「主機回應」何時會拿到,但我先「綁定」好拿到之後要做的任務

這邊 fs 的意思就是:我不確定何時會「檔案讀取完畢」,但我先「綁定」好讀取完畢之後,要做的任務

看起來很怪、很醜,這種設計的意義不明,對嗎?我也覺得!後面會教你如何改寫成「同步程式設計」,先照做就好

--

console.log 是印出訊息到終端機(語法就跟在瀏覽器環境一樣!)

process.exit(0); 是結束程式的意思。那個 process 是代表當前 node 程式的全域變數


在瀏覽器裡面,無法去操作「檔案系統模組」,否則也太可怕,每個人上網時,都能用 js 亂改電腦上的檔案,資安大問題!

在瀏覽器裡面,也沒有 process 這個全域變數

用 node 跑完這段程式,你應該會發現,這段程式拿到網頁環境,是無法執行的!

在瀏覽器、node 跑 js 程式,有很多相似,也有很多相異之處,希望你慢慢抓到兩者的感覺!

課後作業

讓我們嘗試開發一個 CLI 版本的待辦管理工具

請建立一個檔案 todos.json 並放入以下內容

[
  {
    "title": "去操場跑步"
  },
  {
    "title": "去市場採購"
  },
  {
    "title": "找朋友吃飯"
  }
]

然後建立一個 read.js 檔案

使用者輸入 node read.js 之後,終端機會去讀取 todos.json 並且顯示

您的待辦事項:
#0 去操場跑步
#1 去市場採購
#2 找朋友吃飯

完成以上任務,你就完成這次的課程目標了!


交作業的方法:

方法一

直接截圖視窗內容,上傳到留言區

方法二

開一個新資料夾,用 git 初始化這個資料夾

接下來的作業,都放在這個資料夾,然後上傳 github

然後把 github 專案連結,貼到留言區即可


歡迎將作業成果,在下方留言,跟大家分享,讓大家給你一些回饋!

可以將每課學到的觀念、關鍵字,丟到網路上去搜尋、研究一下!

發問請在「討論專區」為主,或者分享學習筆記、寫學習心得!

貼文都會出現在個人檔案頁面,成為學習歷程、部落格紀錄!

未來面試時,分享給面試官看,會讓人知道你的積極程度!


共有 6 則留言