模块化

这篇具有很好参考价值的文章主要介绍了模块化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目标

  • 能够说出模块化的好处
  • 能够知道CommonJS规定了哪些内容
  • 能够说出Node.js中模块的三大分类各自是什么
  • 能够使用npm管理包
  • 能够了解什么是规范的包结构
  • 能够了解模块的加载机制

二、目录

  • 模块化的基本概念
  • Node.js中模块的分类
  • npm与包
  • 模块的加载机制

1.模块化的基本概念

1.1什么是模块化

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

1.现实生活中的模块化

模块化

 2.编程领域中的模块化

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块

模块化

 1.2模块化规范

模块化

 2.Node.js中的模块化

2.1Node.js中模块的分类

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

  • 内置模块(内置模块是由Node.js官方提供的,例如fs、path、http等)
  • 自定义模块(用户创建的每个.js文件,都是自定义模块)
  • 第三方模块由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载

2.2加载模块

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

模块化

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

②在使用require加载用户自定义模块期间,可以省略.js的后缀名

2.3Node.js中的模块作用域

1.什么是模块作用域

函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。

模块化

2.模块作用域的好处

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

1.module对象

在每个.js自定义模块中都有一个moudule对象,它里面存储了和当前模块有关的信心,打印如下:

模块化

2.module.exports对象

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

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

//在一个自定义模块中,默认情况下,module。exports={}
//向module.exports对象上挂栽username属性
module.exports.username = 'zs'
    //向module.exports对象上挂栽sayHello方法
module.exports.sayHello = function() {
    console.log('大家好,我是' + username)
}
//在外界使用require导入一个自定义模块的时候,得到的成员,
//就是那个模块中,通过module.exports指向的那个对象
const m1 = require('./06.mi')
console.log(m1)

3.共享成员时的注意点

模块化

 4.exports对象

由于module.exports单词写起来比较复杂,为了简化向外共享成员的代码,Node提供了exports对象。默认情况下,exports和module.exports指向同一个对象。最终共享的结果,还是以module.exports指向的对象为准。

模块化

 最终,向外共享的结果,永远都是module.exports所指向的对象

4.exports和module.exports的使用误区

时刻谨记,require()模块时,得到的永远是module.exports指向的对象:

如果给module.exports赋值一个新对象,则会以最后复制的新对象为主(因为module.export本身就是一个对象,赋值一个新对象覆盖了本身的对象);如果给module.export赋值一个属性,则会加入到本身对象里面;永远以module.export所赋值为主;

模块化

 

模块化 模块化

模块化

 模块化

 注意:为了防止混乱,建议大家不要在同一个模块中同时使用exports和module.exports

2.5 Node,js中的模块化规范

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

CommonJS规定:

①每个模块内部,module变量代表当前模块

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

③加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块文章来源地址https://www.toymoban.com/news/detail-463510.html

到了这里,关于模块化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript模块化

    JavaScript模块化,让我们通过一个实际的例子来更好地理解。 假设我们正在开发一个简单的购物车应用,需要实现计算商品总价和展示购物车列表的功能。我们可以将这个应用划分为两个模块:`cart.js`和`main.js`。 1. cart.js模块: ```javascript // cart.js // 定义一个私有变量,用于存

    2024年02月14日
    浏览(41)
  • Rust的模块化

    Rust的模块化要从Rust的入口文件谈起。 Rust的程序的入口文件有两个 如果程序类型是可执行应用,入口文件是main.rs; 如果程序类型是库,入口文件是lib.rs; 入口文件中,必须声明本地模块,否则编译器在编译过程中,会报该模块不存在的错误。这个规则,在其它程序的编译

    2024年02月09日
    浏览(24)
  • js模块化开发

    ◼ 到底什么是模块化、模块化开发呢?  事实上模块化开发最终的目的是将程序划分成一个个小的结构;  这个结构中编写属于自己的逻辑代码,有自己的作用域,定义变量名词时不会影响到其他的结构;  这个结构可以将自己希望暴露的变量、函数、对象等导出给其结

    2024年02月13日
    浏览(41)
  • Vuex模块化管理

    如果你的项目是一个小型项目,就用不着使用模块化; 但是,如果你参与的项目是一个中大型项目,那Vuex模块化,必不可少,否则整个文件很臃肿,也很难管理。 通过模块化管理:各自模块下都有自己的state及方法,各自模块管理自己的数据,这样不容易造成混乱。 第一步

    2024年02月15日
    浏览(37)
  • js 模块化

    模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等。 模块化的整个发展历史如下: IIFE :使用自执行函数来编写模块化,特点:在一个单独的函数作用域中执行代码,避免代码冲突。 AMD :使用 require 来编写模块化,特点:依赖必须提前声明好。 CMD :使用 seaJS

    2024年02月14日
    浏览(35)
  • Nodejs三、模块化

    1、模块化的基本概念 (1)模块化是什么 模块化 是指解决一个 复杂问题 时,自顶向下逐层 把系统划分成若干模块 的过程。对于整个系统来说, 模块是可组合、分解和更换的单元 。 (2)编程领域中的模块化 编程领域中的模块化,就是 遵守固定的规则 ,把一个 大文件 拆

    2024年02月09日
    浏览(31)
  • JS模块化系统

    随着 JavaScript 开发变得越来越广泛,命名空间和依赖关系变得越来越难以处理。人们已经开发出不同的解决方案以模块系统的形式来解决这个问题。 CommonJS 是一种同步加载模块的规范,主要用于服务器端的 Node.js 环境。 top:CommonJS 加载的是一个对象(即 module.exports 属性),

    2024年02月19日
    浏览(43)
  • 解构模块化区块链

    在可扩展性方面,模块化区块链是区块链设计的最新范式。 模块化的概念起源于Layer1区块链Celestia,现在这个概念也逐渐被更多的人所关注,还有人甚至提出”模块化区块链将定义Web3创新的下一个十年“的口号。 但是,到底什么是模块化区块链,它到底能解决什么问题,它

    2024年02月01日
    浏览(32)
  • OpenHarmony模块化编译

    OpenHarmony版本:OpenHarmony 4.0 Release 编译环境:WSL2 Ubuntu 18.04 平台设备:RK3568 OpenHarmony 代码构建有build.sh和hb两种方式: 下拉的4.0代码无法直接使用hb命令 可参考搭建开发环境-安装编译工具 进行hb安装和环境配置。 在源码目录执行\\\"hb help\\\",界面打印以下信息即表示安装成功。 注

    2024年02月03日
    浏览(30)
  • webpack(一)模块化

    阶段一:基于文件的划分模块方式 概念 :将每个功能和相关数据状态分别放在单独的文件里 约定每一个文件就是一个单独的模块,使用每个模块,直接调用这个模块的成员 缺点 :所有的成员都可以在模块外被访问和修改(所有的模块都是直接在全局工作,没有【私有空间

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包