一、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.jsmodule02.js运行的结果为:好了好了,成功了哦!!!模块的表示我们使用 require() 引入外部模块时,使用的就是模块的标识,我们可以通过模块的标识来找到指定的模块。模块分为两大类:核心模块: 由node引擎提供的模块。核心模块的标识还是路径吗,其实可以是模块的名字文件模块: 由用户自己创建的模块。文件模块的标识就是我们定义模块的路径,可以是相对或绝对路径。学完了得练一练吧,干起来!!!定义:引入:执行结果:搞定!!!!!!不积跬步无以至千里!!!