分成三種:
我們自己製作的 modules
網路上第三方製作的 modules,可以透過 npm (node package manager)下載來使用
fs.writeFile
// fs 文件系統 ile system,用來寫文件
const fs = require("fs");
// fs.writeFile(文件名稱, 要寫的內容, error function)
fs.writeFile("myFile.text", "今天天氣不錯", (e) => {
if (e) throw e;
console.log("文件已經撰寫完畢");
});
// modules.js -> 文件已經撰寫完畢
// 同時會產生出一個myFile.text,裡面寫 今天天氣不錯
readFile
// fs.readFile(要讀的文件名稱, encoging, call back function)
fs.readFile("myFile.text", "utf8", (e, data) => {
if (e) throw e;
console.log(data);
});
// modules.js -> 今天天氣不錯
錯誤的情況
fs.readFile("hgljbjk.text", "utf8", (e, data) => {
if (e) {
console.log(e);
}
console.log(data);
});
// -> Error: ENOENT: no such file or directory
Module Wrapper 中提供的變數:
module
變數是個物件,此物件包含此文件的內部訊息,包含id
, path
, exports
, parent
, filename
等等資訊console.log(module);
/*
{
id 點 : '.',
path 路徑 : 'C:\\Users\\Lo yuan\\Desktop\\Udemy全端\\JS_basics\\node_practice',
exports 屬性 : {},
filename: 'C:\\Users\\Lo yuan\\Desktop\\Udemy全端\\JS_basics\\node_practice\\app1.js',
loaded: false,
children: [],
paths: [
'C:\\Users\\Lo yuan\\Desktop\\Udemy全端\\JS_basics\\node_practice\\node_modules',
'C:\\Users\\Lo yuan\\Desktop\\Udemy全端\\JS_basics\\node_modules',
'C:\\Users\\Lo yuan\\Desktop\\Udemy全端\\node_modules',
'C:\\Users\\Lo yuan\\Desktop\\node_modules',
'C:\\Users\\Lo yuan\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules'
]
}
*/
exports
是 module 物件的屬性,本身是個 empty object {}
require 是一個 function,可以讀取一個 JavaScript 文件,執行該文件,然後return
這個文件的 exports object
若讀取的是一個資料夾,則讀取該資料夾內的index.js文件,執行該文件,然後return
這個文件的 exports object
做 Self-Made Modules 的特點,可以把功能型相同的程式碼放一起,app2 處理早晚的事情,app3 處理中午的事情,最後在 app1 用 require 去取得 exports 物價,再用它來執行程式碼
// app1
let app2 = require("./app2");
let app3 = require("./app3");
app2.morning(); // -> 早安你好
app3.lunch(); // -> 午餐時間
app2.evening(); // -> 晚安你好
//app2
function morning() {
console.log("早安你好");
}
function evening() {
console.log("晚安你好");
}
exports.morning = morning;
// 把 function morning() 設定到 module.exports 的 {} 裡面叫 morning 的屬性
// exports輸出
exports.evening = evening;
// app3
function lunch() {
console.log("午餐時間");
}
exports.lunch = lunch;
下一篇文章學習modules(二)。