zoukankan      html  css  js  c++  java
  • 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

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

    佛山vi设计https://www.houdianzi.com/fsvi/ 豌豆资源搜索大全https://55wd.com

    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
    ');
    });
    server.listen(port, host, () => {
      console.log(`Server running at http://${host}:${port}/`);
    });

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

  • 相关阅读:
    java期末复习2
    java期末复习
    Educational Codeforces Round 76 (Rated for Div. 2)
    ICPC南昌时间安排
    codeforces 597 div2 ABCDF
    codeforces 597 div2 ABC
    Vue中provide和inject 用法
    Js打印九九乘法表
    document.documentElement和document.body的区别
    移动端关于横屏问题
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13847476.html
Copyright © 2011-2022 走看看