require 方法详解

在 NodeJS 中有一个方法是我们使用频率最高的,那就是 require 方法。NodeJs 遵循 CommonJS 规范,该规范的核心是通过 require来加载其他依赖的模块。

几个问题

  1. module.exports 或者 exports 是全局变量吗?
  2. 模块的加载是同步还是异步?
  3. 循环引用会不会产生性能问题或者导致错误?

什么是 CommonJS

每一个文件就是一个模块,拥有自己独立的作用域,变量,以及方法等,对其他的模块都不可见。CommonJS 规范规定,每个模块内部,module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(即module.exports)是对外的接口。

Node 模块的分类

  1. build-in modules —— Nodejs 中以 C++ 形式提供的模块。
  2. constant module —— Nodejs 中定义常量的模块。
  3. native module —— Nodejs 中以 javascript 形式提供的模块。
  4. 第三方module —— 由第三方提供的模块。

module 对象

NodeJs 内部提供一个 Module 构建函数。所有模块都是 Module 的实例。

每个模块内部,都有一个 module 对象,代表当前模块。它有以下属性。

  • module 对象的属性

    • module.id 模块的识别符,通常是带有绝对路径的模块文件名。
    • module.filename 模块的文件名,带有绝对路径。
    • module.loaded 返回一个布尔值,表示模块是否已经完成加载。
    • module.parent 返回一个对象,表示调用该模块的模块(程序入口文件的module.parent为null)
    • module.children 返回一个数组,表示该模块要用到的其他模块。
    • module.exports 表示模块对外输出的值。
  • module.exports 属性
    module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

  • exports 变量

我们有时候会这么写:

// test.js
function test(){
   
    console.log(test);
}
export.test = test;

// result.js
const test = require("./test")

这样也可以拿到正确的结果,这是因为:exports 变量指向 module.exports。这等同在每个模块头部,有一行这样的命令。

var exports = module
  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Vue中,require是一个用于导入模块或资源的全局方法。它可以用来引入JSON文件、图片以及其他类型的文件。require方法可以通过指定文件路径来导入文件。具体可以通过三种方式进行引入。 第一种方式是使用require方法直接引入JSON文件。这可以通过在代码中使用require方法并提供文件路径来实现。例如,可以通过以下方式引入一个名为data.json的JSON文件: const data = require('./data.json'); 第二种方式是使用require.context方法遍历文件夹并获取指定文件。require.context方法接受四个参数:目录路径、是否遍历子目录、匹配文件的正则表达式、模式(默认为同步)。使用require.context方法可以方便地导入多个文件。例如,可以使用以下代码导入指定文件夹下的所有图片文件: const images = require.context('./images', false, /\.png$/); const imagePaths = images.keys(); imagePaths.forEach(path => { const image = images(path); console.log(image); }); 第三种方式是直接使用require方法引入图片。可以通过提供图片的相对路径来引入图片文件。例如,可以使用以下代码引入名为logo.png的图片: const logo = require('./logo.png'); console.log(logo); 总结来说,Vue中的require方法可以用于引入模块、JSON文件和图片等资源。可以通过直接使用require方法或使用require.context方法来实现导入文件的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程三昧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值