入门nodeJs(第二课)

一、commonJs规范

说到commonjs的规范,为什么会有这个东西的出现呢?这就不得不说ECAMAScript的缺陷,那么有什么缺陷,如下几点:

1、没有模块系统
2、标准库较少
3、没有标准接口
4、缺乏管理系统

模块化

1、如果程序设计的规模达到一定程度,则必须对其进行模块化。
2、模块化可以有多种形式,但是至少应该提供能够将代码分割为多个源文件的机制。
3、CommonJs的模块功能可以帮助我们解决该问题。

CommonJs规范

1、commonJs规范的提出,主要为了弥补当前Javascript没有标准的缺陷。
2、commonJs规范为Js指定了美好的愿景,希望js能够在任何地方使用。
3、commonJs对模块的定义十分简单

  • 模块引用
  • 模块定义
  • 模块标识
模块的定义

clipboard.png

模块的引用

clipboard.png

这个时候我怎么验证我的模块1引入成功了呢? 是不是我执行模块2的代码,看看模块1是不是被执行呀!

clipboard.png

这时候作为初学者的我来说,觉得这个引入没有意义啊,为什么呢?因为这个不就相当于执行了模块1嘛,我想肯定不是这样子的啊,肯定是要在模块1中定义的变量或者方法,在模块2中可以使用才是有意义的嘛,那么我们在模块1中先这样捣鼓两个变量看看行不行? 实践出真知,走起!
clipboard.png

module01.js:
clipboard.png

module02.js:
clipboard.png

天啦噜!卧槽!!!!白引入了啊。

clipboard.png

其实不然,在Node中的使用不是这样子的兄dei姐mei。

使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块

module02.js
clipboard.png

clipboard.png

哎呦这个怎么一穷二白啊,我在模块1中定义的变量呢?? 怎么弄啊? 烦死了,兄弟不要烦,还有一个知识点,需要告诉你。

在Nodejs中,每一个js文件中的js代码独立运行在一个函数中的,那么在全局中就看不见了,所以不是全局作用域
所以一个模块中的变量和函数在其他的模块中是无法访问的。

那么大家都是密闭的玩,那模块和模块之间就没得玩了,么的聊了,那么怎么办,就需要我的模块向外部暴露属性或者方法。
我们可以通过exports【当作一个全局变量】,来向外部暴露变量或者方法,
使用方式:

  • 只需要将需要暴露给外部的变量和方法设置为exports的属性即可

module01.js
clipboard.png

module02.js运行的结果为:

clipboard.png

好了好了,成功了哦!!!

clipboard.png

模块的表示

我们使用 require() 引入外部模块时,使用的就是模块的标识,我们可以通过模块的标识来找到指定的模块。
模块分为两大类:

  • 核心模块: 由node引擎提供的模块。
    核心模块的标识还是路径吗,其实可以是模块的名字

clipboard.png

  • 文件模块: 由用户自己创建的模块。
    文件模块的标识就是我们定义模块的路径,可以是相对或绝对路径。

学完了得练一练吧,干起来!!!

定义:
clipboard.png

引入:
clipboard.png

执行结果:

clipboard.png

搞定!!!!!!不积跬步无以至千里!!!

clipboard.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值