fs模塊
匯入 fs 模塊,來操作檔案
const fs = require('fs');
呼叫fs.readFile()方法讀取檔案
引數1: 讀取檔案存放路徑
引數2: 讀取檔案時候采用的編碼格式,一般默認utf-8
引數3: 回呼函式,拿到讀取失敗和成功的結果 err dataStr
const fs = require('fs');
fs.readFile('./files/1.txt','utf8', function (err, dataStr) {
// 列印失敗的結果
// 如果讀取成功,則 err 的值為 null
// 如果讀取失敗,則 err 的值為錯誤物件,dataStr的值為 undefined
console.log(err);
console.log('-----------------');
// 列印成功的結果
console.log(dataStr);
})
判斷檔案是否讀取成功
const fs = require('fs');
fs.readFile('./files/1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('讀取檔案失敗!' + err.message);
} else {
console.log('讀取檔案成功!' + dataStr);
}
})
呼叫fs.writeFile()方法,寫入檔案內容
// 引數1: 表示檔案存放路徑
// 引數2: 表示要寫入的內容
// 引數3: 回呼函式
fs.writeFile()方法只能用來創建檔案,不能創建路徑
重復呼叫fs.writeFile()方法寫入同一個檔案,新寫入的內容會覆寫之前的舊內容
fs.writeFile('./files/2.txt', 'haha', function (err) {
// 如果檔案寫入成功,則 err 的值等于 null
// 如果檔案寫入失敗,則 err 的值等于一個 錯誤物件
// console.log(err);
//判斷檔案是否寫入成功
if (err) {
return console.log('檔案寫入失敗!' + err.message);
} else {
console.log('檔案寫入成功!');
}
});
__dirname
出現路徑拼接錯誤問題是因為提供了 ./ 或 ../ 開頭的相對路徑
解決方法:可以直接提供一個完整的檔案存放路徑(絕對路徑),但是要注意" \ "需要轉義
絕對路徑移植性非常差,不利于維護
fs.readFile('D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('讀取檔案失敗!' + err.message);
} else {
console.log('讀取檔案成功!' + dataStr);
}
})
__dirname 表示當前檔案所處的目錄
fs.readFile(__dirname + '/files/1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('讀取檔案失敗!' + err.message);
} else {
console.log('讀取檔案成功!' + dataStr);
}
})
path模塊
匯入 path 模塊
const path = require('path');
path.join() 方法
路徑使用path.join()方法拼接
fs.readFile(path.join(__dirname, './files/1.txt'),'utf8', function (err, dataStr) {
if (err) {
return console.log('讀取檔案失敗!' + err.message);
} else {
console.log('讀取檔案成功!' + dataStr);
}
})
path.basename()
path.basename()可以從檔案路徑中獲取檔案的名稱部分
const fpath = 'D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\成績-ok.txt';
var fullName = path.basename(fpath);
console.log(fullName);
//輸出: 成績-ok.txt
var nameWithoutExt = path.basename(fpath,'.txt');
console.log(nameWithoutExt);
//輸出: 成績-ok
path.extname()
path.extname() 獲取檔案擴展名
const fpath = 'D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\成績-ok.txt';
const fext = path.extname(fpath);
console.log(fext);
//輸出:.txt
創建 web 服務器的基本操作
1. 匯入 http 模塊
const path = require('path');
2.創建 web 服務器實體
const server = http.createServer();
3.為服務器實體系結 request 事件,監聽客戶端的請求
server.on('request', function (req, res) {
console.log('Someone visit our server.');
});
4.啟動服務器
server.listen(8080, function () {
console.log('server runing at http://127.0.0.1:8080');
});
了解 req請求物件
const server = http.createServer();
// req 是請求物件,包含了與客戶端相關的資料和屬性
server.on('request', (req) => {
// req.url 是客戶端請求的 URL 地址
const url = req.url;
// req.method 是客戶端請求的 method 型別
const method = req.method;
const str = `your request url is ${ url },and request method is ${ method }`
console.log(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
res 回應物件 res.end()
const server = http.createServer();
// req 是請求物件,包含了與客戶端相關的資料和屬性
server.on('request', (req, res) => {
// req.url 是客戶端請求的 URL 地址
const url = req.url;
// req.method 是客戶端請求的 method 型別
const method = req.method;
const str = `your request url is ${ url },and request method is ${ method }`
console.log(str);
// 呼叫 res.end() 方法,向客戶端回應一些內容
res.end(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
解決中文亂碼問題
// 為防止中文顯示亂碼問題,需要設定回應頭 Content-Type 的值為 text/html; charset = utf-8
res.setHeader('Content-Type','text/html; charset=utf-8');
```
```js
const server = http.createServer();
server.on('request', (req, res) => {
// req.url 是客戶端請求的 URL 地址
const url = req.url;
// req.method 是客戶端請求的 method 型別
const method = req.method;
const str = `你請求的 url 地址是 ${ url }, 請求的 method 型別是 ${ method }`;
// 為防止中文顯示亂碼問題,需要設定回應頭 Content-Type 的值為 text/html; charset = utf-8
res.setHeader('Content-Type','text/html; charset=utf-8');
// 呼叫 res.end() 方法,向客戶端回應一些內容
res.end(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
根據不同的 url 回應不同的 html 內容
const server = http.createServer();
server.on('request', (req, res) => {
//1. 獲取請求的 url 地址
const url = req.url;
//2. 設定默認的回應內容為 404 Not found
let content = '<h1>404 Not found</h1>';
//3. 判斷用戶請求的是否為 / 或 /index.html 首頁
//4. 判斷用戶請求的是否為 /about.html 關于頁面
if (url === '/' || url === '/index.html') {
content = '<h1>首頁</h1>'
}else if (url === '/about.html') {
content = '<h1>關于頁面</h1>'
};
//5. 設定 Content-Type 回應頭,防止中文亂碼
res.setHeader('Content-Type','text/html; charset=utf-8');
//6. 使用 res.end() 把內容回應給客戶端
res.end(content);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
module.exports
module.exports 物件,將模塊內的成員共享出去,供外界使用
外界用 require() 方法匯入自定義模塊時,得到的就是 module.exports 所指向的物件
在一個自定義模塊中,默認情況下,moudule.expots = {}
const m = require('./11.自定義模塊');
console.log(m);
//輸出為:nickname: '張三',
//sayHi() {Object Function}
11.自定義模塊.js
// 向 module.exports 物件上掛載 username 屬性
module.exports.username = 'zs';
//向 module.exports 物件上掛載 sayHello 方法
module.exports.sayHello = function () {
console.log('hello!');
}
const age = 20;
//
module.exports.age = age;
//讓 module.exports 指向一個全新物件
module.exports = {
nickname: '張三',
sayHi() {
console.log('Hi!');
}
}
exports 物件
exports 物件 ,默認情況下,exports 和 module.exports 指向同一個物件
最終共享結果,以module.exports 指向物件為準
格式化時間
格式化時間的傳統做法
1.創建格式化時間的自定義模塊
2.定義格式化時間的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr);
const y = dt.getFullYear();
const m = padZero(dt.getMonth() + 1);
const d = padZero(dt.getDate());
const hh = padZero(dt.getHours());
const mm = padZero(dt.getMinutes());
const ss = padZero(dt.getSeconds());
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
3.創建補零函式
function padZero(n) {
return n > 9 ? n : '0' + n;
}
4.從自定義模塊中匯出格式化時間的函式
module.exports = {
dateFormat
}
5.匯入格式化時間的自定義模塊
const TIME = require('./dateFormat.js');
//6. 呼叫格式化時間的函式
const dt = new Date();
console.log(dt);
const newDT = TIME.dateFormat(dt);
console.log(newDT);
dateFormat.js
//定義格式化時間的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr);
const y = dt.getFullYear();
const m = padZero(dt.getMonth() + 1);
const d = padZero(dt.getDate());
const hh = padZero(dt.getHours());
const mm = padZero(dt.getMinutes());
const ss = padZero(dt.getSeconds());
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//3. 創建補零函式
function padZero(n) {
return n > 9 ? n : '0' + n;
}
// 匯出格式化時間的函式
module.exports = {
dateFormat
}
格式化時間的高級做法
格式化時間的高級做法 moment 包 官方 API 檔案 https://www.npmjs.com/
1.使用 npm 包管理工具,在專案中安裝格式化時間的包 moment
npm i moment
2.使用 require() 匯入包
const moment = require('moment');
//3. 參考 moment 的官方 API 檔案對時間進行格式化
const dt = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dt);
HTML轉義
1.定義HTML轉義方法
function htmlEscape (htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
2.定義還原 html 字串的函式
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
3.向外共享成員
module.exports = {
htmlEscape,
htmlUnEscape
}
4.匯出模塊,使用
const itheima = require('./itheima-tools');
const htmlStr = '`<h1 title="abc">`這是h1標簽`<span>`123 `</h1>`'
const str = itheima.htmlEscape(htmlStr);
console.log(str);
console.log("-----------------------------");
// 還原 html 字串
const str2 = itheima.htmlUnEscape(str);
console.log(str2);
console.log("-------------------------------");
js 檔案
// 定義HTML轉義方法
function htmlEscape (htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
// 定義還原 html 字串的函式
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
htmlEscape,
htmlUnEscape
}
開發屬于自己的包 (itheima-tools)
包必須有 index.js 檔案 package.json README.md
將不同功能進行模塊化拆分,放入src檔案夾中,存入不同 js 檔案
然后在 index.js 中匯入模塊,得到需要向外共享的方法
在 index.js 中,使用 module.exports 把對應的方法共享出去
Express 快速創建 Web 服務器
使用 express 創建最基本的的服務器
先安裝express包
npm i [email protected]
//1. 匯入 express
const express = require('express');
//2. 創建 web 服務器
const app = express();
//3. 啟動 Web 服務器
app.listen(80, () => {
console.log("express server running at http://127.0.0.1");
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538033.html
標籤:其他
