Node.js之模块化

哈喽小伙伴们,最近都在看什么剧啊,感觉一直都处于剧荒状态,一个等了超级久的剧但是没几天就播完了,还没有看爽就没了,现在的剧也是一直处于更新中,非常慢,导致每天都不知道要干点儿啥,毕业设计没搞完但是也不想弄,还有毕业论文,总觉得离毕业还有很久,没想到这么快就到时间了,这一毕业就再也没有学生这个头衔了,也不能再逃课,没有八百一年的宿舍,没有每天吃喝玩乐的同学了......


http部分我们可以稍微告一段落,今天想和大家分享的是Node.js中的模块化。

一、模块化的基本概念

1.什么是模块化

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

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

把代码进行模块化拆分的好处

①提高了代码的复用性

②提高了代码的可维护性

③可以实现按需加载

2.模块化规范

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

例如:

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

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

3.Node.js中模块的分类

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

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

二、模块使用

1.加载模块

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

// 加载内置的fs模块
const fs = require ('fs')
// 加载用户的自定义模块
const custom = require('./index.js')
// 加载第三方模块(关于第三方模块的下载和使用,会在后面分享到)
const moment = require('moment')

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

2.模块作用域

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

为了更好理解,我们做一个小例子,首先打开vscode在我们文件夹里创建一个js文件

// 在模块作用域内定义西药的常量username
const username = '张三'
// 定义一个sayHello函数
function sayHello(){
    console.log('大家好,我是'+username)
}

 在同一文件夹下创建另一个.js文件用来测试

// 导入自定义模块
const zidingyi = require('./mokuaizuoyongyu')
console.log(zidingyi)

 然后我们打开cmd或者PowerShell窗口,或者在vscode终端进行运行

我们可以发现,终端并没有给我们输出我们所设置的”张三“,而是输出了{ } 空对象,是因为在我们建立的第二个js文件中,无法访问到第一个文件夹模块中的私有成员。

模块作用域的好处:防止了全局变量污染的问题

我们可以在刚才的文件夹内创建一个.html文件然后再body随便输入点内容,再分别创建两个js文件,一个文件内容为:var username = 'zs',另一个为:var username = 'ls',然后再html文件里插入两个文件。

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=\, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>你好,world</p>
    <script src="./reg.js"></script>
    <script src="./login.js"></script>
    <script>
        console.log(username)
    </script>
</body>
</html>

第一个js文件:

var username = 'zs'

第二个js文件 

var username = 'ls'

然后在浏览器打开.html文件,按f12,点击控制台,会发现只有”ls“一个数据

 这是因为两个文件同时赋给了username两个不同的值,所以发生了混乱,只能显示最近赋给的值,但是在两个js文件中,他们还是可以都显示各自的内容的。

以上就是今天的分享了,明天会和大家介绍怎么样模块化。


今天突然发现了一个宝藏歌手,他叫陈泫孝,他有首非常好听的歌,很久之前就知道这个歌,现在听也依然感觉非常舒心。

静悄悄

祝:

晚安,好梦

                

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值