Nodejs 內置模塊的基本使用

內置模塊的基本使用

// 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全局模塊

作用:終端下自動執行代碼

  1. 安裝 npm i nodemon -g

  2. nodemon 文件名即可

  3. 自動監視文件的修改,自動重新運行

vscode快捷鍵

  1. ctrl+d 選擇相同的下一個
  2. ctrl+左右 按單詞跳轉光標
  3. 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來創建一個服務器

NqMrPU.png

// 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");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章