var c1 = require( 'test.js' )
var c2 = require('test.js')
c1.output()
c2.output()
通常一个文件就是一个模块,有时一个文件需要另一个文件的内容,就可以使用require()导入另一个模块,
引入模块需经历三个步骤:
路径分析, 文件定位, 编译执行
如果直接使用require()另一个模块的全部内容都导入会导致命名重复。比如
test1.js文件中有
var i = 0
function output( ){
++i
return i
}
test2.js文件中有
require( 'test1.js' )
var i
这里的i就出现了两次
为了避免这种命名污染可以考虑exports,看例子就明白了
var i = 0
function output( ){
++i
return i
}
test1.js文件中有
var i = 0
function output( ){
++i
return i
}
exports.output = output
test2.js文件中有
var c1 = require( 'test1.js' )
var c2 = require('test1.js')
c1.output()
c2.output()
exports对象是test1.js模块的导出对象,这里使用require( 'test1.js' ) 导出的其实是exports。这样test2.js文件中的
c1.output()相当于exports.output(),对于c2.output()也是,如此输出为1 2