目录
1. 在node内部定义了一个Module构造函数,构造函数的属性:
2、exports变量:该变量指向module.exports(返回为对象),
强调:不能直接给exports赋一个值,这样就切断了exports与module.exports之间的连续。不能进行导出了
三、require命令:是node的内置命令,主要用于加载模块文件
1、作用:导入并运行JavaScript文件,返回的是exports对象
强调:使用Buffer时注意的问题:在创建Buffer对象时,node建议使用以下两个方法,而不建议使用new
八、实例成员与类成员的含义
一、Node的模块化管理
1、模块化:node应用程序由模块组成。遵循的是CommonJS模块规范。使用模块管理的好
处是隔离模块的作用域,避免出现命名冲突。
2、什么是CommonJS:是一套代码的规范,构建一个在浏览器之外的JavaScript语言的生态
系统。
3、CommonJS规范的主要内容
(1)通过module.exports导出对外的变量或接口
(2)通过require将其他模块导入到当前模块的作用域中
4、CommonJS的特点:
(1)所有模块都运行在当前模块的作用域中,不会污染全局作用域
(2)模块是同步加载,根据文件中模块出现的顺序依次加载
(3)模块可以多次加载,但只有在第一次加载时运行,其他的加载会放入缓存中,后面再使
用时直接从缓存中读取
二、Node的Module对象
1. 在node内部定义了一个Module构造函数,构造函数的属性:
(1)id:表示模块的标识符
(2)parent:表示调用模块的模块
(3)exports:表示导出的值
(4)paths:表示模块(第三方模块)的查找路径。
当前目录的node_modules —>父目录的node_modules—->…..—>根目录下的node_modules
(5)path:当前模块所在的路径
(6)filename:当前模块所在的文件名
强调:在CommonJS规范中所有的模块都是Module的实例(对象)
2、exports变量:该变量指向module.exports(返回为对象),
作用是方便用户的操作
exports.arae = function(r){//返回为Module的对象属性
return (Math.PI * r **2).toFixed(2);
};
console.log(exports);// { arae: [Function (anonymous)] }
强调:不能直接给exports赋一个值,这样就切断了exports与module.exports之间的连续。不能进行导出了
三、require命令:是node的内置命令,主要用于加载模块文件
1、作用:导入并运行JavaScript文件,返回的是exports对象
2、加载规则:
(1)加载文件的默认后缀名是:.js
(2)如果参数字符串以’/‘开头,表示加载的文件是位于绝对路径下的文件
(3)如果参数字符串以’./‘开头,表示加载的文件是位于相对路径下的文件
(4)如果参数字符串不以“./“或”/“开头,则表示加载的是一个默认提供的核心模块(位于
Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块(全
局安装或局部安装)。
四、Buffer对象
1、作用:是Node提供的处理二进制数据的对象。是node的内置对象,在使用时不需要
安装可以直接使用,不需要require('buffer')加载;
2、使用的原因:JavaScript处理字符串的功能非常强大,但在二进制数据处理方面能力
很弱。因此node就内置了Buffer对象专门处理二进制数据。Buffer是构造函数,可以
使用new创建Buffer的对象,浏览器的js引擎会为Buffer的对象分配内存空间,类似于
数组。
let buf = new Buffer(259); //256表示buf有259个单元,类似于数组,下标的范围在0~258之间
console.log(buf);
//强调:buf的每个单元存放的数据必须是0~255之间的整数值。即Buffer的每个单元就是一个字节
3、Buffer对象可以和字符串进行互换
五、Buffer构造函数
(new Buffer() 构造函数已被弃用,有新的语法代替)
1、给构造函数传递整数:表示分配多少个字节的存储空间
let bytes = new Buffer(5);//表示给bytes分配5个字节的储存空间
2、给构造函数传递数组:数组的成员必须是整数值
let bytes = new Buffer([0x10,0x48]); //将数组传递给Buffer构造函数
3、给构造函数传递字符串:默认的编码格式是utf8
let b1 = new Buffer("你好!",'utf8');
console.log(b1.toString());
六、Buffer常用的函数(buffer的类成员)
1、Buffer.isEncoding(字符集):参数’字符集’就是字符的编码格式(ASCII、utf8、
base64)。作用是判断Buffer的字符集是否是给定的字符集,如果是函数返回true,不
是函数返回false
2、Buffer.isBuffer( buffer ):
参数是一个Buffer的对象,判断参数是否是一个Buffer的实例
3、Buffer.byteLength( buffer ):返回字符串实际占有字节长度
七、buffer的实例属性
1、length:表示Buffer对象的长度(单元个数)
2、Buffer的实例方法
(1)write(value,index):向Buffer对象中写入数据
参数value:表示写入的值
参数index:表示写入的位置。可以省略
强调:使用Buffer时注意的问题:在创建Buffer对象时,node建议使用以下两个方法,而不建议使用new
(1)Buffer.alloc(number,fill,encoding),返回一个Buffer对象
参数number:必须是整数,代表buffer的单元个数
参数fill:表示填充数据。默认值为0
参数encoding:若填充数据是字符串,用来指定字符集(编码格式),默认值是utf8
(2)Buffer.from(args1,args2),返回一个Buffer对象
参数args1:可以是字符串,也可以是数组
参数args2:若第一个参数是字符串,则用来指定字符集。
八、实例成员与类成员
1. 实例成员:在实例化的过程中,可以被所有对象共享的属性或者方法
2. 类成员:静态成员。
是通过类名直接访问,不属于某个具体的对象,而为类的所有对象共享的