nodejs核心模块有哪些?

更新日期: 2020-02-15阅读: 2.2k标签: 模块

核心模块是 Node.js的心脏,它由一些精简而高效的库组成,为 Node.js 提供了基本的api。下面本篇文章就来给大家介绍一部分最常用的nodejs核心模块,希望对大家有所帮助。


全局对象

浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性。

在nodejs中能够直接访问到的对象通常都是global的属性,如console、 process等


全局对象与全局变量

global最根本的作用是作为全局变量的宿主。

全局变量的条件:

在最外层定义的变量;全局对象的属性;隐式定义的变量(未定义直接赋值的变量)

定义一个全局变量,同时也是全局对象的属性。

永远使用var定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。


process

process是一个全局变量,即global对象的属性。它用于描述nodejs进程状态的对象,提供一个与操作系统的简单接口。

process.argv是命令行参数数组,第一个元素是node, 第二个是脚本文件名,从第三个开始每个元素是一个运行参数。

console.log(process.argv);

process.stdout是标准输出流。

process.stdin是标准输入流。

process.nextTick(callback)的功能是为事件循环设置一项任务,会在下次事件循环调响应时调用callback

还有process.platform, process.pid, process.execPath, process.memoryUsage()等。posix进程信号响应机制。


console

用于提供控制台标准输出。

  • console.log()

  • console.error()

  • console.trace()


常用工具util

util是一个Node.js核心模块,提供常用函数的集合,用于弥补核心js的功能过于精简的不足。

util.inherits实现对象间原型继承的函数。js面向对象特性是基于原型的。

util.inspect将任意对象转换为字符串的方法。

util.isArray(), util.isRegExp(), util.isDate(), util.isError(), util.format(), util.debug()等


事件机制events--Events模块

events是NodeJs最重要的模块。NodeJs本身架构就是事件式的,而它提供了唯一的接口,所以堪称NodeJs事件编程的基石。


事件发射器

events模块只提供一个对象events.EventEmitter.它核心就是事件发射与事件监控器功能的封装。

EventEmitter常用的API:

  • EventEmitter.on(event, listener)为指定事件注册一个监听器,接受一个字符串event和一个回调函数listener。

  • EventEmitter.emit(event, [arg1], [arg2], [...])发射event事件,传递若干可选参数到事件监听器的参数表。

  • EventEmitter.once(event, listener)为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听

  • EventEmitter.removeListener(event, listener)移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。

  • EventEmitter.removeAllListeners([event])移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器。


error事件

遇到异常的时候,通常会发射error事件。

继承EventEmitter

不会直接使用EventEmitter, 而是在对象中继承它。包括fs, net, http在内,只要是支持事件响应的核心模块都是EventEmitter的子类。


文件系统fs--fs模块

文件操作的封装,提供了文件的读取、写入、更名、删除、遍历目录、链接等posix文件系统操作。有异步和同步两个版本。

fs.readFile(filename, [encoding], [callback(err, data)])是最简单的读取文件的函数。

var fs = require("fs");fs.readFile("server.js", "utf-8", function(err, data){
    if (err){
        console.log(err);
    }else{
        console.log(data);
    }})

fs.readFileSync

fs.readFileSync(filename, [encoding])是fs.readFile同步的版本。它接受的参数和fs.readFile相同,而读取到的文件内容会以函数返回值的形式返回。如果有错误发生,fs将会抛出异常,你需要使用try和catch捕捉并处理异常。

fs.open

fs.read

一般来说,除非必要,否则不要使用以上两种方式读取文件,因为它要求你手动管理缓冲区和文件指针,尤其是在你不知道文件大小的时候,这将会是一件很麻烦的事情。


Http 模块

http 模块主要用于搭建 http 服务,处理用户请求信息等

使用 http 请求

const http = require('http');
// 使用发送http请求
const options = {
  protocol: 'http:',
  hostname: 'www.baidu.com',
  port: '80',
  method: 'GET',
  path: '/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg'
};
let responseData = '';
const request = http.request(options, response => {
  console.log(response.statusCode); // 获取链接请求的状态码
  response.setEncoding('utf8');
  response.on('data', chunk => {
    responseData += chunk;
  });
  response.on('end', () => {
    console.log(responseData);
  });
});
request.on('error', error => {
  console.log(error);
});
request.end();

使用 http 创建服务

// 使用http创建服务器
const port = 3000;
const host = '127.0.0.1';
const server = http.createServer();
server.on('request', (request, response) => {
  response.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  response.end('Hello World\n');
});
server.listen(port, host, () => {
  console.log(`Server running at http://${host}:${port}/`);
});

关于 Node 核心模块还有很多,比如 Buffer、crypto加密、stream的使用、net网络、os操作系统等等。

链接: https://fly63.com/article/detial/8238

ES6模块功能:export和import的加载方式

ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。

Node的https模块_创建HTTPS服务器

Node的https模块:HTTPS服务器使用HTTPS协议,需要证书授权,SSL安全加密后传输,使用443端口

如何让 node 运行 es6 模块文件,及其原理

最新版的 node 支持最新版 ECMAScript 几乎所有特性,但有一个特性却一直到现在都还没有支持,那就是从 ES2015 开始定义的模块化机制。而现在我们很多项目都是用 es6 的模块化规范来写代码的,包括 node 项目

module、export、require、import的使用

module每个文件就是一个模块。文件内定义的变量、函数等等都是在自己的作用域内,都是自身所私有的,对其它文件不可见。在module中有一个属性exports,即:module.exports。它是该模块对外的输出值,是一个对象。

Node.js - 模块系统

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。Node.js 提供了 exports 和 require 两个对象

ES模块基础用法及常见使用问题

ES6中引入了模块(Modules)的概念,相信大家都已经挺熟悉的了,在日常的工作中应该也都有使用。本文会简单介绍一下ES模块的优点、基本用法以及常见问题。

ES6 export 和 export default的区别

ES6中 export 和 export default 与 import使用的区别,使用 react native 代码详解,现在流行的前端框架,angular+ 主要使用 export 导出模块,react native 中使用 export default 导出模块,如今编辑器非常强大,安装插件会自动弹出模块名称,知道其导出怎么使用就可以了

export和export default的区别

export与export default均可用于导出常量、函数、文件、模块;你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用;

关于export和export default你不知道的事

网上有很多关于export和export default的文章,他们大部门都是只讲了用法,但是没有提到性能,打包等关键的东西。大家应该应该能理解import * from xxx会把文件中export default的内容都打包到文件中,而import {func} from xxx只会把文件中的func导入

最全的前端模块化方案

模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等。将一个复杂的系统分解为多个模块以方便编码。会讲述以下内容:CommonJS、AMD 及 核心原理实现、CMD 及 核心原理实现

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!