一、什么是node.js
node.js是編寫高性能網(wǎng)絡(luò)服務(wù)器的JavaScript工具包,讓javscript運行在服務(wù)端的開發(fā)平臺。
Node.js采用的是谷歌v8引擎。(v8引擎執(zhí)行javascript速度非???,性能非常好)
node.js適合做I/o密集型項目;不適合做計算密集型項目
node.js的特點:快、耗內(nèi)存多、單線程語言、異步式、事件驅(qū)動最大特點就是采用異步式I/o與事件驅(qū)動的架構(gòu)設(shè)計。對于高并發(fā)的解決方案,傳動的架構(gòu)是多線程模式,也就是為每個業(yè)務(wù)邏輯提供一個系統(tǒng)線程,通過系統(tǒng)線程切換來彌補(bǔ)同步式I/o調(diào)用時的時間開銷。Nide.js使用的單線程模型,在執(zhí)行的過程中會維護(hù)一個事件對列,程序在執(zhí)行時在進(jìn)入時間循環(huán)等待下一個事件到來
Node.js的優(yōu)點:性能高,開發(fā)效率高(省優(yōu)化),應(yīng)用范圍廣
二、Node中的內(nèi)置對象:
1、console:
2、__dirname:文件所在的位置
3、__filename:文件所在位置加上文件名稱
4、exports:把當(dāng)前文件的內(nèi)容曝光(其他文件可以通過require使用exports曝光的內(nèi)容)使用exports曝光的內(nèi)容,必須給exports添加屬性
5、module:在node中一般使用exports一起使用來曝光內(nèi)容
1):exports必須添加屬性,module.exports可以不添加屬性
2):module.exports和exports可以曝光任何類型的內(nèi)容
3):exports和module.exports分別曝光:普通變量,函數(shù),對象,構(gòu)造函數(shù),工廠函數(shù)
三、Node.js中的官方模塊(核心模塊)
? ? ? 1、path模塊:提供一些處理文件路徑的小工具。
? ? ? ? ? ?方法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1)normalization:格式化路徑
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2)join:連接路徑
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3)resolve:轉(zhuǎn)換為絕對路徑
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4)extname:路徑中文件的后綴名:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5)parse:返回路徑字符串的對象
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回對象:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? root:根目錄 ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dir:路徑 ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?base:當(dāng)前文件的文件夾 ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ext:擴(kuò)展名 ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name:文件的名字
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6)basename:返回路徑中最后一部分?
? ? ? ? ?2、OS(操作系統(tǒng)):
? ? ? ? ? ? ? ? ? 方法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1、arch():返回操作系統(tǒng)CPU架構(gòu)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2、cpus():返回一個對象數(shù)組,包含所安裝的每個CPU的
? ? ? ? 3、Process(進(jìn)程):用于描述node.js進(jìn)程狀態(tài)的對象
? ? ? ? ? ? ? ? ? ?屬性:(用于返回系統(tǒng)信息)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Pid:進(jìn)程號
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Stdout:指向標(biāo)準(zhǔn)輸出
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Stdin:指向標(biāo)準(zhǔn)輸入
? ? ? ? ? ? ? ? ? ? 方法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?exit():使用指定的code結(jié)束進(jìn)程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?cwd():返回當(dāng)前進(jìn)程的工作目錄
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?chdir():改變當(dāng)前工作進(jìn)程的目錄。如果操作失敗拋出異常
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nextTick():一旦事件循環(huán)結(jié)束,調(diào)用回到函數(shù)
? ? ? ? ?4、Util(常用工具)
? ? ? ? ? ? ? 1、Util.inherits()是一個實現(xiàn)對象間原型繼承的函數(shù)
? ? ? ? ? ? ? 2、util.inspect()可以將任意對象轉(zhuǎn)換為字符串的方法,可分成次有結(jié)構(gòu)的組織對象
? ? ? ? ? ? ? 3、util.isArray():判斷給定的參數(shù)是否為一個數(shù)組是返回true否返回false;
? ? ? ? ? ? ? 4、util.isRegExp()判斷給定的參數(shù)是否為正則表達(dá)式是返回true否返回false;
? ? ? ? ? ? ? ?5、uti.isDate():判斷給定的參數(shù)是否為一個日期是返回true否返回false;
? ? ? ? 5、fs:file system:文件系統(tǒng)
? ? ? ? ? ? 什么是文件:在電腦中什么都是文件(除文件夾);
? ? ? ? ? ? 文件中放的是:文件內(nèi)容(讀和寫)
? ? ? ? ? ?在nodejs中,使用fs核心模塊讀寫文件
? ? ? ? ? ? ? 1、同步讀文件:.readFileSync(‘’)//參數(shù)是要讀文件的路徑,返回文件的內(nèi)容到buffer中
? ? ? ? ? ? ? ?2、異步讀文件:.readFile()這個方法有兩個參數(shù),第一個是要讀文件的路徑,第二個是回調(diào)函數(shù)(ps:回調(diào)函數(shù)有倆個參數(shù)第一個是當(dāng)文件出錯時的錯誤信息,第二個參數(shù)是讀到文件的內(nèi)容)
? ? ? ? ? ? ? ?3、同步寫文件:.writeFileSync()有兩個參數(shù)第一個是路徑,第二個參數(shù)是要編寫的內(nèi)容如果第一個參數(shù)沒有該文件,則會創(chuàng)建文件默認(rèn)的編碼格式是utf-8
? ? ? ? ? ? ? ?4、異步寫入文件:.writeFile():這個方法有兩個參數(shù),第一個是要讀文件的路徑,第二個是回調(diào)函數(shù),如果第一個參數(shù)沒有該文件,則會創(chuàng)建文件
? ? ? ? ? ? ? ?5、追加文件內(nèi)容
? ? ? ? ? ? ? ? ? ? ? 1)、同步.appendFileSync()第一個參數(shù)是文件的路徑,第二個是文件的內(nèi)容
? ? ? ? ? ? ? ? ? ? ? 2)、異步:appendFile();
? ? ? ? ? ? ? 6、重命名文件
? ? ? ? ? ? ? ? ? ? ? 1)、同步: renameSync()有倆個參數(shù)第一個是已有文件名,第二是要改的文件名
? ? ? ? ? ? ? ? ? ? ? ?2)、異步:rename();