完整程式碼,請洽: https://github.com/Zrn-code/Node-js-tutorial/tree/node-02
# node 基本語法
# 輸出 console.log()
使用 console.log()
可以在 console
中輸出變數
test.js | const name = 'yoshi'; |
| console.log(name); |
運行結果為:
終端機 | PS C:\Users\user\Documents\tuts\node>node test.js //運行檔案 |
| yoshi //輸出結果 |
# 箭頭函式 () => { }
當我們只想設定一個函式,並且不想打太多字宣告時,我們可以使用箭頭函式。
()
內部設定參數, { }
內部是函數體。
test.js | const greet = (name) => { |
| console.log(`hello, ${name}`); |
| } |
| greet('Zrn'); |
| greet('Club'); |
終端機 | PS C:\Users\user\Documents\tuts\node>node test.js |
| hello, Zrn |
| hello, Club |
# 全域變數
global.js | |
| setTimeout(() => { |
| console.log(`in the timeout`); |
| },3000); |
| |
| const int = setInterval(()=>{ |
| console.log('in the interval'); |
| },1000); |
終端機 | PS C:\Users\user\Documents\tuts\node>node global.js |
| in the interval |
| in the interval |
| in the timeout |
| in the interval |
| in the interval |
| in the interval |
| in the interval |
# __dirname
和 __filename
_dirname
可以得到該運行檔案儲存的位置_filename
可以得到該運行檔案的位置
gloabal.js | console.log(__dirname); |
| console.log(__filename); |
終端機 | PS C:\Users\user\Documents\tuts\node>node global.js |
| C:\Users\user\Documents\tuts\node |
| C:\Users\user\Documents\tuts\node\global.js |
# 模組 (module) 與要求 (require)
# 簡單示範
在 module.js
檔案中,我們可以用 require
將同層的 people.js
的內容拉到 module.js
裡面運行。
module.js | const xyz = require('./people'); |
| people.js |
| const people = ['Zrn','ryu','chun','Steven']; |
| console.log(people); |
在此時終端機上運行 module.js
的內容,會運行 people.js
的內容。
終端機 | PS C:\Users\user\Documents\tuts\node>node module |
| ['Zrn','ryu','chun','Steven'] |
# 回傳檔案 exports
module.exports
可以使運算完的檔案有個回傳值,回傳給主檔案。
people.js | const people = ['Zrn','ryu','chun','Steven']; |
| console.log(people); |
| module.exports = people; |
| module.js |
| const xyz = require('./people'); |
| console.log(xyz); |
終端機 | PS C:\Users\user\Documents\tuts\node>node module |
| ['Zrn','ryu','chun','Steven'] //console.log(people) |
| ['Zrn','ryu','chun','Steven'] //console.log(xyz) |
# 檔案系統
fs
是 Node.js
的預設模組,可以做檔案相關的運算。
# 讀入檔案 readFile ()
blog.txt | I am a good leader. |
| file.js |
| const fs = require('fs'); |
| |
| fs.readFile('./docs/blog.txt', (err, data) =>{ |
| if(err) |
| console.log(err); |
| else |
| console.log(data.toString()); |
| }); |
終端機 | PS C:\Users\user\Documents\tuts\node>node file.js |
| I am a good leader. |
# 改寫 / 新增檔案 writeFile ()
# 改寫
file.js | const fs = require('fs'); |
| |
| fs.writeFile('./docs/blog.txt','Hello, world',()=>{ |
| console.log('file was written.'); |
| }); |
終端機 | PS C:\Users\user\Documents\tuts\node >node file |
| file was written. |
當程式碼運行結束後, blog.txt
的內容就會變為 Hello, world
# 新增
如果指定的該檔案不存在時,就會新增一份出來
file.js | const fs = require('fs'); |
| |
| fs.writeFile('./docs/blog2.txt','Hello, world again.',()=>{ |
| console.log('file was written.'); |
| }); |
終端機 | PS C:\Users\user\Documents\tuts\node >node file |
| file was written. |
此時,該 docs 資料夾中就會有 blog2.txt 資料,並且內容為 Hello, world again.
# 創建 / 刪除資料夾 mkdir () /rmdir ()
file.js | const fs = require('fs'); |
| |
| if( !fs.existsSync('./assets' )){ |
| fs.mkdir('./assets',(err)=>{ |
| if(err) |
| console.log(err); |
| console.log('folder created'); |
| }); |
| } else { |
| fs.rmdir('./assets',(err)=>{ |
| if(err) |
| console.log(err); |
| console.log('folder deleted'); |
| }); |
| } |
# 刪除檔案 unlink
file.js | const fs = require('fs'); |
| |
| if(fs.existsSync('./docs/blog2.txt')){ |
| fs.unlink('./docs/blog2.txt',(err)=>{ |
| if(err) |
| console.log(err); |
| console.log('file deleted'); |
| }); |
| } |