NodeJS中的模块和包
- Node使用模块的原因
- Node中模块的使用(CommonJS标准)
- 核心模块
- npm包管理器
- Node的文件系统
-
- fs模块
Node使用模块的原因
- 可以提高代码的利用率,可读性,减少程序的代码量
- 可以实现代码的共享
- 根据实际开发的需求对外暴露模块的属性和方法
Node中模块的使用(CommonJS标准)
- 使用moduel.exports导出模块:让模块对外暴露
- 使用者可以通过require(模块名)将模块导入到当前的程序中使用
- 使用exports导出模块中的部分的属性
exports.sayHello=function(name){
console.log('你好'+name);
console.log('今天是'+show_day[day-1]);
}
核心模块
-
模块:包括了操作系统的详细信息os
-
模块:实用工具模块,提供的功能帮助用户简化开发util
-
模块:用于解决多平台目录路径问题path
- 属性:
path.delimiter
path.sep
- 方法:
- 属性:
-
模块:url
- 先导入url模块,然后通过parse方法实现对地址的解析:
const url = require('url'); const myUrl = url.parse('http://localhost:8080/index.html?username=张三&password=123456'); //url地址中的符号:?:是请求地址和请求参数之间的分隔符
- 先导入url模块中的URL类,将地址字符串作为参数传递给URL类的构造函数对地址进行解析
const{URL}=require('url'); constmyurl=newURL('http://localhost:8080/index.html?username=张三&password=123456');
-
解析url地址中查询字符串:URLSearchParams类的使用
先导入:
const{URL,URLSearchParams}=require('url');
调用方法:get方法获取值
URL类的属性之一是:
searchParams
是searchParams
类的对象,在该类中定义方法get(),用来获取查询字符串中的参数URLSearchParams
-
模块:对URL查询字符串进行处理和解析querystring
-
方法:将URL查询字符串解析成键值对集合parse
-
方法:将对象(键值对)转换成URL的查询字符串,实际上就是parse方法的逆操作stringify
-
npm包管理器
npm(Node Package Manager)包管理器
升级npm:
npm install npm -g
:-g是安装参数,表示全局安装
安装包:
- 安装本地包:
确定安装包版本(安装指定版本的包):npm install 包名
安装全局的包:npm install 包名@版本号
npm install -g 包名
查看安装信息:
npm list
-->查看当前目录下安装的包
查看全局安装的包:
npm list -g 包名
package.json文件的功能:
- 列出当前项目所依赖的包
- 指定当前项目所使用的包的版本
-
实现可重用的构建,更易于其他开发人员共享包
创建默认的package.json
npm init --yes
包的使用环境
安装在开发与测试环境下使用的包(会在package.json文件中加入"devDependencies"节点)
npm install 包名 --save-dev
安装在生产环境中使用的包(会在package.json文件中加入"dependencies"节点)
npm install 包名
包的更新(升级)
npm update 包名
-->升级当前目录下指定的包
npm update -g 包名
-->升级全局的包
包的卸载
npm unistall 包名
-->卸载"dependencies"节点下的包(生产环境)
npm unistall 包名
--save-dev -->卸载"devDependencies"节点下的包(开发与测试环境)
npm unistall -g 包名
-->卸载全局的包
清空npm的本地缓存
npm cache clean
发布自己的包
在npm服务器上注册用户,使用npm publish发布。
安装淘宝的npm镜像服务器
npm install -g cnpm --registry=https://registry.npm.taobao.org
在安装包时,使用cnpm代替npm
Node的文件系统
fs模块
fs模块:提供了文件操作的API
fs模块共有5个类:
- fs.Dirent类:(指示文件的类型)
- fs.FSWatcher类:(监视文件)
- fs.ReadStream类:读取流(文件输入流)
- fs.WriteStream类:写入流(文件输出流)
- fs.Stats类:文件的信息(文件的状态)
fs模块中方法的分类:
- 同步方法:方法名带有Sync后缀
- 异步方法:方法名不带Sync后缀,最后一个参数是回调函数
fs模块的常量(FS常量)
Node中文件路径的表示方式:
- 字符串方式:
- windows下路径分隔符为: \
- Linux下路径分隔符为:/
- Buffer方式:Buffer.from(字符串) --> 主要用于linux系统
- URL方式:在Node7.6.0以上版本使用,支持file协议。在不同的操作系统下,解析出来的路径会有区别。
文件模式(文件访问权限):
- a:以追加的方式打开文件,若文件不能再则创建
- a+:以读取追加的方式打开文件,若文件不能再则创建
- r:以只读的方式打开文件,若文件不存在则抛出异常
- r+:以读取和写入的方式打开文件,若文件不存在则抛出异常
- w:以写入的方式打开文件,若文件不存在则创建
- w+:以读取和写入的方式打开文件,若文件不存在则创建
文件与目录的基本操作
- 文件的打开
- 同步打开:
fs.openSync;
- 异步打开:
- 同步打开:
- 获取文件的信息fs.Stats
-
:判断是否为目录stats.isDirector([path])
-
:判断是否是文件stats.isDirector([path])
-
- 用异步的方式读取文件中指定的数据
- 创建目录:
fs.mkdir(path,callback)
- 删除目录:
fs.rmdir(path,callback)
- 删除文件:
fs.unlink(path,callback)