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包的管理和使用的主要内容,如果未能解决你的问题,请参考以下文章