Node.js 模块以及npm包的管理和使用

Posted 开到荼蘼223's

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js 模块以及npm包的管理和使用相关的知识,希望对你有一定的参考价值。

Node.js模块系统

Node.js的模块系统是将可重用代码封装在各种模块中,减少了应用程序的代码量,模块系统提高了开发效率和代码的可读性,并且模块打包代码的方式不会改变全局作用域,开发人员可以在被载入的模块文件中选择要对外暴露的方法和变量,并且模块可以发布到npm仓库中与他人共享。

Node.js主要用于服务器端编程,无须考虑非同步加载的方式,选择CommonJS规范,按照CommonJS规范要求,模块必须通过module.exports对象导出对外暴露的变量或接口,通过require()方法将其他模块的输出加载到当前模块作用域中。

在Node.js模块系统中,独立的模块有自己的作用域,其变量、方法等都是对其他文件不可见的。

典型的模块可以是一个包含exports对象属性定义的文件,可将exports看作是module.exports的简单引用形式。通过在exports对象上指定额外的属性,可以将方法和对象等添加到模块的根部。例如,创建一个名为hello.js的文件,添加代码来定义模块。

用module.export和exports导出模块的区别是

  • 使用 exports 导出的方法返回的是模块函数,可以直接调用
  • module.exports 导出的方法返回的是一个类,需要new实例化为对象之后才可以调用

模块的工作机制

Node.js核心模块

os模块

os模块 包含了操作系统的详细信息

const os = require('os');// 导入os模块
console.log('操作系统类型:' + os.type());
console.log('操作系统平台: ' + os.platform());
console.log('系统内存总量:' + os.totalmem() + " 字节");
console.log('空闲内存量:' + os.freemem() + " 字节");
console.log('CPU信息:');
console.log( os.cpus());
操作系统类型:Windows_NT
操作系统平台: win32
系统内存总量:16505966592 字节
空闲内存量:9022722048 字节
CPU信息:
[  model: 'AMD Ryzen 7 4800H with Radeon Graphics         ',
    speed: 2895,
    times:
      user: 139234, nice: 0, sys: 222921, idle: 3787859, irq: 85359  ,

util模块

util模块 提供的大部分实用工具可用于应用程序与模块开发

const util = require('util');
console.log(util.inspect(util,  showHidden: true, depth: null ));
util.format('%s:%s', '蓝天白云'); // 返回: 蓝天白云:%s
util.format('%s:%s', '环境优美', '绿水青山', '蓝天白云'); // 返回:环境优美:绿水青山 蓝天白云
util.format(1, 2, 3); // 返回:'1 2 3'

path模块

path模块用于处理解决文件与目录的路径

path相关属性

path.delimiter:提供平台特定的路径分隔符,Windows上是“;”,POSIX上是“:”。
path.sep:提供平台特定的路径分段分隔符。Windows上是“\\”,POSIX上是“/”。

path相关方法

path.normalize(path):对路径进行规范化,并解析“..”和“.” 。
path.dirname(path):返回路径的目录名,类似于UNIX中的dirname命令。
path.basename(path[, ext]):返回路径中的最后一部分,可选的ext参数表示文件扩展名。
path.extname(path):返回路径中文件的后缀名,即路径中最后一个“.”之后的部分。
path.parse(path):返回完整路径的一个对象。
path.format(pathObject):从一个对象表示的路径返回一个字符串表示的路径。
path.resolve([...paths]):将一个路径或路径片段的序列解析为一个绝对路径。
path.relative(from, to):返回从参数from到to的相对路径(基于当前工作目录)。
path.join([...paths]):使用平台特定的分隔符将路径片段序列连接到一起,并规范生成的路径。
path.isAbsolute(path):判定路径是否为一个绝对路径。

url模块

url模块 提供了一些实用方法,用于URL处理与解析

url模块的两套API
1.Node.js特有的API(传统的URL API)主要用于兼容已有应用程序。

const url = require('url');
const myURL = url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash')


url地址中的符号:

  • ?:是请求地址与请求参数之间的分隔符
  • &:参数之间的分隔符

2.新的应用程序应使用WHATWG API

const  URL  = require('url');
const myURL = new URL('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');


相关属性和方法

querystring模块

querystring模块 主要对URL字符串进行处理和解析

parse方法 将URL查询字符串解析成键值对集合

const URL,URlSearchParams = require('url')
const queryString = require('querystring')
const myUrl = new URL('http://localhost:8080/index.html?username=张三&&password=123456')
const str = queryString.parse(myUrl.search.substring(1,myUrl.search.length-1))//parse把字符串转换成键值对
console.log(str)

stringify方法 将对象(键值对)转换成URL的查询字符串 实际就是parse方法的逆操作

const queryString = require('querystring')
var obj = 
    foo:'bar',
    abc:['xyz','123']

var str = queryString.stringify(obj) // stringify把键值对转换成字符串
console.log(str)

npm包管理器

npm(Node Package Manager)包管理器,npm是整个Node.js社区最流行、支持第三方模块最多的包管理器,npm用来安装、共享和发布代码以及管理项目中的依赖,可以进入npm官网了解更多

npm常用命令

安装本地包 npm install 包名
确定npm安装包的版本 npm install 包名@版本号
升级npm npm install npm -g
-g是安装参数 表示全局安装

查看安装信息
npm list 查看当前目录下已安装的包
npm list -g 查看全局安装

清空npm的本地缓存 npm cache clean

包的更新

npm update 包名 升级当前目录下指定的包
npm update -g 包名 升级全局的包

包的卸载
npm uninstall 包名 卸载dependencies节点下的包 (生产环境)
npm uninstall 包名 --save-dev 卸载devDependencies节点下的包
(开发与测试环境)
npm uninstall -g 包名 卸载全局的包

package.json文件的功能

  • 列出当前项目所依赖的包。
  • 通过语义化版本控制规则指定当前项目所使用的包的版本。
  • 实现可重用的构建,更易于与其他开发人员分享包。

以上是关于Node.js 模块以及npm包的管理和使用的主要内容,如果未能解决你的问题,请参考以下文章

npm包的发布和管理

Node.js 模块加载及包的管理

npm与包 丨Node.js模块化

[Web 前端] 使用yarn代替npm作为node.js的模块管理器

Node.js中的模块化,npm包管理器

npm开发指南从npm包的开发,发布到引用