內置模塊的基本使用
// 01. 導包
const fs = require("fs");
// 02. 調用unlink刪除方法
// 第一個參數:要刪除的文件的路徑
// 第二個參數:回調函數
fs.unlink("01-內置模塊fs的使用/tmp/hello.txt", (err) => {
if (err) throw err;
console.log("已成功刪除 /tmp/hello");
});
fs模塊的讀文件
fs.readFile(path[, options], callback)
第一個參數:文件的路徑
第二個參數:可選參數,讀取文件的編碼格式
第三個參數:回調函數
fs.readFile("01-內置模塊fs的使用/etc/passwd.txt", "utf-8", (err, data) => {
// err是一個錯誤對象,如果沒有錯就返回一個null
// data是讀的文件內容
// console.log(err); // null
console.log(data); // 這是一個寂寞的天,下着有些傷心的雨!
});
Npdemon全局模塊
作用:終端下自動執行代碼
-
安裝
npm i nodemon -g
-
nodemon
文件名即可 -
自動監視文件的修改,自動重新運行
vscode快捷鍵
- ctrl+d 選擇相同的下一個
- ctrl+左右 按單詞跳轉光標
- ctrl+enter 光標另起一行
同步異步
- 同步
console.log("哈哈");
for (var i = 0; i < 10; i++) {
console.log(i);
}
console.log("呵呵"); ->
哈哈
0
1
2
3
4
5
6
7
8
9
10
呵呵
- 異步
console.log("哈哈");
setTimeout(() => {
console.log("啦啦啦");
}, 1000);
console.log("呵呵"); ->
哈哈
呵呵
啦啦啦
- 剛纔我們學習的fs模塊讀/寫操作就是一個異步操作
console.log("哈哈");
const fs = require("fs");
fs.readFile("01-內置模塊fs的使用/etc/望廬山瀑布.txt", "utf-8", (err, data) => {
if (err === null) {
console.log(data);
} else {
console.log(err);
}
});
console.log("呵呵"); ->
哈哈
呵呵
望廬山瀑布
唐·李白
日照香爐生紫煙,
遙看瀑布掛前川。
飛流直下三千尺,
疑是銀河落九天。
- 其實讀文件也有同步操作
console.log("哈哈");
const fs = require("fs");
let data = fs.readFileSync("01-內置模塊fs的使用/etc/passwd.txt", "utf-8");
console.log(data);
console.log("呵呵"); ->
哈哈
這是一個寂寞的天,下着有些傷心的雨!
呵呵
同步異步面試題
// 看代碼,說出運行結果
var t = true;
while (t) {
window.setTimeout(function () {
t = false;
}, 1000);
}
alert("end"); -> 死循環
和路徑相關的兩個變量
- __dirname: 獲現的是當前這個文件所在的整個文件夾的絕對路徑
- __filename: 拿到的是當前這個文件的絕對路徑
console.log(__dirname);
// d:\前端\NodeJs\nodejs code\02-內置模塊path的使用
console.log(__filename);
// d:\前端\NodeJs\nodejs code\02-內置模塊path的使用\03-和路徑相關的兩個變量.js
使用拼接的絕對路徑來讀取文件
const fs = require("fs");
const fullPath = __dirname + "\\etc\\1.txt";
fs.readFile(fullPath, "utf-8", (err, data) => {
if (err === null) {
console.log(data);
} else {
console.log(err);
}
});
path.join([…paths])
path.join()
方法會將所有給定的 path
片段連接到一起(使用平臺特定的分隔符作爲定界符),然後規範化生成的路徑。
長度爲零的 path
片段會被忽略。 如果連接後的路徑字符串爲長度爲零的字符串,則返回 '.'
,表示當前工作目錄。
// 01. 導入模塊
const path = require("path");
// 02. 使用方法
// join方法是把路徑片段,連接成一個新的路徑.
const fullPath = path.join(__dirname, "etc", "1.txt");
console.log(fullPath);
使用path模塊拼接而成的絕對路徑來讀取文件
// 1. 導入模塊
const fs = require("fs");
const path = require("path");
// 2. 調用方法
// 2.1 使用path.joiin來拼接一個絕對路徑(要讀取文件的絕對路徑)
const fullPath = path.join(__dirname, "etc", "1.txt");
// 2.2 讀文件
fs.readFile(fullPath, "utf-8", (err, data) => {
if (err === null) {
console.log(data);
} else {
console.log(err);
}
});
使用內置模塊http來創建一個服務器
// 1. 導入http模塊
const http = require("http");
// 2. 創建一個服務器
// 這個方法有一個返回值,返回值就代表這個服務器
const server = http.createServer((require, response) => {
// 3. 設置返回給用戶看的內容
response.end("hello world!");
});
// 4. 開啓服務器
server.listen(8087, () => {
console.log("服務器開啓了:8087");
});
request.setHeader(name, value)
爲請求頭對象設置單個請求頭的值。 如果此請求頭已存在於待發送的請求頭中,則其值將被替換。 這裏可以使用字符串數組來發送具有相同名稱的多個請求頭。 非字符串值將被原樣保存。 因此 request.getHeader()
可能會返回非字符串值。 但是非字符串值將轉換爲字符串以進行網絡傳輸。
request.setHeader('Content-Type', 'application/json');
或:
request.setHeader('Cookie', ['type=ninja', 'language=javascript']);
如果想要返回去的中文不亂碼,那就要設置響應頭.
response.setHeader("Content-Type", "text/html;charset=utf-8");