文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

node.js核心模块有哪些

2024-04-02 19:55

关注

全局对象

在浏览器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

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

常用工具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:

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操作系统等等。

以上就是node.js核心模块有哪些的详细内容,更多关于node.js核心模块的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯