node基础

node基础

  • node是单线程的
  • 基本使用:
    •  模块引用 require('./math'),返回值是一个对象
    • 一般调用时候var math=require('./math'),math为一个对象。
    • 但是定义的模块中的变量只作用在所在模块的作用域中,其他的作用域拿不到
    • 所以引用了exports方法将外部需要引用的函数或者变量暴露出来。
    • 例如: exports.add=function (x,y) {return x+y;}
    • 调用时候直接math.add(2,3)即可
  • 注意:模块引用的路径必须以./或者../开头

global

  • node中没有window全局变量,但是有一个相当于window的全局变量global
  • 在全局中创建的属性和方法和变量都是在global中保存
  • 如何验证global对象的存在?
    • console.log(arguments.callee); //[Function]
    • console.log(arguments.callee+''); //将global全局转化为字符串显示,相当于调用了toString方法

模块分类

  • 系统模块 node引擎自己提供的模块,引用时直接var fs=require('fs');不用写路径
  • 文件模块 自己定义的,就像上面例子中的math模块的引用

node执行模块代码的五个参数

  • exports:将该模块中的函数或者变量暴露出去,外部可以引用
  • require:引用模块
  • module:代表当前模块本身,exports是module的一个属性,调用时候可以exports.或者module.exports
  • __dirname:当前模块所在的完整绝对路径的文件夹
  • __filename:当前模块文件的完整绝对路径

注意:exports和module.exports区别?

1、exports暴露本质是一个对象,module.exports暴露的是一个属性

2、此时如果再次声明module.exports = {},会将之前的覆盖

注意:暴露的本质是module.exports对象,exports只能通过点取的方式暴露,相当于往exports对象中添加新的属性,如果是=的方式,会打破原来对象地址的引用,指向新的对象。这个新的对象是不能被暴露出去的。

module.exports = {   //此时如果再次声明module.exports = {},会将之前的覆盖
  foo() {
    console.log('moudle1 foo()')
  }
}

3、exports.xxx相当于给变量添加新的属性,可以重复进行暴露

exports.foo = function () {
  console.log('module3 foo()')
}

exports.bar = function () {
  console.log('module3 bar()')
}

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值