目录

一、模块化的基本概念

1、什么是模块化

2、模块化规范

二、Node.js 中的模块化

1、Node.js 中的模块化分类

2、加载模块

3、向外共享模块作用域中的成员

4、Node.js 中的模块化规范

三、npm 与 包

1、包的概念

2、包的安装与卸载

3、包管理配置文件


一、模块化的基本概念

1、什么是模块化

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。

编程领域中的模块化

就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。 把代码进行模块化拆分的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载

2、模块化规范

模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则。

例如:

  • 使用什么样的语法格式来引用模块
  • 在模块中使用什么样的语法格式向外暴露成员

模块化规范的好处

大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用,利人利己。

二、Node.js 中的模块化

1、Node.js 中的模块化分类

Node.js 中根据模块来源的不同,将模块分为了 3 大类,分别是:

内置模块(内置模块是由 Node.js 官方提供的,例如 fs、path、http 等)

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

第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

2、加载模块

使用 require() 方法,可以加载需要的内置模块、用户自定义模块、第三方模块进行使用。

// 1、加载内置fs模块
const fs = require('fs')
//2、加载自定义模块
const tre = require('./tre.js')
//3、加载第三方模块
const moment=require('moment')

3、向外共享模块作用域中的成员

module.exports 对象:

在每个 .js 自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息。

在自定义模块中,可以使用 module.exports 对象,将模块内的成员共享出去,供外界使用。

外界用 require() 方法导入自定义模块时,得到的就是 module.exports 所指向的对象。

4、Node.js 中的模块化规范

(1)什么是CommonJS模块规范

  • CommonJS 是一套代码规范, 目的是为了构建 JavaScript 在浏览器之外的生态系统 (服务器端, 桌面端).
  • 通过该规范使JavaScript具备开发复杂应用、跨平台的能力

Node.js 遵循了 CommonJS 模块化规范,CommonJS 规定了模块的特性和各模块之间如何相互依赖。

(2) CommonJS 模块化规范

CommonJS模块规范化的内容
导出模块: moudle.exports 导出模块
导入模块: require('模块名称')

CommonJS 规定:

  1. 每个模块内部,module 变量代表当前模块。
  2. module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。
  3. 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块。

(3)每个导出的模块都有一个moudle对象,该对象包含的属性有:

moudle.exports 表示当前模块对外输出的接口,其他模块引用的是moudle.exports导出的变量
exports变量 指向moudle.exports,为了操作的方便,它不能直接指向一个值

(4)使用require导入模块:导入并执行一个JavaScript文件,返回的是一个exports对象,若没有找到相应的对象就报错

  • 模块输出是一个函数,则该函数的输出接口不能用exports变量来导出,必须用户moudle.exports导出
  • 加载规则:

A、用来加载js文件,默认的文件扩展名为.js
           
           B、根据参数的不同格式,去不同路径下查找相应的js文件
           
              './(../)':表示加载路径是相对路径
              
              '/':表示加载路径是绝对路径
              
              既不是'./(../)'也不是'/':表示加载的模式是node的核心模块,在node安装路径的node_modules中

  • require的内部处理的流程

 require -->module.exports-->moudle._load 

三、npm 与 包

1、包的概念

什么是包?

Node.js 中的第三方模块又叫做包。 就像电脑和计算机指的是相同的东西,第三方模块和包指的是同一个概念,只不过叫法不同。

包的来源?

不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。 注意:Node.js 中的包都是免费且开源的,不需要付费即可免费下载使用。

为什么需要包?

由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低。 包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。 包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系。

2、包的安装与卸载

npm 包的安装——

npm install 包的完整名称

npm 包的卸载——

npm uninstall 包的完整名称

安装指定保本的包——

默认情况下,使用 npm install 命令安装包的时候,会自动安装最新版本的包。如果需要安装指定版本的包,可以在包名之后,通过 @ 符号指定具体的版本,例如

npm install moment@2.12.1

3、包管理配置文件

npm 规定,在项目根目录中,必须提供一个叫做 package.json 的包管理配置文件。用来记录与项目有关的一些配置信息。例如:

  • 项目的名称、版本号、描述等
  • 项目中都用到了哪些包
  • 哪些包只在开发期间会用到
  • 哪些包在开发和部署时都需要用到

Node.js模块化相关推荐

  1. [Node.js] 模块化 -- path路径模块

    路径问题 nodejs中相对路径,相对的是运行这个node文件的小黑框的路径而言的. 相关变量 __dirname 获取的是当前这个文件所在的这个文件夹的绝对路径 __filename 拿到的是当前这 ...

  2. Node.js模块化开发(非常详细,满满的干货)

    下面是对Node.js模块化开发的整理,西洼港可以帮助到有需要的小伙伴~ 文章目录 Node.js模块化开发 JavaScript开发弊端 Node.js模块化开发 模块成员导出的export方法 模 ...

  3. Node.js 模块化的操作,简单明了的代码帮助你明白后端的实现和前端之前的交互,及解决跨域等问题

      Node.JS 模块化 1.require 导入模块const http=require('http')2.exports 导出模块db={name:'jine',age:22} module.e ...

  4. Node.js模块化开发

    Node.js模块化开发 一.Node.js模块化开发 二.系统模块 1.什么是系统模块 2.系统模块fs文件操作 3.系统模块path路径操作 三.第三方模块 1.什么是第三方模块 2.获取第三方模 ...

  5. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  6. Node.js模块化开发||Node.js中模块化开发规范

    JavaScript开发弊端 a.js b.js JavaScript在使用时存在两大问题,文件依赖和命名冲突. 生活中的模块化开发 软件中的模块化开发 app.j user.一个功能就是一个模块,多 ...

  7. Node.js 模块化开发

    JavaScript在使用时存在两大问题,文件依赖和命名冲突. 文件依赖:文件之间的依赖关系,通过文件来自动维护,而不需要人工分析 命名冲突:JavaScript中不同js文件,变量是完全开放的,相同 ...

  8. 了解node.js模块化和npm包

    模块化-理解模块化 根目录 ├── index.html # 主页的页面 ├── index.js # 主页需要用到的js代码 │ └── getData() # 是index.js中定义的函数 └─ ...

  9. JS模块化(node.js模块化和es6模块化)

    JS 模块化 模块化概念 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分为若干模块的过程,模块是可组合.分解和更换的单元. 模块化可提高代码的复用性和可维护性,实现按需加载. 模块化规范是对代码 ...

最新文章

  1. Netty面试题 汇总
  2. java javac javap 命令使用简介
  3. 计算机二级评卷看结果还是步骤,计算机二级评分严格吗 步骤错了有分吗
  4. 阿里云容器网络文件系统 CNFS 1.0 发布,体验云原生时代的容器共享存储
  5. HoloLens开发手记 - HoloLens shell概述 HoloLens shell overview
  6. 在jsp文件中通过超链接访问servlet_Eclipse中创建Servlet
  7. 数据库杂谈(三)——关系代数
  8. 红帽linux怎么装文件夹,红帽linux怎么安装第三方字体?
  9. 400集python入门到精通_2020年最强Python学习路线+教程,400集带你从入门到精通
  10. 图片切换ajax,jQuery AJAX全屏图文幻灯切换
  11. qq发文件大小上限_微信再两个放大招!网友:QQ可以卸载了?
  12. linux协议栈网桥部分之cam表操作,Docker网络基础 - Linux网桥工作原理与实现
  13. 计算机创建不了文本文档,电脑系统没有新建文本文档怎么解决?
  14. 利用树莓派为HP LaserJet 1020配置无线打印功能
  15. Mac访达查看隐藏文件的快捷键、命令行设置两种方式
  16. 【SDOI2015】星际战争(网络流)
  17. 初入职场如何时间管理课程总结-B站
  18. 使用Statsmodels在Python中进行重复测量方差分析
  19. 【美团技术团队】2014年-2022年后端文章精选篇
  20. IllegalArgumentException 异常时一个不易觉察的原因

热门文章

  1. 云计算要用5G技术,那5G是什么?
  2. python绘制对数坐标图描点,python坐标轴对数显示
  3. arch linux 包管理器,archlinux 包管理
  4. C++:实现量化设置期限结构,然后确定价格如“价格收益率”或“收益率价格”测试实例
  5. switch+ 三元运算符 +while +do while +for
  6. windows怎么开启自动登录
  7. 关于Deepin如何连接有配对码的蓝牙键盘(以K480为例)
  8. Debian连接不能连接蓝牙耳机
  9. 万邦淘宝/天猫获得淘口令真实url API 返回值说明
  10. 如何实现一个手帐 APP开发