精品视频日韩无码,伊人久久无码av一区二区三区,久久艹视频国产视频,欧美成A人免费观看久久

  1. <tt id="u23fe"><i id="u23fe"><sub id="u23fe"></sub></i></tt>

      <b id="u23fe"><address id="u23fe"><kbd id="u23fe"></kbd></address></b>

      <source id="u23fe"><track id="u23fe"></track></source>
    1. 位置: IT常識(shí) - 正文

      【Node.js實(shí)戰(zhàn)】一文帶你開發(fā)博客項(xiàng)目之日志(文件讀寫、stream流、寫日志)(node.js in action)

      編輯:rootadmin
      【Node.js實(shí)戰(zhàn)】一文帶你開發(fā)博客項(xiàng)目之日志(文件讀寫、stream流、寫日志)

      推薦整理分享【Node.js實(shí)戰(zhàn)】一文帶你開發(fā)博客項(xiàng)目之日志(文件讀寫、stream流、寫日志)(node.js in action),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。

      文章相關(guān)熱門搜索詞:node.js入門教程,node.js入門教程,node.js 10實(shí)戰(zhàn),node.js in action,node-js,node js教程,node-js,node-js,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!

      個(gè)人簡(jiǎn)介

      👀個(gè)人主頁(yè): 前端雜貨鋪 🙋?♂?學(xué)習(xí)方向: 主攻前端方向,也會(huì)涉及到服務(wù)端 📃個(gè)人狀態(tài): 在校大學(xué)生一枚,已拿多個(gè)前端 offer(秋招) 🚀未來打算: 為中國(guó)的工業(yè)軟件事業(yè)效力n年 🥇推薦學(xué)習(xí):🍍前端面試寶典 🍉Vue2 🍋Vue3 🍓Vue2&Vue3項(xiàng)目實(shí)戰(zhàn) 🥝Node.js🍒Three.js 🌕個(gè)人推廣:每篇文章最下方都有加入方式,旨在交流學(xué)習(xí)&資源分享,快加入進(jìn)來吧

      Node.js系列文章目錄內(nèi)容參考鏈接Node.js(一)初識(shí) Node.jsNode.js(二)Node.js——開發(fā)博客項(xiàng)目之接口Node.js(三)Node.js——一文帶你開發(fā)博客項(xiàng)目(使用假數(shù)據(jù)處理)Node.js(四)Node.js——開發(fā)博客項(xiàng)目之MySQL基礎(chǔ)Node.js(五)Node.js——開發(fā)博客項(xiàng)目之API對(duì)接MySQLNode.js(六)Node.js——開發(fā)博客項(xiàng)目之登錄(前置知識(shí))Node.js(七)Node.js——開發(fā)博客項(xiàng)目之登錄(對(duì)接完畢)Node.js(八)Node.js——開發(fā)開發(fā)博客項(xiàng)目之聯(lián)調(diào)文章目錄Node.js系列文章目錄一、前言二、文件的讀寫1、讀取文件2、寫入文件3、判斷文件是否存在三、stream 流1、IO 操作的性能瓶頸2、stream 流3、復(fù)制文件4、發(fā)起請(qǐng)求讀取文件四、寫日志五、寫在最后一、前言

      開發(fā)日志對(duì)整個(gè)項(xiàng)目可以起到備忘、記錄、總結(jié)等作用。以幫助開發(fā)或者運(yùn)維人員快速定位錯(cuò)誤位置,提出解決方案。

      系統(tǒng)沒有日志,就等于人沒有眼睛(重要性可見一斑)第一,訪問日志 access log(server 端最重要的日志)第二,自定義日志(包括自定義事件、錯(cuò)誤記錄等)

      所以,日志的存在還是非常非常有必要的!

      日志要放在文件中,可讀可寫~

      node.js 文件操作,node.js stream(流 => 提升性能)日志功能開發(fā)和使用日志文件拆分,日志內(nèi)容分析二、文件的讀寫1、讀取文件

      接下來,我們先學(xué)習(xí)如何進(jìn)行文件的讀取…

      創(chuàng)建 file-test 文件夾,文件夾下創(chuàng)建 test1.txt 文件 和 data.txt 文件

      test1.txt

      進(jìn)行文件讀取操作,讀取 data.txt 文本的內(nèi)容,并進(jìn)行輸出

      const fs = require('fs')const path = require('path')// 獲取文件目錄 __dirname 表示當(dāng)前文件所在目錄const fileName = path.resolve(__dirname, 'data.txt')// 讀取文件內(nèi)容(異步的)fs.readFile(fileName, (err, data) => { if (err) { console.error(err) return } // data 是二進(jìn)制類型,需要轉(zhuǎn)成字符串類型 console.log(data.toString())})

      data.txt

      這是我們?cè)谖谋局写鎯?chǔ)的一些信息

      Hello這里是前端雜貨鋪感謝你的觀看Thanks

      2、寫入文件

      接下來,我們進(jìn)行文件的寫入操作(分為兩種:追加寫入和覆蓋寫入)

      test1.js

      const fs = require('fs')const path = require('path')// 獲取文件目錄 __dirname 表示當(dāng)前文件所在目錄const fileName = path.resolve(__dirname, 'data.txt')// 寫入文件const content = '哇咔咔,這是新寫入的內(nèi)容\n'// 寫入的方式(追加'a'/覆蓋'w')const opt = { flag: 'a' // 追加寫入用'a',覆蓋用 'w'}// 寫入文件(文件名,內(nèi)容,方式,錯(cuò)誤的回調(diào))fs.writeFile(fileName, content, opt, err => { if (err) { console.error(err) }})

      終端運(yùn)行 node test1.js

      3、判斷文件是否存在

      接下來,我們來進(jìn)行判斷文件是否存在的操作

      test1.js

      const fs = require('fs')const path = require('path')// 獲取文件目錄 __dirname 表示當(dāng)前文件所在目錄const fileName = path.resolve(__dirname, 'data.txt')// 判斷文件是否存在fs.exists(fileName, (exist) => { console.log('exist', exist)})

      三、stream 流1、IO 操作的性能瓶頸IO 包括 “網(wǎng)絡(luò)IO” 和 “文件IO”相比于 CPU 計(jì)算和內(nèi)存讀寫,IO 的突出特點(diǎn)就是慢!我們需要在有限的硬件資源下提高 IO 的操作效率!!

      那么我們就要使用 stream 流(不是一下子全給,而是通過“小管子”一點(diǎn)點(diǎn)給…)

      2、stream 流

      在 stream-test 文件夾下創(chuàng)建 test1.js 文件

      test1.js

      // 標(biāo)準(zhǔn)輸入輸出process.stdin.pipe(process.stdout)【Node.js實(shí)戰(zhàn)】一文帶你開發(fā)博客項(xiàng)目之日志(文件讀寫、stream流、寫日志)(node.js in action)

      下面我們監(jiān)聽端口,通過 postman 進(jìn)行簡(jiǎn)單測(cè)試

      test1.js

      const http = require('http')const server = http.createServer((req, res) => { if (req.method === 'POST') { // 管道連接請(qǐng)求和響應(yīng) req.pipe(res) }})// 監(jiān)聽的端口 8000server.listen(8000)

      終端 node test1.js 啟動(dòng)它,之后去 postman 進(jìn)行測(cè)試

      3、復(fù)制文件

      我們先創(chuàng)建 stream-test 文件,之后創(chuàng)建文本(原文本和復(fù)制的目標(biāo)文本,之后在 test1.js 中添加一些代碼),此時(shí) data.txt 文本有內(nèi)容,data-bak.txt 文本為空。

      data.txt

      這里是前端雜貨鋪當(dāng)前目標(biāo)如下:把 data.txt 文本里的內(nèi)容拷貝到 data-bak.txt 中

      test1.js

      // 復(fù)制文件const fs = require('fs')const path = require('path')const fileName1 = path.resolve(__dirname, 'data.txt')const fileName2 = path.resolve(__dirname, 'data-bak.txt')// 讀取流const readStream = fs.createReadStream(fileName1)// 寫入流const writeStream = fs.createWriteStream(fileName2)// 管道連接readStream.pipe(writeStream)// 監(jiān)聽每一次讀取的內(nèi)容readStream.on('data', chunk => { console.log(chunk.toString())})// 監(jiān)聽拷貝完成readStream.on('end', () => { console.log('copy done')})

      4、發(fā)起請(qǐng)求讀取文件

      發(fā)送一個(gè) GET 請(qǐng)求,讀取文本的內(nèi)容

      test.js

      const http = require('http')const fs = require('fs')const path = require('path')const fileName1 = path.resolve(__dirname, 'data.txt')const server = http.createServer((req, res) => { if (req.method === 'GET') { const readStream = fs.createReadStream(fileName1) // 將 res 作為 stream 的 dest readStream.pipe(res) }})// 監(jiān)聽的端口 8000server.listen(8000)

      終端 node test1.js 運(yùn)行,之后打開 8000 端口

      四、寫日志

      我們首先改變一下我們的目錄結(jié)構(gòu)(新增如下文件)

      logs 里面的文件用來存放寫入的日志(創(chuàng)建空文件就好),utils 里面的 log.js 文件用來編寫一些寫入日志的邏輯

      log.js

      首先我們引入所需模塊,封裝寫入流函數(shù),訪問我們所需的日志,進(jìn)行換行寫入

      // 引入 fs 和 path 模塊const fs = require('fs')const path = require('path')// 寫日志function writeLog(writeStream, log) { // 關(guān)鍵代碼(每寫入一行日志換行一次) writeStream.write(log + '\n')}// 生成 write Stream(第二個(gè)水桶)function createWriteStream(fileName) { // 找到文件名 const fullFileName = path.join(__dirname, '../', '../', 'logs', fileName) // 創(chuàng)建寫入流(追加的方式) const writeStream = fs.createWriteStream(fullFileName, { flags: 'a' }) // 返回寫入的內(nèi)容 return writeStream}// 寫訪問日志const accessWriteStream = createWriteStream('access.log')// 參數(shù) log 為 app.js 中傳入的內(nèi)容function access(log) { writeLog(accessWriteStream, log)}module.exports = { access}

      之后更改 app.js 文件,調(diào)用 access 函數(shù)

      app.js

      我們先導(dǎo)入 access 進(jìn)來,之后進(jìn)行調(diào)用,傳進(jìn)所需的參數(shù),用來記錄 access log

      const { access } = require('./src/utils/log')...const serverHandle = (req, res) => { // 記錄 access log access(`${req.method} -- ${req.url} -- ${req.headers['user-agent']} -- ${Date.now()}`) ......}

      之后,我們打開 http://localhost:8000/api/blog/list 端口,進(jìn)行三次刷新,查看 access.log 文件中日志的寫入

      五、寫在最后

      至此,我們明白了 如何進(jìn)行文件讀寫,了解了 stream流 的原理及其基本使用,以及如何寫日志。 繼續(xù)跟進(jìn)學(xué)習(xí)吧!

      后續(xù)會(huì)對(duì)該項(xiàng)目進(jìn)行多次重構(gòu)【多種框架(express,koa)和數(shù)據(jù)庫(kù)(mysql,sequelize,mongodb)】

      如果你需要該項(xiàng)目的 源碼,請(qǐng)通過本篇文章最下面的方式 加入 進(jìn)來~~

      本文鏈接地址:http://esstyw.cn/zhishi/295333.html 轉(zhuǎn)載請(qǐng)保留說明!

      上一篇:Electron-vue 系列之自動(dòng)更新與手動(dòng)更新(electron-vue官網(wǎng))

      下一篇:HTML中關(guān)于邊框(border)的使用(html關(guān)于邊框的代碼)

    2. 華為nova7se支不支持nfc(華為nova7se支不支持OTG)

      華為nova7se支不支持nfc(華為nova7se支不支持OTG)

    3. 微信表情整理按鈕灰色(微信表情整理在哪)

      微信表情整理按鈕灰色(微信表情整理在哪)

    4. 紅米note8能升級(jí)miui12嗎(紅米note8能升級(jí)miui14嗎)

      紅米note8能升級(jí)miui12嗎(紅米note8能升級(jí)miui14嗎)

    5. 唯品會(huì)登錄名是手機(jī)號(hào)嗎(唯品會(huì)登錄名別人能看到嗎)

      唯品會(huì)登錄名是手機(jī)號(hào)嗎(唯品會(huì)登錄名別人能看到嗎)

    6. 微信被加黑名單怎么重新加對(duì)方知道嗎(微信被加黑名單還能看到朋友圈嗎)

      微信被加黑名單怎么重新加對(duì)方知道嗎(微信被加黑名單還能看到朋友圈嗎)

    7. 智行搶不到票會(huì)退款嗎(智行搶不到票會(huì)退專人搶嗎)

      智行搶不到票會(huì)退款嗎(智行搶不到票會(huì)退專人搶嗎)

    8. 以太網(wǎng)可以上網(wǎng)嗎(以太網(wǎng)可以上網(wǎng)的路由器)

      以太網(wǎng)可以上網(wǎng)嗎(以太網(wǎng)可以上網(wǎng)的路由器)

    9. 主板上的紐扣電池是干嘛的(主板上的紐扣電池沒電了,影響開機(jī)嗎?)

      主板上的紐扣電池是干嘛的(主板上的紐扣電池沒電了,影響開機(jī)嗎?)

    10. 微機(jī)的硬件由哪五部分組成(微機(jī)硬件通常包含哪些?各有什么功能和特點(diǎn)?)

      微機(jī)的硬件由哪五部分組成(微機(jī)硬件通常包含哪些?各有什么功能和特點(diǎn)?)

    11. 微信申請(qǐng)的健康碼從哪里可以看(微信申請(qǐng)的健康碼怎么換人)

      微信申請(qǐng)的健康碼從哪里可以看(微信申請(qǐng)的健康碼怎么換人)

    12. 微信又刪除又拉黑發(fā)信息會(huì)顯示什么(微信又刪除又拉黑還能添加嗎)

      微信又刪除又拉黑發(fā)信息會(huì)顯示什么(微信又刪除又拉黑還能添加嗎)

    13. 蘋果7很卡怎么解決啊(蘋果手機(jī)7很卡)

      蘋果7很卡怎么解決啊(蘋果手機(jī)7很卡)

    14. 流量信號(hào)上的hd是什么意思(手機(jī)流量后面的hd)

      流量信號(hào)上的hd是什么意思(手機(jī)流量后面的hd)

    15. 19英寸顯示器長(zhǎng)寬多少(19英寸顯示器長(zhǎng)寬多少厘米正常)

      19英寸顯示器長(zhǎng)寬多少(19英寸顯示器長(zhǎng)寬多少厘米正常)

    16. 小米6x怎么更新miui11(小米6x怎么更新miui13)

      小米6x怎么更新miui11(小米6x怎么更新miui13)

    17. 華為p30pro強(qiáng)制重啟(華為p30pro強(qiáng)制重啟后屏幕閃爍怎么辦)

      華為p30pro強(qiáng)制重啟(華為p30pro強(qiáng)制重啟后屏幕閃爍怎么辦)

    18. 手機(jī)停機(jī)多久會(huì)被注銷(手機(jī)停機(jī)多久會(huì)自動(dòng)注銷)

      手機(jī)停機(jī)多久會(huì)被注銷(手機(jī)停機(jī)多久會(huì)自動(dòng)注銷)

    19. 什么叫4k超高清(什么叫4k超高清視頻)

      什么叫4k超高清(什么叫4k超高清視頻)

    20. 手機(jī)丟失支付寶如何掛失(手機(jī)丟失支付寶怎么凍結(jié)賬戶)

      手機(jī)丟失支付寶如何掛失(手機(jī)丟失支付寶怎么凍結(jié)賬戶)

    21. w10開機(jī)0x0000001原因(win10開機(jī)0xc000000f怎么修復(fù))

      w10開機(jī)0x0000001原因(win10開機(jī)0xc000000f怎么修復(fù))

    22. 抖音怎么更換綁定的手機(jī)號(hào)(抖音怎么更換綁定手機(jī)號(hào))

      抖音怎么更換綁定的手機(jī)號(hào)(抖音怎么更換綁定手機(jī)號(hào))

    23. 怎樣看瀏覽器是ie幾(怎樣看瀏覽器是不是ie8)

      怎樣看瀏覽器是ie幾(怎樣看瀏覽器是不是ie8)

    24. 抖音怎樣只對(duì)某個(gè)人看(抖音怎樣只對(duì)某人點(diǎn)贊)

      抖音怎樣只對(duì)某個(gè)人看(抖音怎樣只對(duì)某人點(diǎn)贊)

    25. 微信聊天記錄時(shí)間可以改嗎(微信聊天記錄時(shí)間錯(cuò)亂)

      微信聊天記錄時(shí)間可以改嗎(微信聊天記錄時(shí)間錯(cuò)亂)

    26. 財(cái)稅通財(cái)務(wù)軟件怎么下載
    27. 先開票后收款違法嗎
    28. 油庫(kù)存油租賃
    29. 季度現(xiàn)金流量表是三個(gè)月相加嗎
    30. 個(gè)人接受現(xiàn)金捐贈(zèng)的例子
    31. 所得稅費(fèi)用在利潤(rùn)表中應(yīng)在稅金及附加項(xiàng)目中填列
    32. 應(yīng)交稅費(fèi)負(fù)數(shù)調(diào)整
    33. 記賬憑證工資表
    34. 房地產(chǎn)公司支付工程款賬務(wù)處理
    35. 電腦怎么寫記事本
    36. 小規(guī)模企業(yè)應(yīng)交增值稅的二級(jí)科目
    37. 合作社增值稅免稅項(xiàng)目
    38. 現(xiàn)房銷售土增稅怎么繳納
    39. 企業(yè)計(jì)提福利費(fèi)時(shí),貸記應(yīng)付職工薪酬
    40. 視同銷售存貨賬務(wù)處理方法是什么?
    41. 給客戶辦理分期
    42. 城鎮(zhèn)土地使用稅征收標(biāo)準(zhǔn)及計(jì)算方法
    43. 單位日常發(fā)的錢都有哪些
    44. 地稅印花稅怎么算
    45. 國(guó)家稅務(wù)總局13號(hào)文
    46. 某物業(yè)公司組織工人進(jìn)入下水道
    47. 航天金稅盤費(fèi)用怎么做賬
    48. 財(cái)政撥款收入如何記賬
    49. 原材料生產(chǎn)產(chǎn)生的費(fèi)用
    50. 王者榮耀中劉邦技能解析以及如何連招
    51. 固態(tài)硬盤如何接入電腦
    52. 家裝行業(yè)如何確認(rèn)收入
    53. hprj是什么文件
    54. 公司支付保潔費(fèi)可以付給個(gè)人嗎
    55. 外商投資的企業(yè)再投資
    56. 原材料按實(shí)際成本核算需設(shè)置的科目包括
    57. 公司注銷未分配利潤(rùn)會(huì)計(jì)分錄
    58. 林木業(yè)折舊年限
    59. php文件怎么寫
    60. 小規(guī)模納稅人殘保金申報(bào)時(shí)間
    61. 接受贈(zèng)品怎么做賬
    62. 計(jì)提本月房產(chǎn)稅的納稅基數(shù)怎么算的
    63. 服裝制造行業(yè)成本占比
    64. 增值稅納稅申報(bào)操作流程
    65. 無形資產(chǎn)攤銷怎么計(jì)算月攤銷額
    66. 個(gè)人所得稅申報(bào)流程圖
    67. mongodb使用場(chǎng)景總結(jié)
    68. 建筑業(yè)預(yù)繳增值稅計(jì)算公式
    69. 不單獨(dú)計(jì)價(jià)的包裝物是什么意思
    70. 個(gè)體戶能不能變更地址
    71. 產(chǎn)品的運(yùn)輸費(fèi)用分錄
    72. 計(jì)提的費(fèi)用收到發(fā)票時(shí)候怎么做賬
    73. 短期理財(cái)會(huì)計(jì)處理
    74. 境外個(gè)人給境內(nèi)個(gè)人匯款什么名義申報(bào)
    75. 預(yù)付款開了發(fā)票
    76. 對(duì)方多開發(fā)票怎么處理?
    77. 企業(yè)間借款利息開票稅收分類編碼
    78. 以攤余成本計(jì)量的金融資產(chǎn)會(huì)計(jì)處理
    79. 事業(yè)單位 abc類
    80. 建筑業(yè)營(yíng)改增后,人工費(fèi)不存在可抵扣
    81. sql語(yǔ)句中單引號(hào)怎么打
    82. mysql數(shù)據(jù)庫(kù)innodb
    83. mysql 臨時(shí)表
    84. assoc .exe=exefile是什么
    85. ubuntu12.04系統(tǒng)怎么安裝PPS播放器?
    86. linux磁盤空間不足怎么清理
    87. win7系統(tǒng)安裝谷歌瀏覽器
    88. javascriptj
    89. dosbox批處理
    90. pycharm遠(yuǎn)程調(diào)試linux
    91. python輸出unicode編碼
    92. 如何使用開塞露排便
    93. android進(jìn)程間通信機(jī)制有哪些
    94. JavaScript中的方法名不區(qū)分大小寫
    95. 以下關(guān)于android應(yīng)用程序的目錄結(jié)構(gòu)描述中,不正確的是
    96. 買藥開稅票多少稅率
    97. 稅務(wù)申報(bào)顯示重名怎么辦
    98. 電子稅務(wù)局存款賬戶備案
    99. 農(nóng)業(yè)方面有哪些有名雜志
    100. 稅票開錯(cuò)了稅費(fèi)怎么退回來
    101. 遼寧社保網(wǎng)上申報(bào)流程圖
    102. 十月報(bào)稅2021
    103. 河北省國(guó)家稅務(wù)局電子稅務(wù)局官網(wǎng)
    104. 珠海南灣國(guó)際屬于香洲哪個(gè)街道
    105. 有關(guān)單位和個(gè)人應(yīng)該怎么樣
    106. 免責(zé)聲明:網(wǎng)站部分圖片文字素材來源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)告知,我們會(huì)第一時(shí)間刪除,謝謝! 郵箱:opceo@qq.com

      鄂ICP備2023003026號(hào)

      網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)

      友情鏈接: 武漢網(wǎng)站建設(shè)