Node(一)

一、Node的模块化管理

1、模块化:node应用程序由模块组成。遵循的是CommonJS模块规范。

      使用模块管理的好处:隔离模块的作用域,避免出现命名冲突。

2、CommonJS的含义:是一套代码的规范,构建一个在浏览器之外的js语言的生态系统。

3、CommonJS规范的主要内容

(1)module.exports导出对外的变量或接口。

(2)通过require将其他模块导入到当前模块的作用域中。

4、CommonJS特点:(重点记忆-----同es6模块化管理特点)

(1)所有模块都运行在当前模块的作用域中,不会污染全局作用域。

(2)模块是同步加载的,根据文件中模块出现的顺序依次加载。(同步加载的含义:前一次加载没有完成,后一次加载不会执行)

(3)模块可以多次加载,但只有在第一次加载时运行,其他的加载会放入缓存中。后面再使用时会直接从缓存中读取。

二、NodeModule对象

1、在node内部定义了一个module构造函数,构造函数的属性有:

a、id:表示模块的标识符,通常是带有绝对路径的模块文件名。

b、parent:调用该模块的模块。

c、exports:表示模块导出的值。

d、paths:表示模块(找通过npm安装的模块)的查找路径。查找顺序:当前目录的node_modules --> 父目录的node_modules -->  ...  --> 根目录下的node_modules

e、path:当前模块所在的路径。

f、filename:当前模块所在的文件名称。

强调:在CommonJS规范中,所有的模块都是Module的一个实例(对象)

2、exports变量:

(1)指向:module.exports

(2)作用:方便用户的操作

注意:不能直接给exports赋一个值,这样就切断了exports与module.exports之间的联系(赋值结构会报错)

三、require命令:是node的内置命令,主要用于加载模块文件

1、作用:导入并运行js文件,返回的是exports对象

2、加载规则:

(1)加载文件的默认后缀名是:.js

(2)如果参数字符串以/开头,表示加载的文件是位于绝对路径下的文件

(3)如果参数字符串以./开头,表示加载的文件是位于相对路径下的文件

(4)如果参数字符串不以./或/开头,则表示加载的是一个默认提供的核心模块(位于Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块(全局安装或局部安装)。

四、Buffer对象:(缓冲区对象)上传下载要用

1、作用:javascript处理二进制数据的能力很弱,所以Buffer是Node提供的处理二进制数据的对象,是node的内置对象(原生对象),在使用时不需要安装可以直接使用。不需要require导入(require("buffer"))

2、使用原因:js处理字符串的功能非常强大但在二进制数据处理方面能力很弱。因此node就内置了Buffer对象专门处理二进制数据。Buffer对象本身是一个构造函数。(new Buffer)可以使用new创建Buffer的对象,浏览器的V8引擎会为Buffer的对象分配内存空间,这个空间类似于数组。

注意:buf的每个单元存放的数据必须是0~255之间的整数值,即buffer的每个单元就是一个字节。

位:Bit,字节:Byte,1024Byte = 1KB ,1024KB = 1MB,1024MB =1GB,1024GB = 1TB

3、Buffer对象可以和字符串进行互换

五、Buffer构造函数

1、给构造函数传递整数:表示分配多少个字节的存储空间

2、给构造函数传递数组:数组的成员必须是整数值

3、给构造函数传递一个字符串:默认的格式是utf8

六、Buffer常用函数

可以用类名(Buffer)直接访问的方法,就是静态成员

1、Buffer.isEncoding(字符集):参数字符集就是字符的编码格式(ASCII、utf8、base64、utf16)。作用是判断Buffer的字符集是否是给定的字符集,如果是函数返回true,如果不是函数返回false。

2、Buffer.isBuffer(buffer):参数是一个Buffe的对象,作用:判断参数是否是一个Buffer的实例。

3、Buffer.byteLength(buffer):返回字符串实际占有的字节长度。

七、实例的属性

1、length:表示Buffer对象的长度(单元个数)。

八、实例方法:

1、类的成员:

(1)实例成员:对象中的属性,方法

(2)类成员(静态成员):通过类名直接访问,不属于某个具体的对象,而是类的所有对象用来共享的成员。

2、Buffer的实例方法:

(1)write(value,index):向Buffer对象中写入数据,value表示写入的值,index表示写入的位置,index可以省略,写入的其实位置从0开始。

使用Buffer时要注意的问题:在创建Buffer时,node建议使用以下两个方法,而不建议使用new。(new Buffer创建时会出现新版本淘汰问题,所以一般创建时使用以下两种。)

(1)Buffer.alloc(number,fill,encoding):创建给定单元的缓冲区,返回一个buffer对象

参数number:必须是整数,代表buffer的单元个数,

参数fill:表示填充数据。默认值为0.

参数encoding:若填充数据是字符串,用来指定字符集(编码格式),默认值是utf8。

(2)Buffer.from(args1,args2):创建一个缓冲区,缓冲区中的数据由参数给定,返回Buffer对象

参数args1:可以使字符串,也可以是数组。

参数args2:若第一个参数是字符串,则用来指定字符集,若第一个参数是数组,这个参数可以省略。

九、Node的文件操作:对文件的I/O操作使用的是fs(FileSystem)模块

I/O操作:就是输入/输出操作(I表示input,O表示output)

1、使用方法:使用require导入

2、读文件

(1)异步读文件 ---- 非阻塞方式的读

readFile(filename,callback)

参数filename:表示文件全名

参数callack:是一个回调函数。读文件结束之后执行该函数。

异步结果:

(2)同步读文件  ----  阻塞方式的读

readFileSync(filename,encoding),返回值就是读取的文件内容。

参数filename:表示文件全名。

参数encoding:表示字符集。

同步读:按照代码顺序走。

3、打开文件

open(path,flags[,mode],callback),回调函数中有两个参数:err,fd。

参数path:表示要打开的文件路径

参数flags:表示打开文件的方式

r:以只读的方式打开文件,若文件不存在则报错。

r+:打开的文件可以进行读写操作,若文件不存在则报错。

w:以写入的方式打开文件,若打开的文件不存在则自动创建一个该文件。

fd:是一个指针

w+:以写入的方式打开文件可以进行读写操作,若打开的文件不存在则自动创建一个该文件。

a:打开文件进行追加,(在文件原有内容的末尾追加新内容)。若打开的文件不存在则自动创建一个该文件。

4、区分文件和目录(文件夹)的方法

stat(path,callback)

参数path:表示路径名

参数callback:表示回调函数,有两个参数err(表示打开文件错误时的信息)stats(表示当前文件的状态),

5、写文件(向文件中写入内容)

(1)异步写入:若文件存在则覆盖

writeFile(filename,data[,options],callback)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值