语法
let 与 const
新增let命令,来声明变量
类似于var, 但是其申明的变量只在let命令坐在的代码块内有效
let更适合for()循环内使用
解构赋值
原功能的扩展
字符串扩展
trim() 清除空白
for of 循环字符串
传统的for循环会产生字符乱码,因为不认识utf16的编码
includes 判断子字符串,
传统上js只有indexOf数值扩展数组扩展对象扩展函数扩展正则扩展symbol扩展
新功能的添加
Set 和 Map 数据解构Iterator 迭代器Generator 生成器Promise 对象Class 类Module 模块化
一、 node文件运行环境
-
黑窗口 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
-
path.join()
const path=require('path')
// 拼接一个绝对路径
// 方式一
const abspath = __dirname + 'files/1.txt'
// 方式二
const baspath = __path.join(__dirname, 'files/1.txt')
五、 同步和异步
-
同步: 一件一件的执行
-
异步: 多件事情同时执行
六、 回调函数
-
为什么使用回调函数
// 为什么使用回调函数
// 回调函数就是参数的传递, 在函数的内部调用另一个函数,
// 调用的同时可以把内部函数的数据传递出来
function getData(callback){
setTimeout(function(){
var a=1;
callback(a)
},1000)
}
console.log(getData)
getData(function(res){
console.log(res)
}) -
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() -
解决回调地狱
// 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)
}) }