一、commonJs范例
说到commonjs的范例,为何会有这个东西的涌现呢?这就不得不说ECAMAScript的缺点,那末有什么缺点,以下几点:
1、没有模块体系
2、规范库较少
3、没有规范接口
4、缺少治理体系
模块化
1、假如程序设计的范围到达一定水平,则必需对其举行模块化。
2、模块化可以有多种形式,然则最少应当供应可以将代码分割为多个源文件的机制。
3、CommonJs的模块功用可以协助我们处理该题目。
CommonJs范例
1、commonJs范例的提出,重要为了填补当前Javascript没有规范的缺点。
2、commonJs范例为Js指定了优美的愿景,愿望js可以在任何地方运用。
3、commonJs对模块的定义非常简朴
- 模块援用
- 模块定义
- 模块标识
模块的定义
模块的援用
这个时刻我怎样考证我的模块1引入胜利了呢? 是否是我实行模块2的代码,看看模块1是否是被实行呀!
这时刻作为初学者的我来讲,以为这个引入没有意义啊,为何呢?由于这个不就相当于实行了模块1嘛,我想一定不是这模样的啊,一定是要在模块1中定义的变量或许要领,在模块2中可以运用才是有意义的嘛,那末我们在模块1中先如许捣鼓两个变量看看行不行? 实践出真知,走起!
module01.js:
module02.js:
天啦噜!卧槽!!!!白引入了啊。
实在不然,在Node中的运用不是这模样的兄dei姐mei。
运用require()引入模块今后,该函数会返回一个对象,这个对象代表的是引入的模块
module02.js
哎呦这个怎样一贫如洗啊,我在模块1中定义的变量呢?? 怎样弄啊? 烦死了,兄弟不要烦,另有一个知识点,须要通知你。
在Nodejs中,每个js文件中的js代码自力运转在一个函数中的,那末在全局中就看不见了,所以不是全局作用域
所以一个模块中的变量和函数在其他的模块中是无法访问的。
那末人人都是密闭的玩,那模块和模块之间就没得玩了,么的聊了,那末怎样办,就须要我的模块向外部暴露属性或许要领。
我们可以经由过程exports
【看成一个全局变量】,来向外部暴露变量或许要领,
运用体式格局:
- 只须要将须要暴露给外部的变量和要领设置为exports的属性即可
module01.js
module02.js运转的效果为:
好了好了,胜利了哦!!!
模块的示意
我们运用 require() 引入外部模块时,运用的就是模块的标识,我们可以经由过程模块的标识来找到指定的模块。
模块分为两大类:
- 中心模块: 由node引擎供应的模块。
中心模块的标识照样途径吗,实在可所以模块的名字
- 文件模块: 由用户本身建立的模块。
文件模块的标识就是我们定义模块的途径,可所以相对或绝对途径。
学完了得练一练吧,干起来!!!
定义:
引入:
实行效果:
搞定!!!!!!不积跬步无以致千里!!!