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包的管理和使用相关推荐
- 怎么样写一个 node.js模块以及NPM Package
你来到了写一个mode.js模块的舞台中央,不管你是因为自己需要写一个你自己的nodejs模块,还是你仅仅是处于好奇.无论是什么原因,在这个教程里,我将给你演示怎样创建一个nodejs模块. node ...
- 了解node.js模块化和npm包
模块化-理解模块化 根目录 ├── index.html # 主页的页面 ├── index.js # 主页需要用到的js代码 │ └── getData() # 是index.js中定义的函数 └─ ...
- [Node.js] mySQL数据库 -- NPM包
CommonJS 1.导入模块用require 类比于script src= 2.暴露出去(导出) exports (function(window){ let jQuery-{}; window. ...
- node mocha_如何使用Mocha和Assert测试Node.js模块
node mocha The author selected the Open Internet/Free Speech Fund to receive a donation as part of t ...
- Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM
本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...
- node.js模块和包
概念:模块(Module)和包(Package)是Node.js最重要的支柱.开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分.分装.然后组合起来.模块正式为了实现这种方式而诞生, ...
- 编写原生的Node.js模块
通常,我们开发原生Node.js模块包括但不仅限于以下原因: 对性能有比较苛刻要求的应用.尽管Node.js得益于libuv,在异步I/O操作很有优势,但遇到数字计算时并不是一个很好的选择. 使用更加 ...
- node 大写_大写Node.js模块
node 大写 Today, let's see a third party module that helps us in working with upper-case letters witho ...
- Node.js 模块之Nimble流程控制
NodeJS异步的特性有时候会导致程序非常的难看,回调一层套着一层,这个时候就要用流程控制模块来控制究竟是同步还是异步了. Nimble是一个轻量.可移植的函数式流程控制模块.经过最小化和压缩后只有8 ...
最新文章
- 巧用CSS的Wave滤镜
- linux0.11内核编译,编译Linux-0.11内核
- 实战SSM_O2O商铺_16【商铺注册】前后端联调验证整体模块功能
- 据说是Jack Wu的自定义函数!烂
- doorway path issue of my task in HCP
- substring not found什么意思_英文写作中,除了not,你还会其他否定表达吗?
- 《MySQL——查询长时间不返回的三种原因与查询慢的原因》
- 63 javabean的作用域范围
- vuerouter传参方式_VUE Router学习原理(一)
- JSP指示元素%@ % 与指示类型
- java.lang.classcastexception怎么解决_java.lang.LinkageError:ClassCastException
- 蓝桥杯 BEGIN-2 入门训练 序列求和
- v-for列表渲染之数组变动检测
- 【实用sci论文常用词语】
- 蓝桥杯web:2.【Bug 调试】修复注册验证问题
- 语言-汉语-官话-中原官话-兖菏片:兖菏片
- 信号完整性和电源完整性基本介绍
- 小鸡小猪大历险java_小鸡和小猪
- html操作sqlite,JavaScript操作sqlite
- 自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别