nodejs中的module.exports 与 require
list.js
exports.f = function(f){} module.exports.hello = "hello" console.log(module)
index.js
const a = require('./list') console.log(a)
结果:
Module { id: 'D:\\DEV\\nodejs\\list.js', exports: { f: [Function], hello: 'hello' }, parent: Module { id: '.', exports: {}, parent: null, filename: 'D:\\DEV\\nodejs\\index.js', loaded: false, children: [ [Circular] ], paths: [ 'D:\\DEV\\nodejs\\node_modules', 'D:\\DEV\\node_modules', 'D:\\node_modules' ] }, filename: 'D:\\DEV\\nodejs\\list.js', loaded: false, children: [], paths: [ 'D:\\DEV\\nodejs\\node_modules', 'D:\\DEV\\node_modules', 'D:\\node_modules' ] } { f: [Function], hello: 'hello' }View Code
注意:exports快捷方式其实就是exports指向了module.exports。module.exports 可以直接赋值。以上例子a = module.exports。
ES2015中export,import,impot * as xx, export default
导出导入的对应关系如下:
// circle.js export function area(radius) { return Math.PI * radius * radius; } export function circumference(radius) { return 2 * Math.PI * radius; } // main.js import { area, circumference } from './circle'; console.log('圆面积:' + area(4)); console.log('圆周长:' + circumference(14));
import * as circle from './circle'; console.log('圆面积:' + circle.area(4)); console.log('圆周长:' + circle.circumference(14));
export default
// export-default.js export default function () { console.log('foo'); } // import-default.js 可以自定义名字 import customName from './export-default'; customName(); // 'foo'
typescript
export =
和 import = require()
CommonJS和AMD的环境里都有一个exports
变量,这个变量包含了一个模块的所有导出内容。
CommonJS和AMD的exports
都可以被赋值为一个对象
, 这种情况下其作用就类似于 es6 语法里的默认导出,即 export default
语法了。虽然作用相似,但是 export default
语法并不能兼容CommonJS和AMD的exports
。
为了支持CommonJS和AMD的exports
, TypeScript提供了export =
语法。
export =
语法定义一个模块的导出对象
。 这里的对象
一词指的是类,接口,命名空间,函数或枚举。