浅谈node的模块化

240 阅读3分钟

node模块化简介

模块化就是把一个文件拆分成若干个小文件,而且还能通过特定语法组合到一起。主要的模块化规范一共有4种,分别是:AMD, CMD, CommonJS, ES6。其中commonJS是node中的模块化使用方案,主要运行在服务端上。

模块化的优势:

  • 更利于维护
  • 更加好的复用性

模块的分类:

  • 自定义模块

    • NodeJS中创建的JS文件都是自定义模块(也就是处处皆模块)
  • 内置模块(也叫核心模块)

    • 安装Node之后,自带了很多内置模块。我们可以直接加载使用他们
  • 第三方模块

    • 其他人编写的模块,发布到npm网站上,我们可以下载使用

自定义模块

每个JS文件都是一个自定义模块,具有模块作用域,也就是说在模块中创建的变量,函数等都只能在当前模块中使用。

  • 共享(导出)内容给其他模块用,需要使用module.exports导出内容

    • module是Node中的一个全局对象,对象包含当前模块的详细信息。
    • module.exports是模块的出口,也就是导出内容用的,默认值是{ }
    • 例如要导出name, age, fn给其他模块用,就要用module.exports={name,age,fn}
  • 导入其他模块导出的内容,可以使用require()加载

    • let 结果 = require('模块路径')
    • 注意:加载自定义模块,必须加路径,即使是./也必须加(require的机制是如果识别到有./的存在就认定为自定义模块),但是可以省略后缀。

内置模块

内置模块也叫核心模块,它是nodeJS平台自带的一套基本的API(功能模块),由于内置模块有很多很多,所以这里只看几个常用模块。

注意:用require加载内置模块不能写路径,这是和加载自定义模块不一样的。

  1. path模块

    • path是node本身提供的API,专门用来处理路径

      // 使用核心模块之前,首先加载核心模块
      const path = require('path');
      ​
      //extname方法可以获取文件得后缀名
      path.extname('test.html')
      ​
      //join方法可以拼接路径
      path.join('a','b','c','test.js')
      ​
      //__dirname可以获取当前这个文件得绝对路径,结合join拼接路径
      path.join(__dirname,'a','b','c','test.json')
      
  2. fs模块

    • fs即是file system文件系统,该模块可以实现对文件和文件夹的操作
    • 引入模块:const fs = require('fs'),这种模块引入建议使用const,因为我们不希望它改变。
    • 常用方法是:fs.readFileSync('路径','utf-8')fs.writeFileSync('路径','导入的内容')

第三方模块

非node自带的模块,也不是自定义模块。

是别人写的模块,然后发布到npmjs.com网站上,我们可以使用npm工具来下载安装别写的模块。

  • 本地模块初始化:初始化后会在项目目录生成package.json文件

    npm init -y
    #
    npm init
    
  • 下载/卸载安装第三方模块

    #安装
    npm install 模块名
    npm i 模块名
    npm i 模块名 模块名 模块名
    #卸载
    npm uninstall 模块名
    npm un 模块名
    npm un 模块名 模块名 模块名
    

\