Common.js规范

为什么需要CommonJs规范:

JS没有模块系统、标准库较少、缺乏包管理工具;为了让JS可以在任何地方运行,以达到Java、C#、PHP这些后台语言具备开发大型应用的能力;

定义和加载模块

在CommonJs规范中:

  1. 一个文件就是一个模块,拥有单独的作用域;

  2. 普通方式定义的变量、函数、对象都属于该模块内;

  3. 通过require来加载模块;

  4. 通过exportsmodul.exports来暴露模块中的内容;

模块中的所有代码都运行在模块作用域,不会污染全局作用域;同一个模块可以多次加载,但只会在第一次加载的时候运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果;模块的加载顺序,按照代码的出现顺序是同步加载的;

__dirname代表当前模块文件所在的文件夹路径,__filename代表当前模块文件所在的文件夹路径+文件名;

require(同步加载)基本功能:读取并执行一个JS文件,然后返回该模块的exports对象,如果没有发现指定模块会报错;

模块内的exports:为了方便,node为每个模块提供一个exports变量,其指向module.exports,相当于在模块头部加了这句话: var exports = module.exports,在对外输出时,可以给exports对象添加方法,PS:不能直接赋值(因为这样就切断了exportsmodule.exports的联系);

划重点

  1. 一个文件就是一个模块,模块中所有的代码都运行在模块作用域中。在模块中定义的变量、函数、对象都属于模块,不会污染全局作用域。
  2. 同一个模块可以加载多次,但只会在第一次加载的时候运行一次,然后运行结果就被缓存了,以后再加载就直接读取缓存结果。模块的加载方式是同步顺序加载。

猜你喜欢

转载自blog.csdn.net/weixin_33676492/article/details/91367120