node.js 基础

node.js 基础

** 1、node是单线程的 2、node擅长高并发处 3、node擅长I/O密集型处理 **

1、nodejs 实现静态服务器

nodeJS Node.js是一个基于Chrome V8引擎(编译成原生机器码)的让JavaScript运行在服务器端的运行环境,它让JavaScript的触角伸到了服务器端。单线程 NodeJS不会为每个连接客户创造一个新的线程,仅用一个线程

2、 回顾–nodeJS特性–非阻塞式IO

io:输入输出 阻塞io:网络请求,数据库处理,文件读取
非阻塞式IO NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调函数返回保证高效的利用当前线程 不造成硬件浪费

3、 事件驱动

事件驱动 通过事件来驱动整个程序的进行由于是单线程,所以把高io的操作就会移动到事件队列中等待完,完成后通过回调函数的方式返回给线程来进行处理。这个循环处理的过程称之为:事件环

4、

_filename 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径

_dirname表示当前执行脚本所在的目录

fs模块

fs文件系统用于对系统文件及目录进行读写操作
readdirSync()同步读取
同步代码在遇到错误的时候 后面的代码是不会继续进行的,所以我们可以在关键位置捕获错误信息
// 同步读取文件夹 readdirSync
try {
    let t1 = fs.readdirSync("./")
    console.log(t1)
} catch (error) {
    console.log(error)
}
异步则不会阻塞代码的执行

异步调用会将读取任务下达到任务队列,直到任务执行完成才会回调
语法:fs.readdir(path,options,callback(err,files))
path(必选),表示要读取的路径。
options(可选)参数。
callback 是回调函数,第一个err错误信息,data成功内容

// 异步读取文件目录
fs.readdir("./",(err,ok)=>{
    if(err){
        console.log("错误:"+err)
    }
    console.log(ok)
})
语法:fs.mkdir(path,[mode],[callback(err)])注意不能创建一个已存在的文件夹

path(必选),表示创建的目录。
mode(可选),表示创建模式。
callback 是回调函数,。err错误信息

//创建目录
fs.mkdir("./aaa",(err)=>{
    if(err){
        console.log(err)
    }
    console.log("ok")
})
语法:fs.rename(oldname,newname,callback(err))

oldname(必选),修改的文件路径。
newname(必选)新名字。
callback 是回调函数,err错误信息

// 修改名字
fs.rename("./aaa","./bbb",(err)=>{
        if(err){
            console.log(err)
        }
        console.log("ok")
    })
    
Node删除目录 rmdir() 注意只能删除空文件夹
// 删除文件 (智能删除空文件)
fs.rmdir("./bbb",(err)=>{
        if(err){
            console.log(err)
        }
        console.log("ok")
    })
filename 文件名

data 要往文件里写的内容,可以是字符串
options可选参数 encoding 编码,默认是utf8。flag写文件的模式
callback 回调方法

fs.writeFile(filename, data, [options], callback)
 //异步写入
 fs.writeFile("./t2.txt","德玛西亚", (err) => {
     if (err) {
        console.log(err)
   }
    console.log("ok")
 })
语法:fs.readFile(“filename“,“encoding”,[callback(err,data)])

filename(必选),表示要读取的文件名。
encoding(可选),表示文件的字符编码。
callback 是回调函数,用于接收文件的内容。err错误信息,data请求内容

//异步读取
// fs.readFile("./t2.txt","utf-8", (err,data) => {
//     if (err) {
//         console.log(err)
//     }
//     console.log(data)
// })
异步删除
//异步删除
fs.unlink("./t2.txt", (err) => {
    if (err) {
        console.log(err)
    }
    console.log("删除成功")
})

解决回调地狱:promise asys/awiat 蓝鸟插件…

promise对象简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作) Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
// Promise
let pro = new Promise((resolve, reject) => {
    fs.mkdir("./ccc", (err) => {
        if (err) {
            reject("错误" + err)
        }
        reject("ok")
    })

})
pro.then((ok) => {
    console.log(ok)
}).catch((err) => {
    console.log(err);

})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值