nodejs基础2

一、异步操作
1、 Node 采用 Chrome V8 引擎处理 JavaScript 脚本,V8 最大特点就是单线程运行,一次只能运行一个任务。

二、事件驱动和非阻塞机制
补充:定义可变局部变量时,用'let',尽量不用'var',对于不变的量用'const'
1、Node中存在一个 事件队列,在执行过程中,主线程会执行一遍,将所有函数调用按顺序添加到事件队列中;等到主线程执行一遍后,再去真正执行事件队列中的函数。每执行完一个事件队列中的函数,调用其对应的回调函数,该函数就算真正执行结束了。
2、Node平台将一个任务连同该任务的回调函数放到一个事件循环系统中;
事件循环高效地管理系统线程池同时高效执行每一个任务;
当任务执行完成过后自动执行会导函数。
3、非阻塞优势
充分利用单核CPU的优势
改善I/O的不可预测带来的问题


三、node开发服务器的阻塞情况

四、模块化代码结构
补充: eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
1、Node的模块化代码结构是按照CommonJs规范
2、模块分类
1)文件模块:我们自己写的总能模块文件
2)核心模块:Node平台自带的一套基本的功能模块,也称为Node平台的API
3)第三方模块:社区或第三方个人开发好的功能模块,可直接拿过来用
3、模块化开发流程
创建模块 new xxx.js
导出模块 module.exports = {}
载入模块 var calc = require('./xxx')
使用模块 calc.add(1,2)
4、示例:模块化读取文件
5、模块私有空间
6、模块内全局环境(伪)
module:模块对象
exports:映射到modile.exports的别名
require():require.cache;require.extensions;
7、模块的定义
1)一个文件就是一个模块
2)应该有导出成员
3)模块内不是一个独立的作用于
4)模块之间必须通过导入导出进行协同
8、require
1)自己实现require

2)require加载文件的规则----扩展名
require加载文件是可以省略扩展名
默认按照下面的扩展名去加载文件:js > json > node
3)模块的缓存
第一次加载某个模块时,node会缓存该模块,以后再加载该模块,就直接从缓存中取出该模块的module.exports属性(不会再执行该模块)
如果需要多次执行模块中的代码,一般可以让模块暴露行为
模块的缓存可以通过require.cache拿到,同样也可以删除
清空缓存

9、自己实现的require的缓存


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值