1.node.js的顶层是global,javascript的顶层是window
2.模块加载机制
路径:可以为相对路径,也可以为绝对路径
require(./2.js');//相对路径
注意:require(2.js');//写成这样会加载node中的核心模块,或者是node_modules
加载时:先按照加载的模块的文件名进行加载,
如果没有找到,则会在模块在文件名称后加上.js的后缀,进行查找,
如果还没找到,则会在文件的名称加上.json的后缀
如果还没找到,则会在文件的名称加上.node的后缀
文件名称->.js->.json->.node->抛出错误
3.当我们用var 申明的一个变量不是全局的,而是属于当前模块下的。每个模块都有一个自己的作用域,外部不能够直接访问,如果要访问,可以通过以下方式
1>把变量作为global对象的一个属性,但是这样做法是不推荐的。
2>使用模块对象,module:保存提供和当前模块有关的一些信息 。它里面有一个子对象exports对象,通过这个对象把一个模块中局部变量对象进行访问。
例:在2.js中定义变量a
var s=10;
module.exports.a=a;//与exports.a=a;效果一样
在外部访问:require('./2.js');//这个方法的返回值,其实就是被加载模块中的module.exports
注意:如果module.exports=[1,2,3];//module.exports与exports的指向关系已经断开了
4.global
_filename:返回当前模块文件的解析后的绝对路径,该属性其实并非全局的,而是模块作用域下的。
_birname:返回当前模块文件所在目录的解析后的文件夹绝对路径,该属性其实并非全局的,而是模块作用域下的。
5.buffer类:用于操作二进制数据流。
想要求出字节长度可以用Buffer对象,要求字符个数直接用length.