首页 > 编程语言 >【Node】【6】模块系统

【Node】【6】模块系统

时间:2024-08-26 22:26:27浏览次数:14  
标签:Node exports require 系统 module hello 模块 Hello

Node.js的模块系统基于CommonJS规范,其中每个文件被视为一个独立的模块,可以通过require函数引入其他模块,也可以通过module.exports将模块的功能暴露给外部。

CommonJS规范:使用 require() 函数来导入模块,使用 module.exports 或 exports 对象来导出模块。
ES Modules: 使用 import 和 export 关键字进行模块导入和导出。

【面试题】在低版本的 node 中想使用 es module 该如何做?【Nodejs】【出题公司: 腾讯】

  1. 低于Node 12 如何使用ES Modules:

    • 文件扩展名:在文件名后缀为 .mjs 的文件中使用 ES Modules。
    • package.json 配置:在 package.json 文件中添加 "type": "module"
    • 导入和导出:使用 importexport 语法。
    • 动态导入:动态导入可能不受支持。

    以下是一个示例:

    • 创建一个 app.mjs 文件:扩展文件格式

      // app.mjs
      import http from 'http';
      
      const server = http.createServer((req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello World\\n');
      });
      
      const PORT = 3000;
      
      server.listen(PORT, () => {
        console.log(`Server running at <http://localhost>:${PORT}/`);
      });
      
      
    • 修改 package.json 文件:

      {
        "type": "module", // 重点
        "scripts": {
          "start": "node --experimental-modules app.mjs"
        }
      }
      
      
    • 使用 -experimental-modules 标志运行应用程序:

      node --experimental-modules app.mjs
      
      
  2. 从 Node.js 12 开始,官方提供了对 ES Modules 的本机支持,无需额外配置即可使用 ES Modules。

module.exports 和 exports

//hello.js

exports.greet = function() {
    console.log('Hello World');
}
  • 这种方式是在 exports 对象上添加属性或方法,可以导出多个方法或属性。
  • 当引入这个模块时,返回的是 exports 对象,可以通过属性访问导出的方法或属性。
  • exports 则更适合在导出多个属性或方法时使用

//main.js


var Hello = require('./hello');

console.log(typeof Hello); //object exports对象

// let hello = new Hello();
Hello.greet();

//hello.js


// 导出一个构造函数 Hello
function Hello() {
    this.greet = function() {
        console.log('Hello, world!');
    };
}

module.exports = Hello;

  • 这种方式将整个模块(module.exports)替换为一个构造函数或对象。当引入这个模块时,返回的是整个构造函数(Hello)或对象。 不再是exports对象
  • 可以通过 new 关键字实例化 Hello,然后调用其方法。
  • 这种方式更加常用。可以导出对象。

//main.js

var Hello = require('./hello');

console.log(typeof Hello); //function

let hello = new Hello();
hello.greet();

模块导入

var http = require("http");// 内置模块
var express = require("express"); //第三方模块,通过npm安装和引入
var Hello = require('./hello');   // 文件模块 绝对路径和相对路径引入

在这里插入图片描述

标签:Node,exports,require,系统,module,hello,模块,Hello
From: https://blog.csdn.net/qq_43720551/article/details/141574652

相关文章

  • 【操作系统】实验:进度调度(2)
    目录一、实验目的二、实验要求三、实验步骤四、核心代码五、记录与处理六、思考七、完整报告和成果文件提取链接一、实验目的1、掌握高优先权调度算法2、理解时间片、优先权、抢占等基本概念。二、实验要求1.优先权属于静态优先权;2.进入CPU运行一个时间片......
  • python+flask计算机毕业设计电影网站系统(程序+开题+论文)
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,网络娱乐已成为人们日常生活中不可或缺的一部分,其中电影作为重要的文化娱乐形式,......
  • python+flask计算机毕业设计高校宿舍信息管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及与校园规模的不断扩大,高校宿舍作为学生日常生活与学习的重要场所,其管理效率与质量直接关系到学生的安全、健康及学习环......
  • python+flask计算机毕业设计高校科研申报系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育事业的蓬勃发展,高校科研活动日益频繁且复杂多样,成为推动科技进步和社会发展的重要力量。然而,传统的科研申报与管理模式往往依......
  • python+flask计算机毕业设计基于的地铁售票系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,地铁作为现代城市公共交通的重要组成部分,其便捷性、高效性和环保性日益凸显。然而,传统的地铁售票方式往往面临排队时......
  • 内存管理-30-系统内存占用
    基于msm-5.4一、前言1.相关名词介绍RSS(ResidentSetSize)‌:这是进程当前在物理内存中占用的空间,包括进程本身和所有链接库。RSS是评估进程内存占用的一个重要指标,它直接反映了进程当前实际使用的物理内存量‌。但由于包含了共享库,用处不大。‌PSS(ProportionalSetSize)‌......
  • python+flask计算机毕业设计餐厅快捷就餐系统(程序+开题+论文)
    校园二手货物交易平台m1a2o本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快,人们对餐饮服务的效率与便捷性提出了更高要求。传统餐厅的就餐流程往往存在排队等候时......
  • python+flask计算机毕业设计关于梦想的贴吧系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息爆炸的时代,网络社交平台已成为人们分享生活、交流思想的重要场所。随着个人成长与自我实现的追求日益增强,人们越来越渴望找到一个能......
  • GPT多模态大模型与AI Agent智能体系列一》大模型企业应用落地》基于大模型的对话式推
    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】文章目录GPT多模态大模型与AIAgent智能体系列一基于大模型的对话式推荐系统》对话式推荐系统技术架构设计基于大模型的......
  • unity游戏开发——(细)深入解析 Unity 地形系统:从基础到高级应用
    Unity游戏开发“好读书,不求甚解;每有会意,便欣然忘食。”本文目录:Unity游戏开发Unity游戏开发前言深入解析Unity地形系统:从基础到高级应用一、初识Unity地形系统1.地形尺寸与分辨率二、地形编辑工具详解1.高度工具(Raise/LowerTerrain)2.平滑工具(SmoothHeig......