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


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文件中,他们还是可以都显示各自的内容的。

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


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

静悄悄

祝:

晚安,好梦

Node.js之模块化相关推荐

  1. Node.js模块化开发||Node.js中模块化开发规范

    JavaScript开发弊端 a.js b.js JavaScript在使用时存在两大问题,文件依赖和命名冲突. 生活中的模块化开发 软件中的模块化开发 app.j user.一个功能就是一个模块,多 ...

  2. node js的模块化的分类

    一.node js的模块化的分类: (1)系统模块 (2)自定义模块 二.对外输出: 对外输出东西--必须加给exports (1)单个输出: exports.xxx=??; exports.xxx= ...

  3. 【Node学习】—Node.js中模块化开发的规范

    [Node学习]-Node.js中模块化开发的规范 Node.js 规定一个JavaScript就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到 模块化内部可以使用exports对象进行 ...

  4. Node.js ES6模块化

    AMD 和 CMD 适用于浏览器端的 Javascript 模块化 CommonJS 适用于服务器端的 Javascript 模块化 ES6 语法规范中,在语言层面上定义了 ES6 模块化规范,是浏览 ...

  5. Node.js ES6 模块化的基本语法-直接导入并执行模块代码

    想单纯执行某个模块中的代码,并不需要得到模块中向外暴露的成员,可以直接导入并执行模块代码 m1.js // 当前文件模块为 m1.js for(let i = 0; i < 3; i++) { ...

  6. Node.js ES6 模块化的基本语法-按需导出与按需导入

    按需导出语法 export let s1 = 10 按需导入语法 import { s1 } from '模块标识符' m1.js // 当前文件模块为 m1.js export let s1 = ' ...

  7. Node.js ES6 模块化的基本语法-默认导出 与 默认导入

    默认导出语法 export default 默认导出的成员 默认导入语法 import 接收名称 from '模块标识符' m1.js // 当前文件模块为 m1.js let a = 10 // 定 ...

  8. Node.js 模块化开发

    JavaScript在使用时存在两大问题,文件依赖和命名冲突. 文件依赖:文件之间的依赖关系,通过文件来自动维护,而不需要人工分析 命名冲突:JavaScript中不同js文件,变量是完全开放的,相同 ...

  9. JS模块化规范对比以及在Node.js的实现

    文章目录 写在前面 JavaScript模块化的规范 Node.js 的模块化实现 AMD or CMD 代码示例 ES6模块化标准以及在Node.js的使用 写在前面 关于JavaScript的模块 ...

最新文章

  1. 【golang程序包推荐分享】go-ini、viper、godoc
  2. python进程数上限_python如何控制进程或者线程的个数
  3. 详解PyTorch编译并调用自定义CUDA算子的三种方式
  4. C语言缓冲区(缓存)详解
  5. 5.1Python函数(一)
  6. 无线多操作系统启动之uInitrd阶段NFS挂载篇
  7. android - 拍照
  8. 现金流量表的编制方法及程序
  9. 结构体成员赋值-标记化结构体初始化语法-结构体成员前面加小数点
  10. 汇编语言位向量(位映射)
  11. SQL Server远程部署
  12. python内置函数用来返回_Python内置函数用法
  13. 从事前到事后,云数据库 Redis MongoDB 安全体系全揭秘!
  14. windows获取系统补丁+匿名管道
  15. C/C++中printf和C++中cout的输出格式
  16. ollvm源码分析之控制流扁平化(3)
  17. 打开软件后跳出服务器正在运行中,win10系统打开软件提示“服务器正在运行中”的操作步骤...
  18. 实践教程 | 万字长文,值得收藏/参考的OpenCV C++基础代码
  19. linux免费私人云盘软件,Appnode+kodexplorer免费搭建私有云盘
  20. JS实现将数字金额转换为大写人民币汉字的方法

热门文章

  1. js的window.print()打印背景图片,打印背景图片无法显示
  2. 柚缘航海:Tik Tok直播带货怎么做?
  3. 大话西游2接收服务器信息失败,大话西游2移民抽签失败十余次 三转玩家怒曝武器...
  4. 生男生女真的那么重要吗?
  5. el-tree的局部刷新(懒加载)
  6. 各种“Phone”辈出 购置裸机或更划算
  7. 微信公众号最佳实践 ( 8.4)姓名测试
  8. 工业互联网平台-厂商及产品调研
  9. 张家界三日游攻略 | 张家界三天怎么玩
  10. linux nginx 配置ssl证书访问