• node,不懂不懂


    Four Day
    -------------------------node.js分对象全局/核心模块/文件模块
    path(核心模块)--作用:操作路径
    basername/获取传入路劲
    dimame/获取传入路径目录
    extname/获取出入路径的扩展名
    join/讲两个或以上的路径拼接在一起
    parse/将传入路径转为一个路径对象
    fomart/将出入路径转为一个字符串
    delimlter/得到操作系统分割符
    ---------------------------
    url(核心模块)--作用:操作url
    组成:协议名/用户名和密码/服务器ip地址/端口号/请求路径/参数/哈希值
    parse/讲一个url路径字符串,转放一个路径对象
    format/将一个路径对象传为url路径字符串

    -----------------------------------------------------------
    querystring(模块):操作url中的参数
    parse/讲一个参数字符串转为一个参数对象
    stringify

    -----------------------------------------------------------------
    文件模块:又叫第三方包---------一些功能相似的模块集合
    *包必须放在node_modules文件下
    *包必须有的文件--README.md(说明文件)
    /package.json(必须在包的根目录下)
    /js文件放在liy文件中
    package.json:name--包名/version--包版本/description--包描述
    /main--包出口文件/
    require关键字引包:*把当前包当作核心模块加载
    *加载不到就去(node_moudules)
    *加载package.json找
    *找不到就报错
    npm上传包:*标准格式包
    *注册npm账号
    *去包根目录,通过shell输入npm adduser/登陆npm/npm publish包名
    -----------------------------------------------------------------------------
    ES 6新语法:use strict---开启严格模式
    *不允许‘let’反复定义一个变量,会报错
    let name='zm';
    let name='xb'; //这样会报错
    ---------------------------------
    const banben='window';
    *值不能改变
    *常量具有块级作用域
    *不要再快中申明常量
    *不可以算不算申明同名的常量
    *一定要赋初始值,否则报错
    *如果声明的是对象,对象的地址不能改变,但可以改变其内部的属性
    ----------------------------------
    字符串的扩展:
    xxx.includes();//返回boolean值,判断是否含有该字符
    xxx.startsWith('hello');//返回boolean值,判断以什么字符开头,两个参数:1.字符,2.起始位置
    xxx.endWith('以什么结尾’);//原理同上
    xxx.repeat('重复输出字符串次数')//参数为正数/正小数数字
    ------------------------------------------------------------------------------------------------
    模板语法:‘模板字符串’
    *定义一个模板,并且给模板加一些占位,${}.....,${}......
    *给模板里的变量赋值
    *${}可以放变量/方法/表达式
    -----------------------------------------------------------------------------------------
    箭头函数
    方法一:匿名函数中的function关键字我们可以省略,参数与方法体之间中=>
    var arr=[];
    $(arr).each((index,item)=>{console.log(item);})
    方法二:去掉{}
    $(arr).each((index,item)=>console.log(item);)
    方法三:去掉()
    $(arr).each(index=>console.log(arr[index]);)

    *如果参数只有一个,可以去掉调参数的();
    *如果有两个或者两个以上的参数()不去掉
    *如果没有参数,()不能去掉
    方法体:
    *只有一句,就省略
    *有多句代码就不能省略
    ---------------------------------
    *箭头函数没有自己的this,函数体内部写的this,会顺着作用域去找最真实存在的this
    *node中使用settimeout传入一个匿名函数,这个函数中如果使用到了this=定义时的对象(并且不会改变),为了方便不建议使用this
    *箭头函数不能作为构造函数
    *箭头函数不存在arguments
    ---------------------------------------------------------------------------------------------------、
    文件读写核心模块File System(fs)
    2.1Buffer对象:存储底层二进制数据
    使用:
    *var buf =new Buffer(5);//设置长度为5的数组
    console.log(buf);这个数组中美个数对应的内存地址
    buffer对象本质上市一个二进制数组,但在西纳斯的时候为了空间,输出时由二进制转为十六进制
    清空buffer数组:
    buf.fill(0);
    console.log(buf);
    存储:字母--》占一个字节 汉字-->占3个字节
    如果数组长度不能容纳所有的内容,那么将来这个数组将走出的部分自动省略
    buf.writ('我');
    buf.toString(将数组以字符串输出)
    var buf = new Buffer('lslsl');按需分配长度;
    const fs=require('fs');
    const iconv=require('iconv-lite')
    fs.readFile('./1.txt',(err,data)=>{
    //err 存储错误信息
    if(err){
    console.log('文件读取失败');
    return;
    }
    consolo.log(iconv.decode(data,'gb2312));//toString默认把二进制转为utf-8的内容
    //data 成功存储的位置
    });
    总结:可能会用不到,buffer不支持gb2312,可通过下载第三方包icon改变
    ----------------------------------------------------------------------------------------------------
    文件操作:操作目录--通过nodejs代码来增加/删除
    创建一个文件夹:fs.mkdir(srcpath,dstpath,callback)/fs.unlink(删除文件)/fs.exists(路径,(exists)=>{}判断目录是否存在
    fs.readFile(读文件)/fs.rename(改文件)
    ’use strict' //进入严格模式
    const fs=require('fs'); //引包
    fs.mkdir('./aa路径',(err参数)=>{
    if(err){
    console.log('添加失败');
    return;

    }
    console.log('success');
    --------------------------------------------------
    写文件:writeFile(覆盖)/appendFile(追加)
    writeFile:
    'use strict'
    const fs=require('fs');
    fs.writeFile('./aa/bb/1.txt','醉了',(err)=>{
    if(err){
    console.log('写入失败');
    return;
    }
    console.log('写入成功');
    };
    监控文件(文件是否被改动):fs.wantchFile
    fs.writeFile('./.../','hello world',(err)=>{
    if(err){
    console.log('...');
    }
    console.log('...');
    。。。。。。。。。。。。。。。。。。。。。。。
    fs.watchFile('....',(curr,prev)=>{
    console.log('curr=${curr}');
    console.log('curr=${prev}')
    }
    如果读取大文件,data/buffer这个数组的长度有限,要用文件流:fs.createReadStream(pah[,options])将文件以流方式读出来/fs.createWriteStream将文件以流方式写进去
    let pathOld= '....';
    let pathTarget ='....';
    let rs=fs.creatReadStream(pathOld);
    let ws=fs.creatWriteStream(pathTarget);
    //chunk,当回掉函数执行,就会触发chuunk文件,内容为本次读出的内容
    rs,on('data',(chunk)=>{
    ws.write(chunk);
    })
    rs.on('end',()=>{
    console.log('....');
    ws.end(()=>{
    console.log('');
    };
    };
    -------------------------------------------------------------上面的方法的简单版(但过程不可控)
    'use strict'
    let pathOld= '....';
    let pathTarget ='....';
    let rs=fs.creatReadStream(pathOld);
    let ws=fs.creatWriteStream(pathTarget);

    rs.pipe(ws);

  • 相关阅读:
    position : sticky
    学习笔记之段落里面最后出现省略号
    two or more web modules defined in the configuration have the same context root
    Android笔记:ActivitySpinner
    设计一个通讯录的XML文件
    使用JDBC连接SQL Server数据库
    SNMP使用UDP传送报文。为什么不使用TCP?
    计算Java程序运行时间
    android在xml的textStyle中,设置一个字体是粗体或斜体或带有下划线
    schema.xml文件里datatype的定义格式
  • 原文地址:https://www.cnblogs.com/mcpark/p/6068970.html
Copyright © 2020-2023  润新知