首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Node.js自定义模块

Node.js自定义模块

作者头像
兮动人
发布2021-06-11 19:22:43
发布2021-06-11 19:22:43
1.5K00
代码可运行
举报
文章被收录于专栏:兮动人的博客兮动人的博客
运行总次数:0
代码可运行

Node.js自定义模块

require是一个方法,它的作用就是用来加载模块的

  • 在 Node中,模块有三种:
    • 具名的核心模块,例如fs、 http
    • 用户自己编写的文件模块

注意:相对路径必须加 ./ 可以省略后缀名(.js) 相对路径中的./不能省略,否则报错,省略代表的是核心模块

代码语言:javascript
代码运行次数:0
运行
复制
//可以
require('./b.js')

//推荐:可以省略后缀名
require('./b')

案例1:在 a.js 中加载执行 b.js

  • a.js
代码语言:javascript
代码运行次数:0
运行
复制
console. log('a start')
require('./b.js')
console.log('a end')
  • b.js
代码语言:javascript
代码运行次数:0
运行
复制
console.log('b.js文件被加载执行了')
  • 执行:

案例2:a.js 中加载 b.js 、c.js

  • a.js
代码语言:javascript
代码运行次数:0
运行
复制
console. log('a start')
require('./b.js')
console.log('a end')
  • b.js
代码语言:javascript
代码运行次数:0
运行
复制
console.log( 'b start' )
require('./c.js ')
console.log( 'b end ' )
  • c.js
代码语言:javascript
代码运行次数:0
运行
复制
console.log('ccc')
  • 执行:
  • require就是加载执行文件中的代码

在 Node 中,没有全局作用域,只有模块作用域

  • 外部访问不到内部
  • 内部也访问不到外部
  • 默认都是封闭的
  • 既然是模块作用域,那如何让模块与模块之间进行通信
  • 有时候,我们加载文件模块的目的不是为了简简单单的执行里面的代码,更重要是为了使用里面的某个成员

案例3:没有被导出的变量或方法会找不到对象

  • a.js
代码语言:javascript
代码运行次数:0
运行
复制
var foo = 'aaa'

console.log('a start')

function add(x, y) {
  return x + y
}

require('./b.js')
console.log('a end')
console.log(‘foo的值是:', foo)
  • b.js
代码语言:javascript
代码运行次数:0
运行
复制
console.log('b start')
console.log(add(10,20))
var foo = " bbb'
require('./c.js ')console.log('b end')
  • 执行:

加载与导出

require 方法有两个作用:

  1. 加载文件模块并执行里面的代码
  2. 拿到被加载文件模块导出的接口对象 在每个文件模块中都提供了一个对象:exports exports 默认是一个空对象 你要做的就是把所有需要被外部访问的成员挂载到这个 exports 对象中

案例4:调用 b.js 对象中的值及方法

a.js

代码语言:javascript
代码运行次数:0
运行
复制
var bExports = require('./b')

console.log(bExports.foo)

console.log(bExports.add(10, 30))

b.js

代码语言:javascript
代码运行次数:0
运行
复制
var foo = 'bbb'

exports.foo = 'hello'

exports.add = function (x, y) {
  return x + y
}

案例5:调用b.js中的 age 的值

a.js

代码语言:javascript
代码运行次数:0
运行
复制
var bExports = require('./b')

console.log(bExports.age)

b.js

代码语言:javascript
代码运行次数:0
运行
复制
var age = 18

exports.age = age

结果:18

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Node.js自定义模块
    • require是一个方法,它的作用就是用来加载模块的
      • 案例1:在 a.js 中加载执行 b.js
      • 案例2:a.js 中加载 b.js 、c.js
    • 在 Node 中,没有全局作用域,只有模块作用域
      • 案例3:没有被导出的变量或方法会找不到对象
    • 加载与导出
      • require 方法有两个作用:
      • 案例4:调用 b.js 对象中的值及方法
      • 案例5:调用b.js中的 age 的值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档