博客
关于我
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/

    你可能感兴趣的文章
    node.js+react写的一个登录注册 demo测试
    查看>>
    Node.js中环境变量process.env详解
    查看>>
    Node.js之async_hooks
    查看>>
    Node.js初体验
    查看>>
    Node.js升级工具n
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js基于Express框架搭建一个简单的注册登录Web功能
    查看>>
    node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js安装及环境配置之Windows篇
    查看>>
    Node.js安装和入门 - 2行代码让你能够启动一个Server
    查看>>
    node.js安装方法
    查看>>
    Node.js官网无法正常访问时安装NodeJS的方法
    查看>>
    node.js模块、包
    查看>>
    node.js的express框架用法(一)
    查看>>
    Node.js的交互式解释器(REPL)
    查看>>
    Node.js的循环与异步问题
    查看>>
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>
    nodejs + socket.io 同时使用http 和 https
    查看>>