Node.js学习之路day1

作者: zkhChris | 来源:发表于2017-09-14 00:16 被阅读0次

    前端菜鸡记录自己的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上大多数文件操作应该都是用的异步操作,读取关键配置或者特殊需要同步操作的情况再用同步文件操作吧,毕竟单线程,服务器失去响应就很尴尬了。

    相关文章

      网友评论

        本文标题:Node.js学习之路day1

        本文链接:https://www.haomeiwen.com/subject/lixrsxtx.html