博客
关于我
Node第一天
阅读量:793 次
发布时间:2023-02-16

本文共 2250 字,大约阅读时间需要 7 分钟。

Node.js模块化规范与全局对象解析

CommonJS模块化规范

在Node.js中,模块化开发是核心特性之一。CommonJS是Node.js模块系统的模块化规范,遵循以下规则:

模块引入

模块间的引入使用require()方法:

const module = require('module-path');

模块暴露

模块的暴露方式有两种:

  • exports暴露:将模块输出结果直接挂载到exports对象上。
  • module.exports暴露:将模块输出结果挂载到module.exports对象上。最终,module.exports会将exports指向的值进行暴露。
  • 模块特点

    每个模块都被一个函数包裹,内部通过exportsmodule.exports暴露接口。模块加载时会执行内部函数。


    全局对象与Node.js环境

    Node.js全局对象

    Node.js提供了一个全局对象global,包含以下属性:

    • console:日志输出工具。
    • setTimeout:设置定时器。
    • setInterval:周期性执行函数。
    • setImmediate:立即执行函数。
    • Buffer:二进制数据缓冲工具。
    • process:Node.js进程管理工具。

    Node.js全局环境

    Node.js的全局环境与浏览器不同:

    • DOM:无。
    • BOM:大部分情况下无。
    • ES:支持ES6+标准。
    • global对象:核心全局变量。

    Node.js事件轮询机制

    事件轮询阶段

    Node.js事件轮询机制分为以下阶段:

  • timers(定时器阶段):执行定时器回调。
  • pending callbacks(待处理回调):处理延迟任务。
  • idle/prepare(空闲阶段):执行I/O完成回调。
  • poll(轮询阶段):轮询回调队列。
  • check(检查阶段):执行setImmediate回调。
  • close callbacks(关闭阶段):执行关闭回调。
  • 事件轮询特点

    • 循环过程:事件轮询不断重复执行各个阶段。
    • 停留阶段:大多数回调在poll阶段执行。
    • 优先级setImmediatecheck阶段优先执行。

    process.nextTick

    process.nextTick可以在任何阶段立即执行回调,适用于高优先级任务。


    包管理与依赖管理

    package.json文件

    package.json是Node.js项目的依赖管理文件,包含以下内容:

  • name:包名。
  • version:版本号。
  • dependencies:生产依赖。
  • devDependencies:开发依赖。
  • scripts:项目脚本。
  • npm命令

    • 安装依赖npm install/npm i xxx
    • 全局安装npm i -g
    • 初始化包描述文件npm init -y
    • 删除依赖npm remove xxx

    配置镜像地址

    为了加快依赖下载速度,可以配置镜像地址:

    npm config set registry http://registry.npm.taobao.org/

    yarn命令

    • 安装依赖yarn add xxx
    • 全局安装yarn global add xxx
    • 生成锁文件yarn install

    常用Node.js核心模块

    Buffer模块

    Buffer是Node.js中处理二进制数据的核心模块,主要方法包括:

    • Buffer.alloc():安全创建Buffer。
    • Buffer.from():创建Buffer。
    • Buffer.allocUnsafe():不安全创建Buffer。

    path模块

    处理文件路径的核心模块:

    const path = require('path');console.log(path.join(__dirname, '../', '文件名')); // 绝对路径

    events模块

    实现自定义事件的核心模块:

    const Emitter = require('events');const myEmitter = new Emitter();myEmitter.on('事件名', function(...args) {  console.log('事件触发');});myEmitter.emit('事件名', 1, 2, 3);

    fs模块

    文件系统核心模块,主要方法包括:

  • 同步写入文件
  • const fs = require('fs');fs.writeSync('/路径', '内容', { flags: 'w', mode: 0o666 });
    1. 异步写入文件
    2. fs.open('/路径', 'w', function(err, fd) {  fs.write(fd, '内容', function(err) {    fs.close(fd, function(err) {      // 关闭文件    });  });});
      1. 流式操作
      2. const fs = require('fs');const ws = fs.createWriteStream('/路径');ws.write('内容');

        总结

        Node.js作为前端开发框架,提供了强大的模块化能力和生态系统。通过理解CommonJS模块化规范、全局对象特性及事件轮询机制,我们可以更高效地开发Node.js应用。同时,合理使用包管理工具(如npm和yarn),优化依赖管理流程,是提升开发效率的重要手段。

    转载地址:http://kojfk.baihongyu.com/

    你可能感兴趣的文章
    Nginx访问控制_登陆权限的控制(http_auth_basic_module)
    查看>>
    nginx负载均衡和反相代理的配置
    查看>>
    nginx负载均衡器处理session共享的几种方法(转)
    查看>>
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    nginx转发端口时与导致websocket不生效
    查看>>
    Nginx运维与实战(二)-Https配置
    查看>>
    Nginx配置Https证书
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>