从nodejs,es6,typescript方面去弄清楚exports,require,export,import,export=
Posted GavinBirkhoff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从nodejs,es6,typescript方面去弄清楚exports,require,export,import,export=相关的知识,希望对你有一定的参考价值。
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 odejslist.js‘, exports: { f: [Function], hello: ‘hello‘ }, parent: Module { id: ‘.‘, exports: {}, parent: null, filename: ‘D:DEV odejsindex.js‘, loaded: false, children: [ [Circular] ], paths: [ ‘D:DEV odejs ode_modules‘, ‘D:DEV ode_modules‘, ‘D: ode_modules‘ ] }, filename: ‘D:DEV odejslist.js‘, loaded: false, children: [], paths: [ ‘D:DEV odejs ode_modules‘, ‘D:DEV ode_modules‘, ‘D: ode_modules‘ ] } { f: [Function], hello: ‘hello‘ }
注意: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 =
语法定义一个模块的导出对象
。 这里的对象
一词指的是类,接口,命名空间,函数或枚举。
以上是关于从nodejs,es6,typescript方面去弄清楚exports,require,export,import,export=的主要内容,如果未能解决你的问题,请参考以下文章