当前位置: 首页 > 后端技术 > Node.js

node.js模块化开发的基本流程和require加载文件的规则

时间:2023-04-03 18:11:28 Node.js

一、模块的分类1、文件模块是自己编写的功能模块文件,js文件代表自定义文件模块。constcalc=require('./modules/calculator.js');2.核心模块Node平台自带一套基本的功能模块,也称为Node平台的API。constpath=require('路径');constfs=require('fs');3、第三方模块社区或第三方开发的功能模块。这种模块在Node本身是不存在的,需要通过npm下载。介绍。比如操作mysql数据库,需要导入mysql模块。constexpress=require('快递');二、模块化开发的基本流程1、创建一个模块就是创建一个js文件,因为一个模块通常对应一个js文件。该文件中可以封装几个内部函数,如下所示。Node采用的模块化结构遵循CommonJS规范。模块和文件之间是一一对应的。加载一个模块其实就是加载一个js模块文件。2.导出模块成员使用module.exports={};在模块文件中导出成员。如下。可以使用ES6中的“自动属性”语法,将上面导出成员的代码替换为module.exports={add,subtract};。调用时用“模块名.add”表示模块文件中add的属性值对应的函数。3.使用相对路径加载模块,使用require方法加载自定义模块文件。四、模块的使用三、require加载文件的规则1、当require中的参数字符串以./(从当前目录开始)或../(从上一级目录开始)开头时:表示根据相对路径,从当前文件所在的文件夹开始寻找要加载的模块文件。2、当require中的参数字符串以/:开头时,表示从系统根目录下查找模块文件。3、如果参数字符串不是以./或/或../开头,则表示要加载的不是文件,而是默认提供的核心模块。这个时候先找node平台提供的核心模块,再找npm模块(也就是第三方模块包,或者自己写的模块包)。查找npm模块包时,会从当前目录开始,向上查找各级node_modules文件夹下的文件,但如果有两个同名文件,则遵循就近原则。1、node的system模块优先级最高。一旦第三方模块包与系统模块重名,则以系统模块为准。2、之前使用require加载文件时,如果文件在当前目录下,参数字符串必须以./开头,不能直接写文件名。如果在参数字符串中直接写文件名,则表示加载了一个模块包,模块包必须放在一个特定名称的文件夹中,即node_modules。4、使用require加载文件时,扩展名可以省略。比如require('./module'),对应的加载顺序是根据js文件执行(先找到对应路径下的module.js文件加载),根据json文件解析(如果上面js文件在相应路径下找不到json文件加载)根据预编译的c++模块执行(在相应路径下找到module.node文件加载)如果参数字符串是一个目录(文件夹)的路径,则会自动先在这个文件夹中搜索package.json文件,然后加载文件中main字段指定的入口文件。(如果package.json文件中没有main字段,或者根本没有package.json文件,那么默认会搜索这个文件夹下的index.js文件,作为模块加载。)