node入门01

135 阅读4分钟

REPL环境

一、Node的REPL基本操作

REPL(Read-eval-print-loop):交互式解析器

在REPL环境下,可以定义和运行变量、函数、对象。

REPL的常用命令:

   进入node,即进入了REPL环境,在命令窗口输入node

退出:输入.exit或者连续按ctrl+c两次

    点击tab可以打印出Node.js中的所有对象 
    
   点击向上/向下可以查看历史命令

   .save filename保存输入的命令

   .load filename加载文件
   
   在REPL环境下,可以用_代替上一次表达式的结果

node文档官网:nodejs.cn/api/

1.读文件:

fs.readFile(path[, options], callback) path | | | 文件名或文件描述符。

options(可选参数)默认值: null。

回调会传入两个参数 (err, data),其中 data 是文件的内容。

2.写文件 fs.writeFile(file, data[, options], callback)

第一个参数:写入的文件路径

data:写入的内容

  • options |

    • encoding | 默认值: 'utf8'。

    callback:回调函数

    • err

    代码补全:
    3.追加文件: 注意:文件已存在则覆盖该文件

    //先读取 = > 拼接 = >再写入
    
    var fs = require('fs');
    
    fs.readFile('./02_input.txt','utf8',function(err,data){
        if(!err){
            var newStr = data + ',我叫草莓千层蛋糕';
            fs.writeFile('./02_input.txt',newStr,function(err){
                    if(!err){
                        console.log('恭喜您,追加成功')
                    }else{
                        console.log('写入的err')
                    }
                
            })
        }else{
            console.log('读取的err')
        }   
    })
    

    json

    • 数组=> 数组字符串 arr => arrStr
    • 对象=> 对象字符串 obj => objStr
    • 数组包裹对象 => 数组包裹对字符串 [{}] => ArrObjStr
    var arrStr = JSON.stringify(arr);
    console.log(arrStr);
    
    var obj = {id:'007',name:'lulu',age:'20',sex:'men'};
    var objStr = JSON.stringify(obj);
    console.log(objStr);
    
    var arrObj = [
        {id:'001',class:'1班',grade:'100'},
        {id:'002',class:'2班',grade:'200'},
        {id:'003',class:'3班',grade:'300'},
    ]
    var arrObjStr = JSON.stringify(arrObj);
    
    console.log(arrObjStr);
    
    ["abc","小朋友","you","if_have","many","???"]
    {"id":"007","name":"lulu","age":"20","sex":"men"}
    [{"id":"001","class":"1班","grade":"100"},{"id":"002","class":"2班","grade":"200"},{"id":"003","class":"3班","grade":"300"}]
    

    转成的json文件里面都是"" 现在要转回arr obj

    复制上面的输出arr obj 再用''包裹住

    var arrStr = '["abc","小朋友","you","if_have","many","???"]';
    var arr = JSON.parse(arrStr);
    console.log(arr);
    
    var objStr = '{"id":"007","name":"lulu","age":"20","sex":"men"}';
    var  obj= JSON.parse(objStr);
    console.log(obj);
    
    var arrObjStr = '[{"id":"001","class":"1班","grade":"100"},{"id":"002","class":"2班","grade":"200"},{"id":"003","class":"3班","grade":"300"}]';
    var arrObj = JSON.parse(arrObjStr);
    
    console.log(arrObj);
    
    [ 'abc', '小朋友', 'you', 'if_have', 'many', '???' ]
    { id: '007', name: 'lulu', age: '20', sex: 'men' }
    [
      { id: '001', class: '1班', grade: '100' },
      { id: '002', class: '2班', grade: '200' },
      { id: '003', class: '3班', grade: '300' }
    ]
    

    练习:尝试操作json数据,时间15分钟

    var str = [
        {id:1,names:'路飞',sex:'男',img:''},
        {id:2,names:'乌索普',sex:'男',img:''},
        {id:3,names:'娜美',sex:'女',img:''}
    ]
    

    要求1:将数据转为字符串存入文件 hzw.json

    要求2:向 hzw.json 文件中添加一条数据 {id:'4',names:'罗宾',sex:'女',img:''} ;

    要求3:删除 hzw.json 文件中 id 值为2的数据

    要求4:将 hzw.json 文件中id为3的数据中的names改为 ‘女帝’;

    05.写json.js

    // 要求1:将数据转为字符串存入文件 hzw.json
    var str = [
        {id:1,names:'路飞',sex:'男',img:''},
        {id:2,names:'乌索普',sex:'男',img:''},
        {id:3,names:'娜美',sex:'女',img:''}
    ]
    var json_Str = JSON.stringify(str);
    // console.log(json_Str); 
    
    var fs = require('fs');
    fs.writeFile('./hzw.json',json_Str,function(err){
        if(!err){
            console.log('json字符串存入文件 hzw.json')
        }else{
            console.log(err);
        }
       
        
        
    })
    

    06.添加json.js

    var fs = require('fs');
    
    var addStr = {id:4,names:'罗宾',sex:'女',img:''};
    
    //我要添加进去  第一步:读取hzw.json文件  json转成数组  最后加的push
    fs.readFile('./hzw.json','utf8',function(err,data){
        if(!err){
    
            // console.log('读取成功');
            var arr = JSON.parse(data);
            // 检验是不是数组
            // console.log(arr);
            arr.push(addStr);
            //看看添加上去了没
            // console.log(arr);
            //人家json文件放的是字符串 是不是要转回去
            var json_arr = JSON.stringify(arr);
            fs.writeFile('./hzw.json',json_arr,function(err){
                if(!err){
                    console.log('添加成功');
                }else{
                    console.log(err);
                }
                
            })
            
            
            
    
        }else{
            console.log('读取失败');
            
        }
    })
    
    

    07.删除json.js

    var fs = require('fs');
    // 思路:先read拿到data 再write  for遍历 拿到id 不为2的 把他们添加到一个新的数组中   
    fs.readFile('hzw.json','utf8',function(err,data){
        if(!err){
        //    console.log(data);
        var arr = JSON.parse(data);
        // console.log(arr);
        //定义一个新的数组  存不包含id为2数据
        var newArr = [];
    
        for(let i=0;i<arr.length;i++){
            if(arr[i].id != 2){
                //把整个对象添加进去
                newArr.push(arr[i])
            }
        }
        // console.log(newArr);
    var json_newArr = JSON.stringify(newArr)
        //最后要转回json字符串格式
        fs.writeFile('./hzw.json',json_newArr,function(err){
            if(!err){
                console.log('删除成功!');
                
            }else{
                console.log(err);
                
            }
    
        })
           
    
        }else{
            console.log('读取err')
        }
    
    
    })
    

    08.修改json.js

    var fs = require('fs');
    // 思路:先read拿到data 再write  for遍历 拿到id=3的 把names修改为 '女帝' 
    fs.readFile('hzw.json','utf8',function(err,data){
        if(!err){
        //    console.log(data);
        var arr = JSON.parse(data);
        // console.log(arr);
       
        for(let i=0;i<arr.length;i++){
            if(arr[i].id == 3){
                arr[i].names ='女帝';
            }
        }
        // console.log(newArr);
    var json_newArr = JSON.stringify(arr)
        //最后要转回json字符串格式
        fs.writeFile('./hzw.json',json_newArr,function(err){
            if(!err){
                console.log('修改成功!');
                
            }else{
                console.log(err);
                
            }
    
        })
           
        }else{
            console.log('读取err')
        }
    })