前端菜雞記錄自己的node.js學(xué)習(xí)之路凰萨,與大家共勉
1.從HelloWorld寫起
test.js
console.log('helloworld')
node test
輸出helloworld
2.簡(jiǎn)單的模塊使用
test1.js
function hello(){
console.log('helloworld')
}
module.exports=hello
test2.js
let hello=require('./test1.js')
hello()
輸出helloworld
3.判斷瀏覽器或者node環(huán)境
if(typeof(window)!='undefined'){
console.log('window')
}else{
console.log('node')
}
4.常用模塊之File System fs
fs:文件系統(tǒng)模塊骄瓣,負(fù)責(zé)讀寫文件
4.1.1異步讀文件
let fs=require('fs')
fs.readFile('../test.txt','utf-8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
readFile()第一個(gè)參數(shù)是文件的路徑,第二個(gè)參數(shù)是文件編碼师坎,第三個(gè)為回調(diào)函數(shù)恕酸,err為不空時(shí)說(shuō)明出錯(cuò),否則輸出data胯陋。
異步證明
let fs=require('fs')
fs.readFile('../test.txt','utf-8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
console.log('async')//輸出為'async' data
4.1.2 同步讀文件
let data=fs.readFileSync('./test1.js','utf-8')
console.log(data)
在異步讀寫的后面加上Sync蕊温,讀文件失敗會(huì)直接報(bào)錯(cuò),可使用try catch捕獲錯(cuò)誤遏乔。
let fs=require('fs')
try{
let data=fs.readFileSync('./test11.js','utf-8')
console.log(data)
}
catch(e){
console.log(e)
}
同步讀取的缺點(diǎn)在于义矛,當(dāng)文件過(guò)于大時(shí),有可能io阻塞,等待期間無(wú)法響應(yīng)其他請(qǐng)求盟萨。
4.2.1異步寫文件
通過(guò)fs.writeFile()實(shí)現(xiàn)
let fs=require('fs')
let data='new write'
fs.writeFile('./test1.js',data,function(err){
if(err){
console.log(err)
}else{
console.log('success')
}
})
console.log('async')
})
//輸出 async success
成功后會(huì)替換原文件文本凉翻,路徑不存在時(shí)會(huì)新建文件
4.2.2 同步寫文件
let fs=require('fs')
let data='new write'
fs.writeFileSync('./test1.js',data)
成功后會(huì)替換原文件文本,路徑不存在時(shí)會(huì)新建文件
4.3 stat()捻激,statSync()方法
該方法返回一個(gè)Stat對(duì)象制轰,包含文件大小,創(chuàng)建時(shí)間等信息
let fs=require('fs')
let data='new write'
fs.stat('./test1.js',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
stat里面就上面這些屬性胞谭,有些不知道是什么相關(guān)的垃杖。。丈屹。
statSync同步方法调俘,盡量用try..catch捕獲錯(cuò)誤
let fs=require('fs')
try{
let info=fs.statSync('./test32.js')
console.log(info)
}
catch(e){
console.log(e)
}
4.4 fs小總結(jié)
node上大多數(shù)文件操作應(yīng)該都是用的異步操作,讀取關(guān)鍵配置或者特殊需要同步操作的情況再用同步文件操作吧旺垒,畢竟單線程脉漏,服務(wù)器失去響應(yīng)就很尷尬了藐鹤。