• day4:Node.js 核心库


    day4:Node.js 核心库

    常用工具模块

    Node.js有许多常用的工具,以下是一些常见的:

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

    2. Lodash:Lodash是一个功能丰富的JavaScript实用工具库,提供了许多用于处理数组、对象和其他常见数据结构的方法。

    3. Moment.js:Moment.js是一个用于解析、验证、操作和格式化日期的库,简化了日期和时间的处理。

    util 模块

    util 是一个 Node.js 的核心模块,它提供了一系列实用的功能和方法,用于处理各种常见的编程任务。这个模块包含了一些用于处理数据、日期、文本、数组和对象的功能。以下是一些 util 模块中常用的方法:

    1. util.format(): 这个方法用于格式化字符串,类似于 C 语言中的 printf
    2. util.inherits(): 这个方法用于实现对象间的原型继承。
    3. util.isArray(): 检查一个对象是否是数组。
    4. util.isDate(): 检查一个对象是否是日期。
    5. util.isError(): 检查一个对象是否是错误对象。
    6. util.isFunction(): 检查一个对象是否是函数。
    7. util.isNull(): 检查一个对象是否是 null。
    8. util.isNullOrUndefined(): 检查一个对象是否是 null 或 undefined。
    9. util.isNumber(): 检查一个对象是否是数字。
    10. util.isObject(): 检查一个对象是否是普通的对象。
    11. util.isString(): 检查一个对象是否是字符串。

    以上只是 util 模块中的一部分方法,还有其他一些有用的方法。你可以参考 Node.js 的官方文档来了解更多关于 util 模块的信息。

    以下是一个Node.js核心模块util的代码示例,演示了如何使用util模块中的一些常用方法:

    const util = require('util');  
      
    // 使用 util.format() 格式化字符串  
    const formattedString = util.format('Hello, %s!', 'World');  
    console.log(formattedString); // 输出:Hello, World!  
      
    // 使用 util.isArray() 检查一个对象是否是数组  
    const myArray = [1, 2, 3];  
    console.log(util.isArray(myArray)); // 输出:true  
      
    // 使用 util.isDate() 检查一个对象是否是日期对象  
    const myDate = new Date();  
    console.log(util.isDate(myDate)); // 输出:true  
      
    // 使用 util.inherits() 实现对象间的原型继承  
    function MyBaseObject() {  
      this.name = 'MyBaseObject';  
    }  
      
    function MyDerivedObject() {  
      MyBaseObject.call(this);  
      this.type = 'Derived';  
    }  
      
    util.inherits(MyDerivedObject, MyBaseObject);  
      
    const myDerivedObject = new MyDerivedObject();  
    console.log(myDerivedObject.name); // 输出:MyBaseObject
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    Moment 模块

    Moment.js 是一个用于解析、验证、操作和格式化日期的 JavaScript 库,广泛应用于 Node.js 应用程序中。它简化了日期和时间的处理,提供了许多方便且强大的方法。

    以下是 Moment.js 的一些常用功能:

    1. 解析日期:Moment.js 可以将字符串转换为日期对象,方便后续操作。例如,moment('2023-07-01') 会返回一个表示该日期的 Moment 对象。
    2. 格式化日期:可以使用 Moment.js 将日期对象格式化为字符串,以便显示或存储。例如,moment().format('YYYY-MM-DD') 会返回当前日期的字符串表示形式。
    3. 日期操作:Moment.js 提供了许多方法来操作日期,如添加或减去时间、比较日期等。例如,moment().add(1, 'day') 会返回当前日期的下一天的 Moment 对象。
    4. 验证日期:可以使用 Moment.js 验证给定的字符串是否表示有效的日期。例如,moment('2023-07-01', 'YYYY-MM-DD', true).isValid() 会返回一个布尔值,指示给定的字符串是否为有效的日期。

    使用 Moment.js 可以简化日期和时间的处理,提高代码的可读性和可维护性。它是 Node.js 应用程序中处理日期和时间的常用工具之一。

    1. 解析日期:
    const moment = require('moment');  
      
    const dateStr = '2023-07-01';  
    const date = moment(dateStr);  
      
    console.log(date.toString()); // 输出 "Fri Jul 01 2023 00:00:00 GMT+0800 (中国标准时间)"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 格式化日期:
    const moment = require('moment');  
      
    const currentDate = moment();  
    const formattedDate = currentDate.format('YYYY-MM-DD HH:mm:ss');  
      
    console.log(formattedDate); // 输出当前日期的格式化字符串,例如 "2023-07-01 12:34:56"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 日期操作:
    const moment = require('moment');  
      
    const currentDate = moment();  
    const nextDay = currentDate.add(1, 'day');  
      
    console.log(nextDay.toString()); // 输出当前日期的下一天的字符串表示形式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这些示例展示了 Moment.js 的一些常用功能。根据具体需求,你可以使用 Moment.js 提供的其他方法来处理日期和时间。

    Lodash 模块

    Lodash 是一个 JavaScript 实用工具库,提供了许多用于处理数组、对象和其他常见数据结构的方法。它广泛应用于 Node.js 应用程序中,以简化数据处理和集合操作。

    Lodash 提供了一系列方便且高效的方法,例如:

    1. 集合操作:Lodash 提供了用于合并、筛选、映射和排序数组的方法,如 _.union_.filter_.map_.sortBy
    2. 对象操作:Lodash 提供了用于获取、设置和删除对象属性的方法,如 _.get_.set_.unset
    3. 函数工具:Lodash 提供了用于创建和操作函数的方法,如 _.debounce_.throttle_.memoize
    4. 工具函数:Lodash 还提供了一些常用的工具函数,如 _.isNil_.isEmpty_.isEqual,用于执行各种常见任务。

    使用 Lodash 可以简化代码并提高性能。它提供了链式语法,允许将多个方法链接在一起以执行更复杂的操作。此外,Lodash 还针对性能进行了优化,可以在处理大量数据时提供良好的性能。

    下面是一些使用 Lodash 库的常用代码示例:

    1. 集合操作:
    const _ = require('lodash');  
      
    const array1 = [1, 2, 3];  
    const array2 = [4, 5, 6];  
      
    // 合并数组  
    const mergedArray = _.union(array1, array2);  
    console.log(mergedArray); // 输出 [1, 2, 3, 4, 5, 6]  
      
    // 筛选数组  
    const filteredArray = _.filter(array1, (num) => num > 1);  
    console.log(filteredArray); // 输出 [2, 3]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 对象操作:
    const _ = require('lodash');  
      
    const obj = { name: 'John', age: 30 };  
      
    // 获取对象属性  
    const name = _.get(obj, 'name');  
    console.log(name); // 输出 'John'  
      
    // 设置对象属性  
    _.set(obj, 'city', 'New York');  
    console.log(obj); // 输出 { name: 'John', age: 30, city: 'New York' }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 函数工具:
    const _ = require('lodash');  
      
    // 防抖函数  
    const debouncedFunc = _.debounce((message) => console.log(message), 500);  
    debouncedFunc('Hello, World!'); // 在500毫秒内多次调用只会输出一次
    
    • 1
    • 2
    • 3
    • 4
    • 5
    web模块

    Node.js的web模块并不是一个内置的核心模块,但Node.js提供了许多用于Web开发的模块和工具。以下是一些常用的Node.js Web模块:

    1. Express.js: Express.js是一个流行的Node.js Web框架,用于构建Web应用程序。它提供了路由、中间件、模板引擎等功能,简化了Web开发过程。
    2. HTTP模块: Node.js内置了http模块,用于创建HTTP服务器和处理HTTP请求。你可以使用它来构建基本的Web服务器和应用程序。
    3. Koa.js: Koa.js是一个轻量级的Web框架,基于Node.js的http模块。它提供了中间件和上下文对象,用于处理HTTP请求和响应。
    4. Socket.IO: Socket.IO是一个用于实时通信的库,可以在浏览器和Node.js服务器之间建立双向通信。它可以用于构建实时聊天、实时数据更新等应用程序。

    Node.js的http模块是一个内置的核心模块,用于创建HTTP服务器和处理HTTP请求。通过http模块,你可以构建基于HTTP协议的Web服务器,从而提供Web服务。

    以下是http模块的基本用法示例:

    const http = require('http');  
      
    // 创建一个HTTP服务器  
    const server = http.createServer((req, res) => {  
      // 处理HTTP请求  
      // req表示请求对象,res表示响应对象  
      
      // 设置响应头  
      res.writeHead(200, { 'Content-Type': 'text/plain' });  
      
      // 发送响应内容  
      res.end('Hello, World!\n');  
    });  
      
    // 监听端口  
    server.listen(3000, () => {  
      console.log('Server is running on port 3000...');  
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在上面的示例中,我们首先引入了http模块,然后使用http.createServer()方法创建了一个HTTP服务器。服务器的回调函数在每次收到HTTP请求时被调用,req参数表示请求对象,res参数表示响应对象。

    你可以在回调函数中处理请求,例如解析请求头、处理GET或POST请求的数据等。然后,你可以使用响应对象res来设置响应头、发送响应内容等。

    通过server.listen()方法,我们将服务器绑定到指定的端口上,以便监听来自客户端的请求。

    使用http模块,你可以构建各种类型的Web服务器,处理HTTP请求和响应,实现基于HTTP协议的Web服务。

    Socket.IO是一个用于Node.js的实时通信库,它允许在浏览器和服务器之间建立双向通信。Socket.IO基于WebSocket协议,但提供了更高级别的封装和更多的功能。

    以下是使用Socket.IO的基本示例:

    服务器端(Node.js)

    首先,确保已经安装了Socket.IO模块。你可以使用npm进行安装:

    bash复制代码npm install socket.io
    
    • 1

    然后,创建一个简单的Socket.IO服务器:

    const http = require('http');  
    const socketIo = require('socket.io');  
      
    // 创建一个HTTP服务器  
    const server = http.createServer((req, res) => {  
      res.writeHead(200, { 'Content-Type': 'text/html' });  
      res.end('

    Hello, World!

    '
    ); }); // 在HTTP服务器上监听连接 const io = socketIo(server); // 当客户端连接时触发事件 io.on('connection', (socket) => { console.log('Client connected'); // 监听客户端发送的消息 socket.on('message', (msg) => { console.log('Received message:', msg); socket.emit('response', 'Message received'); }); // 当客户端断开连接时触发事件 socket.on('disconnect', () => { console.log('Client disconnected'); }); }); // 监听端口 server.listen(3000, () => { console.log('Server is running on port 3000...'); });
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    客户端(浏览器)

    在浏览器中,你可以使用Socket.IO客户端库与服务器进行通信。首先,确保在HTML文件中引入了Socket.IO客户端库:

    html复制代码<script src="/socket.io/socket.io.js">script>
    
    • 1

    然后,使用JavaScript与服务器建立连接并交换消息:

    <script>  
      // 建立与服务器的连接  
      const socket = io();  
      
      // 监听服务器的响应事件  
      socket.on('response', (msg) => {  
        console.log('Received response:', msg);  
      });  
      
      // 向服务器发送消息  
      socket.emit('message', 'Hello from client');  
    script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这是一个简单的Socket.IO示例,演示了如何在Node.js服务器和浏览器之间建立实时通信。

    文件模块

    Node.js的文件系统(fs模块)提供了一个与文件系统进行交互的接口,使得你可以在Node.js应用程序中执行各种文件系统操作,如读取文件、写入文件、创建目录、删除文件等。

    以下是使用Node.js的fs模块进行文件系统操作的一些示例:

    读取文件

    const fs = require('fs');  
      
    fs.readFile('example.txt', 'utf8', (err, data) => {  
      if (err) {  
        console.error(err);  
        return;  
      }  
      console.log(data);  
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    写入文件

    const fs = require('fs');  
      
    fs.writeFile('example.txt', 'Hello, world!', 'utf8', (err) => {  
      if (err) {  
        console.error(err);  
        return;  
      }  
      console.log('File has been saved!');  
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    创建目录

    const fs = require('fs');  
      
    fs.mkdir('example_dir', (err) => {  
      if (err) {  
        console.error(err);  
        return;  
      }  
      console.log('Directory has been created!');  
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    删除文件

    const fs = require('fs');  
      
    fs.unlink('example.txt', (err) => {  
      if (err) {  
        console.error(err);  
        return;  
      }  
      console.log('File has been deleted!');  
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    path 模块

    Node.js的path模块是一个内置的核心模块,提供了用于处理文件和目录路径的工具。它包含一系列的方法和属性,可以帮助你执行各种路径相关的操作,如解析路径、构建路径、获取文件扩展名等。

    以下是使用Node.js的path模块的一些示例:

    解析路径

    const path = require('path');  
      
    const filePath = '/User/example/file.txt';  
    const baseName = path.basename(filePath); // 返回文件名 file.txt  
    const dirName = path.dirname(filePath); // 返回目录路径 /User/example
    
    • 1
    • 2
    • 3
    • 4
    • 5

    构建路径

    const path = require('path');  
      
    const filePath = path.join('/User', 'example', 'file.txt'); // 构建完整的路径 /User/example/file.txt
    
    • 1
    • 2
    • 3

    获取文件扩展名

    const path = require('path');  
      
    const filePath = '/User/example/file.txt';  
    const extname = path.extname(filePath); // 返回文件扩展名 .txt
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

  • 相关阅读:
    JUnit进行单元测试
    Jetson Agx Xavier平台调试AR0820相机分辨率缩放3848x2168 to 1920x1080
    使用 MyBatisPlus 的注解方式进行 SQL 查询,它结合了条件构造器(Wrapper)和自定义 SQL 片段来构建查询语句。
    05 MIT线性代数-转置,置换,向量空间Transposes, permutations, spaces
    python 获取本机ip
    大数据入门:HDFS API 常规操作
    除了Excel中可以添加公式之外,在Word中也可以添加公式,不过都是基于表格
    【论文精读3】CasMVSNet
    Monaco Editor教程(十三):在指定位置插入或替换文本
    分享10套开源免费的高品质源码,免费源码下载平台
  • 原文地址:https://blog.csdn.net/RodJohnsonDoctor/article/details/133886225