Node.js入門(上)

Node的好處:

1可以和后端有效溝通
2全棧應(yīng)用
3工程化思想

Node.js是什么

是一個異步的事件驅(qū)動的js運行時(runtime就是程序運行的時候)

與前端不同:

JS核心的語法不變,但是操作的對象不同
前端:BOM DOM
后端:fs http buffer events os

nodemon插件:

安裝nodemon 監(jiān)聽node代碼變化的工具攻冷,會自動完成node服務(wù)器和數(shù)據(jù)庫服務(wù)器的重啟

npm install -g nodemon

nodemon使用

nodemon api.js

node的斷點調(diào)試

使用vsc點擊左邊菜單的瓢蟲
選擇


image.png

打斷點,點運行,項目里面會多了個json文件,就可以運行到斷點了

內(nèi)置模塊os

獲取內(nèi)存占用率
新建一個api.js文件

//內(nèi)置模塊
const os = require('os')
const mem = os.freemem() / os.totalmem()
console.log(`內(nèi)存占用率${mem.toFixed(2)}%`);

運行代碼
node api.js

第三方模塊download-git-repo插件和ora插件

download-git-repo插件:通過代碼把github的項目clone下來

npm i download-git-repo -s

ora插件:加載中的圈圈

npm i ora -s

使用

//第三方模塊
//異步io處理 從網(wǎng)絡(luò)下載下來 再往文件中寫
const download = require('download-git-repo')
//加進度條
const ora = require('ora')
const process = ora(`下載項目...`)
//轉(zhuǎn)圈圈
process.start()

//第一個參數(shù)是路徑 第二個參數(shù)是下載的文件夾(在同目錄建了個test) 第三個是callback
download('github:su37josephxia/vue-template','test',err =>{
    console.log(err ? err : 'Success');
    if(err){
        process.fail();
    }else{
        process.succeed();
    }
})
promisify 把上面的代碼包裝成promise的方式

上面的寫法是普通寫法 可以再包一層變成promise的用法
async await用于異步串行任務(wù)比較好

//第三方模塊使用
const repo = 'github:su37josephxia/vue-template'
const desc = 'test'
clone(repo,desc)

//異步io處理 從網(wǎng)絡(luò)下載下來 再往文件中寫
async function clone(repo,desc){
    //用promise代替callback 
   //node內(nèi)置模塊
    const {promisify} = require('util')
    //promisify包一層就可以使用awit語法
    const download = promisify(require('download-git-repo'))
    //加進度條
    const ora = require('ora')
    const process = ora(`下載項目...`)
    //轉(zhuǎn)圈圈
    process.start()
    try {
        await download(repo,desc)
    } catch (error) {
        process.fail();
    }
    process.succeed();
}
自定義模塊

新建文件download.js
還是上面download代碼


//自定義模塊的寫法
//異步io處理 從網(wǎng)絡(luò)下載下來 再往文件中寫
module.exports.clone = async function clone(repo,desc){
    //用promise代替callback node內(nèi)置庫
    const {promisify} = require('util')
    //promisify包一層就可以使用awit語法
    const download = promisify(require('download-git-repo'))
    //加進度條
    const ora = require('ora')
    const process = ora(`下載項目...`)
    //轉(zhuǎn)圈圈
    process.start()
    try {
        await download(repo,desc)
    } catch (error) {
        process.fail();
    }
    process.succeed();
}

然后在api.js調(diào)用

// 第三方模塊使用
const repo = 'github:su37josephxia/vue-template'
const desc = 'test'
const {clone} = require('./download')
clone(repo,desc)
內(nèi)置模塊fs 同步操作和異步操作
//同步操作
const fs = require('fs')
const data = fs.readFileSync('./download.js')
//data是buffer 16進制
console.log(data.toString())

//異步操作
fs.readFileSync('./download.js',(err,data) => {
    if(err) throw err
    console.log(data.toString())
})
內(nèi)置模塊buffer 二進制處理
//c語言寫的庫
//buffer 處理二進制 用于TCP流 文件系統(tǒng)操作 其他上下文與八位字節(jié)流交互
//創(chuàng)建一個長度為10字節(jié)以0填充的buf
const buf1 = Buffer.alloc(10)
console.log(buf1)
//看a轉(zhuǎn)二進制狀態(tài)
const buf2 = Buffer.from('a')
console.log(buf2,buf2.toString())
//看中文轉(zhuǎn)二進制狀態(tài)
const buf3 = Buffer.from('只能')
console.log(buf3,buf3.toString())
//合并二進制
const buf4 = Buffer.concat([buf2,buf3])
console.log(buf4,buf4.toString())
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厉亏,隨后出現(xiàn)的幾起案子垄提,更是在濱河造成了極大的恐慌榔袋,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铡俐,死亡現(xiàn)場離奇詭異凰兑,居然都是意外死亡,警方通過查閱死者的電腦和手機审丘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門吏够,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事锅知〔ゼ保” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵售睹,是天一觀的道長桩警。 經(jīng)常有香客問我,道長昌妹,這世上最難降的妖魔是什么捶枢? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捺宗,結(jié)果婚禮上柱蟀,老公的妹妹穿的比我還像新娘。我一直安慰自己蚜厉,他們只是感情好长已,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著昼牛,像睡著了一般术瓮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贰健,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天胞四,我揣著相機與錄音,去河邊找鬼伶椿。 笑死辜伟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的脊另。 我是一名探鬼主播导狡,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偎痛!你這毒婦竟也來了旱捧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤踩麦,失蹤者是張志新(化名)和其女友劉穎枚赡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谓谦,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡贫橙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了反粥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片料皇。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谓松,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出践剂,到底是詐尸還是另有隱情,我是刑警寧澤娜膘,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布逊脯,位于F島的核電站,受9級特大地震影響竣贪,放射性物質(zhì)發(fā)生泄漏军洼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一演怎、第九天 我趴在偏房一處隱蔽的房頂上張望匕争。 院中可真熱鬧,春花似錦爷耀、人聲如沸甘桑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跑杭。三九已至,卻和暖如春咆耿,著一層夾襖步出監(jiān)牢的瞬間德谅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工萨螺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窄做,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓慰技,卻偏偏與公主長得像椭盏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惹盼,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容