前端菜鸡记录自己的node.js学习之路,与大家共勉
1.从HelloWorld写起
test.js
console.log('helloworld')
node test
输出helloworld
2.简单的模块使用
test1.js
function hello(){
console.log('helloworld')
}
module.exports=hello
test2.js
let hello=require('./test1.js')
hello()
输出helloworld
3.判断浏览器或者node环境
if(typeof(window)!='undefined'){
console.log('window')
}else{
console.log('node')
}
4.常用模块之File System fs
fs:文件系统模块,负责读写文件
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()第一个参数是文件的路径,第二个参数是文件编码,第三个为回调函数,err为不空时说明出错,否则输出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,读文件失败会直接报错,可使用try catch捕获错误。
let fs=require('fs')
try{
let data=fs.readFileSync('./test11.js','utf-8')
console.log(data)
}
catch(e){
console.log(e)
}
同步读取的缺点在于,当文件过于大时,有可能io阻塞,等待期间无法响应其他请求。
4.2.1异步写文件
通过fs.writeFile()实现
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
成功后会替换原文件文本,路径不存在时会新建文件
4.2.2 同步写文件
let fs=require('fs')
let data='new write'
fs.writeFileSync('./test1.js',data)
成功后会替换原文件文本,路径不存在时会新建文件
4.3 stat(),statSync()方法
该方法返回一个Stat对象,包含文件大小,创建时间等信息
let fs=require('fs')
let data='new write'
fs.stat('./test1.js',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
image.png
stat里面就上面这些属性,有些不知道是什么相关的。。。
statSync同步方法,尽量用try..catch捕获错误
let fs=require('fs')
try{
let info=fs.statSync('./test32.js')
console.log(info)
}
catch(e){
console.log(e)
}
4.4 fs小总结
node上大多数文件操作应该都是用的异步操作,读取关键配置或者特殊需要同步操作的情况再用同步文件操作吧,毕竟单线程,服务器失去响应就很尴尬了。
网友评论