ES6

90 阅读2分钟

语法

letconst    
新增let命令,来声明变量    
类似于var, 但是其申明的变量只在let命令坐在的代码块内有效    
let更适合for()循环内使用    
解构赋值

原功能的扩展

字符串扩展    
trim() 清除空白    
for of 循环字符串    
传统的for循环会产生字符乱码,因为不认识utf16的编码    
includes 判断子字符串, 
传统上js只有indexOf数值扩展数组扩展对象扩展函数扩展正则扩展symbol扩展

新功能的添加

SetMap 数据解构Iterator 迭代器Generator 生成器Promise 对象ClassModule 模块化

一、 node文件运行环境

  1. 黑窗口 REPL

    R read (读) E eavl () P print L loop

二、node的组成部分

ecmascript核心部分     
fs  
path  
http ...全局成员     
console   
setTimeOut ...

三、fs模块

1.文件读取 fs.readFile(path[, options], callback)

  • path 读取的文件位置

  • options 可选的参数, 默认是null == buff

  • callback 回调函数 err 读取的错误信息 data 读取的数据

    const fs=require("fs") fs.readFile('./txt','utf8', (err,dataBuff)=>{
    if(err) throw err;
    // console.log(dataBuff.toString())
    // console.log(dataBuff + '')
    console.log(dataBuff) })

2.文件写入 fs.writefile(path[, options],callback)

  • path 读取的文件位置

  • options 可选的参数, 默认是null == buff

  • callback 回调函数 err 读取的错误信息 data 读取的数据

  • ps 文件写入会覆盖历史数据

    const fs=require("fs") fs.writefile('./txt','嘻嘻嘻嘻嘻嘻', err => {
    if(err) throw err;
    console.log("写入成功") })

3.文件拷贝 fs.readFile(src[, options],callback)

  • src 要拷贝的文件地址

  • callback 回调函数 err 读取的错误信息 data 读取的数据

    const fs=require("fs") // 方式一 // fs.readFile("./files/1.txt",(err,dataBuff)=>{ // if(err) throw err; // fs.writeFile('./files/2.txt',dataBuff,err=>{ // if (err) throw err; // console.log('拷贝成功'); // }) // })​ // 方式二 fs.copyFile("./files/1.txt", './files/2.txt', err=>{
    if (err) throw err
    console.log('拷贝成功') })

四、文件路径问题 path

  1. path.join()

    const path=require('path')
    // 拼接一个绝对路径
    // 方式一
    const abspath = __dirname + 'files/1.txt'
    // 方式二
    const baspath = __path.join(__dirname, 'files/1.txt')​

五、 同步和异步

  1. 同步: 一件一件的执行

  2. 异步: 多件事情同时执行

六、 回调函数

  1. 为什么使用回调函数

    // 为什么使用回调函数
    // 回调函数就是参数的传递, 在函数的内部调用另一个函数,
    // 调用的同时可以把内部函数的数据传递出来​
    function getData(callback){
    setTimeout(function(){
    var a=1;
    callback(a)
    },1000)
    }
    console.log(getData)
    getData(function(res){
    console.log(res)
    })

  2. async 和 await

    function getData(path) {
    return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf8', (err, data) => {
    if (err) return reject(err)
    resolve(data)
    })
    })
    }​
    // async 和 await
    // async 和 await 必须配合使用
    async function getFileData(){
    const data1=await getData('./files/1.txt');
    const data2=await getData('./files/2.txt');
    console.log(data1)
    console.log(data2)
    }
    getFileData()

  3. 解决回调地狱

    // promise处理回调地狱 // promise可以把异步的请求方式按照同步的执行
    function getData(path) {
    return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf8', (err, data) => {
    if (err) return reject(err)
    resolve(data)
    })
    })
    }​
    getData('./files/1.txt')
    .then(res => {
    console.log(res)
    return getData('./files/2.txt')
    })
    .then(res => {
    console.log(res)
    return getData('./files/3.txt')
    })
    .then(res => {
    console.log(res)
    }) }