node(02)-核心moudle

node并不是js全集,比如bom,dom…就不是node具备的,而node其实是:ecmascript+moudle的合集
在这里插入图片描述
观察上图,会发现其实node所谓的异步,其实事件环也是通过WorkerThreads多线程来实现

node.js中的队列

在这里插入图片描述
nodejs队列与浏览器不同的是浏览器的队列有两种宏任务和微任务,而nodejs,有计时器队列,网络处理队列,node核心工作模块队列,IO队列,检查队列 关闭回调队列
主栈代码执行完成,会先执行计时器队列中的任务,然后逐层清空任务队列,当代码执行完I/O轮询的时候就会去检查一次计时器队列是否有到时间,如果有,则执行清空队列,如果有且发现存在setImmediate则会走下一个队列check,清空setImmediate。如果没有则卡住在轮询这里直到定时器队列重新添加任务,计时器丢列这样的环式过程就是Node事件环

注意,如果poll队列下面的check队列执行了,就一定会执行setImmediate()

moudle

1、解决协同开发问题
2、避免全局变量,防止重名
3、模块化都是靠闭包实现的
4、一个模块就是一个文件
5、引用别人的模块require
6、导出模块给别人用moudle.exports
7、事实上node引用模块靠的是文件读取-将文件内容读取成为一个字符串通过node内置模块(沙箱模式),将读出的字符串执行
在这里插入图片描述

常用内置模块:

  • 1、fs
    fs.accessAync:判断文件是否可以访问的到
  • 3、path path.resolve(__dirname,"./index.js")
    resolve: __dirname代表当文件夹 path.resolve(__dirname,"./index.js")
    join: path.join(__dirname,"./index.js") //resolve和join用法基本一致
    :如果 path.resolve(d,"./") //如果使用resolve但是文件路径写了/那么获取路径就是根目录
    path.join(__dirname,"/") //使用join方法就能拼接/
    extname:path.extname(“index.js”) //获取文件后缀名
    basename:path.basename(“index.min.js”,".js") //第一个参数是文件,第二参数:除此之外都满足条件

…待补充…

发布了29 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38560742/article/details/88742493