首页 > 编程语言 >Nodejs模块化

Nodejs模块化

时间:2023-06-29 21:55:04浏览次数:54  
标签:exports Nodejs 模块化 module js 导入 模块

Nodejs模块化

ECMAScript标准的缺陷

  • 没有模块系统
  • 标准库较少
  • 没有标准接口
  • 缺乏管理系统

如果程序设计的规模达到了一定程度,则必须对其进行模块化,模块化可以有多种形式,但至少应该提供能够将代码分割为多个源文件的机制。CommonJS的模块功能可以帮我们解决该问题。
Nodejs实现了是CommonJS规范,但是也对规范做了一些取舍

介绍

  • 什么是模块化与模块?

    将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化其中拆分出的每个文件就是一个模块,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用

  • 什么是模块化项目?

    编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目

  • 模块化好处
    1. 防止命名冲突
    2. 高复用性
    3. 高维护性

模块暴露数据

可以通过下面的操作步骤

  1. 创建me.js

    //声明函数
    function tiemo(){
        console.log('贴膜....');
    }
    
    //暴露数据
    module.exports = tiemo;
    
  2. 创建index.js

    //导入模块
    const tiemo = require('./me.js');
    
    //调用函数
    tiemo();
    

模块暴露数据的方式有两种:

  1. module.exports = value
  2. exports.name = value

使用时有几点注意:

  • module.exports可以暴露任意数据
  • 不能使用exports = value的形式暴露数据,模块内部moduleexports的隐式关系exports = module.exports = {}require返回的是目标模块中module.exports的值

导入(引入)模块

在模块中使用require传入文件路径即可引入文件

const test = require('./me.js');

require 使用的一些注意事项:

  • 对于自己创建的模块,导入时路径建议写相对路径,且不能省略./../

  • jsjson文件导入时可以不用写后缀,c/c++编写的node扩展文件也可以不写后缀,但是一般用不到

  • 如果导入其他类型的文件,会以js文件进行处理

  • 如果导入的路径是个文件夹

    1. 首先检测该文件夹下package.json件中main属性对应的文件,如果存在则导入,反之如果文件不存在会报错
    2. 如果main属性不存在,或者package.json不存在,则会尝试导入文件夹下的index.jsindex.json
    3. 如果还是没找到,就会报错
  • 导入node.js内置模块时,直接require模块的名字即可,无需加./../

导入模块的基本流程

require导入自定义模块的基本流程

  1. 将相对路径转为绝对路径,定位目标文件
  2. 缓存检测
  3. 读取目标文件代码
  4. 包裹为一个函数并执行(自执行函数)。通过arguments.callee.toString()查看自执行函数
  5. 缓存模块的值
  6. 返回module.exports的值

标签:exports,Nodejs,模块化,module,js,导入,模块
From: https://www.cnblogs.com/wdszh/p/17504303.html

相关文章

  • NodeJS系列(6)- ECMAScript 6 (ES6) 语法(四)
    本文在“NodeJS系列(2)-NPM项目Import/ExportES6模块”的npmdemo项目的基础上,继续介绍并演示Promise对象、Generator函数、async函数等ES6语法和概念。NodeJSES6:https://nodejs.org/en/docs/es6ECMA:https://www.ecma-international.org/publications-and-standard......
  • NodeJS系列(5)- ECMAScript 6 (ES6) 语法(三)
    在“NodeJS系列(3)-ECMAScript6(ES6)语法(一)”和“NodeJS系列(4)-ECMAScript6(ES6)语法(二)”里,我们介绍并演示let、const、Symbol、函数扩展、类等ES6语法和概念。本文在“NodeJS系列(2)-NPM项目Import/ExportES6模块”的npmdemo项目的基础上,继续介绍并演示Ref......
  • nodeJS常用路径API示例简记
    常用API汇总:process.cwd():返回当前执行node命令时的所在目录path.dirname():返回当前执行文件的所在目录__dirname:返回当前执行文件的所在目录(只能在CommonJS规范下使用)__filename:返回当前执行文件的绝对路径(只能在CommonJS规范下使用......
  • NodeJS系列(4)- ECMAScript 6 (ES6) 语法(二)
    在“NodeJS系列(3)-ECMAScript6(ES6)语法(一)”里,我们介绍并演示let、const、Symbol等ES6语法和概念。本文在“NodeJS系列(2)-NPM项目Import/ExportES6模块”的npmdemo 项目的基础上,继续介绍并演示函数扩展、类等ES6语法和概念。NodeJSES6:https://nodejs.org......
  • 整车动力学模型_simulink(7自由度&14自由度) 采用模块化建模方法,搭建7自由度和14自由度
    整车动力学模型_simulink(7自由度&14自由度)原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/644996670327.html软件使用:MatlabSimulink适用场景:采用模块化建模方法,搭建7自由度和14自由度整车模型,作为整车平台适用于多种工况场景。产品simulink源码包含如下模块:→工况:阶跃......
  • C# Winform通用开发框架,支持多语言,多数据库,自动更新,模块化
    C#Winform通用开发框架,支持多语言,多数据库,自动更新,模块化,可用其开发任意CS端系统,非常适合需要快速搭建项目的团队或个人使用。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/661496079150.html......
  • NodeJS本地环境安装及设置
    背景作为一个后端,服务接口自然不在话下。分分钟给安装上百个接口。但是交互。。。postman,postman,,,,,可视化和交互上那简直真的就是都长这样:想搞个React前端页面。先使用一下单表的增删改查操作。用来操作数据库玩玩一、概念1、Node.js是什么?Node.js是一个开源和跨......
  • Nodejs介绍与安装
    Nodejs介绍与安装介绍Nodejs是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境Nodejs采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模Nodejs大部分基本模块都用JavaScript编写。......
  • ES6 模块化组件暴露方式
    分别<script>//分别exportconstschool=Vue.extend({data:{},methods:{}})</script> 统一<script>constschool=Vue.extend({data:{},......
  • 模块化和组件化的含义及区别
    1、模块化【代码逻辑角度划分】用于保证每个模块的只能单一比如药品管理,就是一个模块,包含了列表,添加,修改,删除;2、组件化【UI界面角度划分】页面上的每个独立区域,都可作为一个组件,便于组件复用3、区别划分角度不同4、为什么要使用模块化和组件化开发和调试的效率更高......