node模块

49 阅读2分钟

解决端口占用

 netstat -ano | findstr 端口号

taskkill /f -pid 进程号

一. 什么是模块化? 

解决一个复杂问题时,自项向下组成把系统划分为若干模块的过程

把代码进行模块化的好处 1.提高代码复用性 2.提高代码可维护性 3. 可以实现按需加载

1.内置模块 (有官方提供,例如 fs , path ,http)

const fs = require('fs');

2.自定义模块 (用户创建的每个js文件,都是自定义模块)

必须指定./ 或 ../开头的路径标识符,否则node会把他当做内置模块或者第三方模块进行加载

const person = require("./06.1")

console.log(person)

3.第三方模块(第三方开发的模块,使用前需要先下载)

注意  :使用require()方法加载其他模块时,会执行被加载模块中的代码

 二. 模块的加载机制

1.优先从缓存中加载,多次调用require()不会导致模块的代码被执行多次

2.内置模块的加载机制 加载优先级最高

3.自定义模块的加载机制

使用require()加载自定义模块时,必须指定 ./ 或 ../开头的路径标识符

否则node会把它当做内置模块或者第三方模块进行加载

同时,导入自定义模块的时候,如果省略了文件的扩展名 则nodejs会按顺序尝试加载文件 /js /json /node /加载失败,终端报错

4.第三方模块的加载机制

不是内置,也没有 ./或../开头,会从当前模块的父目录开始尝试从node_modules文件夹中加载第三方模块

5.目录作为模块

直接传入目录作为模块加载,有三种加载方式

(1)在被加载的目录下查找一个叫package.json的文件,并寻找main属性,作为 require()加载的入口

(2)如果目录没有或者不存在没法解析,则会加载目录下的index.js

(3)都不行的话就会报错 Error: Cannot find module 'xxx‘

require("../02-模块化的基本概念/10")

三. CommonJS模块化规范

node.js遵循了CommonJS模块化规范

模块的特性和各模块之间如何相互依赖

规定:

(1)每个模块内部,module变量代表当前模块

(2)module变量是一个对象,它的exports属性(即module.exports)是对外的接口

(3)加载某个模块时,其实是加载该模块的module.exports属性,

 require()方法用于加载模块