node.js的板块化及reqire与exports释义

作者 : 开心源码 本文共1510个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共93人阅读

板块引入

板块化是node.js的核心概念,node.js对于服务端的操作都是封装成一个个独立的核心板块,以文件读写板块File System为例:

// 引入文件操作板块let fs = require('fs')let filePath = './data/清平调.md'// 覆盖式写入数据fs.writeFile(filePath, "云想衣裳花想容\n", function (error) {})// 追加写入fs.appendFile(filePath, "春风拂槛露华浓\n", function (error) {})// 读取数据fs.readFile(filePath, function (error, data) {    console.log(data.toString())})

执行结果:

?  01 [master] ? node 07.js云想衣裳花想容春风拂槛露华浓

node.js板块

require

node.js是经由require关键字引入板块,板块分为:自带的核心板块,自己设置的板块。我们以自己设置板块为例解析require的作使用:

在同级目录下新建4个文件:

?  custom_module [master] ? tree.├── 01.js├── 02.js├── 03.js├── 04.js

01.js

let poem = '云想衣裳花想容'console.log(poem)require('./02.js')

02.js

let poem = '春风拂槛露华浓'console.log(poem)require('./03.js')

03.js

let poem = '若非群玉山头见'console.log(poem)require('./04.js')

04.js

let poem = '会向瑶台月下逢'console.log(poem)

01.js引入了02.js, 02.js引入了03.js, 03.js引入了04.js,这四个文件都有一个同名变量poem,让我们运行一下,看同名变量能否会被覆盖

?  custom_module [master] ? node 01.js云想衣裳花想容春风拂槛露华浓若非群玉山头见会向瑶台月下逢

由此可见,不同的板块有不同的命名空间,即便变量名称一致也不会相互污染。以上的侄子在require文件时,就直接执行此文件的内容,但假如我们是想调使用板块里面的数据或者方法呢?

此时,就需要用exports将板块的变量/方法暴露出来,以供引使用方调使用。

exports

在node中,一个文件就是一个板块。实际上,为了让各个文件里的变量互不干扰,node让每个板块都放在一个闭包中执行,这样实现的板块的隔离。而要让板块间相互联络,就需要暴露变量。而exports就是负责对外暴露变量

05.js

let myExports = require('./06.js');console.log(myExports);console.log(myExports.name);let name = '地球三体组织'let goal = '消灭人类暴政,世界属于三体'console.log(myExports.goal(name, goal));

06.js

let name = '三体'exports.name = nameexports.goal = function (name, goal) {    return name + '的目标是:' + goal}

执行结果:

?  custom_module [master] ? node 05.js{ name: '三体', goal: [Function] }三体地球三体组织的目标是:消灭人类暴政,世界属于三体

由此可知,exports是一个对象,假如板块要对外暴露变量,就需要将变量赋予作为exports的属性

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » node.js的板块化及reqire与exports释义

发表回复