node笔记

5 篇文章 0 订阅
3 篇文章 0 订阅

(https://coding.imooc.com/lesson/146.html#mid=7461)

1.module

  • 加载module的时候,里面的语句就会被执行,无论当前module是否调用,且只会加载一次,加载完成一次后就会直接从内存的缓存中读取
  • 一旦某个模块被循环加载,就只会输出到当前被加载模块的已被执行部分,未执行的部分不会输出 ********3/3

2.require

  • 当require一个本地的文件时(即本地路径引入时),若不加后缀名,则会默认按照以下次序找寻相应的文件,js=>json=>node
  • 当require一个第三方的插件库时(直接require模块,不写路径时),直接找当前目录文件下的node_modules文件夹,如果当前级别文件夹下没有,就逐层往上找,直到找寻到node的根路径下
    (这也是为什么现在的 node在安装相关依赖node_modules时,会将各级依赖的包平铺,放在一层,而不是以递归这种更直观的形式放置各级依赖包的原因。这样减少require找寻依赖时的层层查找,提升了速度,也减少了重复依赖包的引用。*******3/4)

3.exports

module.exports与exports的区别:
exports相当于是module.exports的一个缩写,使我们平时输出对象时更加快捷,但是记住 module.exports才是正牌输出;
对于缩写形式的exports是不能改变其原有指向的,故只能在上面添加一些想要输出的属性变量,而不能直接赋值定向整个exports,但是module.exports却是可以的。

exports.test = '8'   //可以访问到

exports={
aa:'1',
bb:function(){},
test:'8'
}      //是不可以访问到的,因为重定向了整个exports,此时exports不再代表一个可以访问的输出对象,而是一个内部普通的变量名

module.exports={
aa:'1',
bb:function(){},
test:'8'
}     //依旧可以访问到

4.process

  • process.argv(一个数组)
    默认有两项值,第一个值是启动node命令的根目录,即node安装路径,第二个值是执行当前node命令的文件夹的绝对路径。若在执行node文件命令行的后面增加参数,则会依次作为argv的其他项加入,如下:
    argv的内部值打印结果
  • process.execPath
    大部分情况下,就是启动node命令的根目录路径的意思,即argv的第一个参数
  • process.cwd() (为一个方法)
    即当前node启动文件的绝对路径,即argv的第二个参数
  • process.nextTick()
    代表一个异步的执行方法
// process.nextTick()与setImmediate()的区别:
setImmediate(function(){
console.log('setImmediate')
})   //放在下一个任务队列的队首

setTimeout(function(){
console.log('setTimeout')
},0)  //前后两个任务队列的切换之间

process.nextTick(function(){
console.log('process.nextTick')
}) //放在当前任务队列的队尾

//实际的执行顺序,依次由下往上:'process.nextTick','setTimeout','setImmediate'

实际应用中,其实区别不大,推荐用setImmediate(),因为是node后面新增的api,而且防止在使用process.nextTick()时,内部循环调用nextTick(),造成后面的队列操作堵塞

5.global

相当于dom文档中的window对象,global包含以下几个常用的全局对象:console,process,buffer,timer

6.path

  • normalize,帮我们检查路径格式,处理路径为标准路径
    normalize(’/usr//local/bin’) 输出:/user/local/bin
  • join,拼接路径,帮我们拼接的同时,也会调用normalize,处理好路径的格式
    join(’/usr’,’…/local’,‘bin/’) 输出:/local/bin/
  • resolve,把相对路径解析为绝对路径
    resolve(’./’) 输出:/usr/local/bin/node/demo
  • basename,dirname,extname分别对应获取当前文件的名称,当前文件所在的文件夹路径,当前文件的扩展名在这里插入图片描述
    输出结果:

在这里插入图片描述

  • parse,format,这是可以相互转化的两个属性。parse可以把文件路径地址解析为上面三个属性的输出结果的文件信息对象,而format则是把解析出来的文件信息对象转化回去,成为一个基本的文件路径。
    在这里插入图片描述
    输出结果为:
    在这里插入图片描述

注意:以下为三种路径的用法对比:
1、 __dirname相当于__filename的path.dirname();
/########## 这里相当于是返回被执行文件在磁盘中的绝对路径
2、process.cwd()
/########## 这里相当于是返回执行node命令所在的文件夹的绝对路径,执行当前node进程所在文件夹的位置
3、path.resolve(’./’)
/########## 注意: ’./’的意思:此时的 ‘./’ 是同process.cwd()一样的,返回执行node命令所在的文件夹的绝对路径。但是当在require(’./’)中使用 ‘./’ 时,此时返回的是相对于当前被执行文件的文件夹路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值