CommonJS模块化与规范
CommonJS模块的特点:
1-> 所有代码都运行在模块作用域,不会污染全局作用域。
Node 应用由模块组成,采用 CommonJS 模块规范。
每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
2-> 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
3-> 模块加载的顺序,按照其在代码中出现的顺序。
实际应用:
require 引入模块 输入模块
使用方法:require('模块名')
不指定路径: 先找系统模块-> 再从项目环境找node_modules|bower_components (依赖模块)->not found
指定路径 : 指定路径 -> not found
require(./utils).xx 按需引用
exports 导出,批量输出 都是属性
exports.自定义属性=值(any) 输出带接口 require(模块文件名)=modA modA是个模块实例{自定义属性}
module 默认输出 any 只能输出一次
module.exports = {
自定义属性:值
}
module.exports=对象/fn/class require('..')=modA modA 是一个fn或者是类class本身.
注:commonJS 是 nodejs 默认模块管理方式,不支持es6的模块化管理方式,但支持所有es6+语法.