Node.js —— 模块系统

一、使用Node编写应用程序主要是使用:
1、EcmaScript

2、核心模块:文件操作fs、http服务的http等

3、第三方模块: art-template等
(1)必须通过npm下载才可以使用

4、自定义模块:其实就是自己创建的文件


二、模块化的概念:如果一个平台有文件作用域、通信规则,就是符合模块化(加载require、导出)


三、CommonJS模块规范
1、模块作用域

2、使用 require()方法 加载模块
(1)语法:var 自定义变量名 = require(‘模块’) ;
    - 注意这里的‘模块’分为三种: 核心模块、第三方模块、自定义模块
(2)作用
    <1>执行被加载模块中的代码
    <2>得到被加载模块中的exports对象

3、使用 exports接口对象用来 导出模块中的成员
    Node中是模块作用域,默认文件中所有的成员只在当前文件模块有效
(1)导出多个成员(必须在对象中): 直接使用exports起到的是一个挂载的作用,也就是说,要通过“ 对象.成员”来 访问成员
(2)导出单个成员(拿到的就是函数、字符串、数字、数组等):如果一个模块需要 直接导出某个成员,而不是挂载到exports对象上,就要使用 module.exports = 成员
    <1>后者会覆盖前者
    <2>这个方式也可以用来导出多个成员:
        module.exports = {}
    <3>直接给exports赋值是不管用的:因为 最后return的是module.exports,而不是exports,exports的修改是不影响module.exports的
        - 给exports重新赋值会断开和module.exports之间的引用
        - 给 module.exports重新赋值也会断开
(3)如果实在分不清exports和module.exports,可以只使用module.exports

4、原理解析:在Node中,每个模块内部都有一个自己的module对象,该对象中又有一个成员exports对象,对外导出成员时,是把导出的成员挂载到module.exports中。而且Node提供了一个专门的变量exports,等于module.exports,所以导出成员的时候可以直接把成员挂载到exports上。

等价于:









你可能感兴趣的:(Node.js —— 模块系统)