modules

翻译github整理笔记。模块(能力一般水平有限)。

ps:在ES6模块系统中,js自动将模式变为严格模式

export

  • 在CommonJS,你可以利用将属性赋给 module.exports 来实现将属性输出。可以看到,在下面的代码快中,你可以输出对象,数组,函数,变量中的任何一个

module.exports = 1
module.exports = NaN
module.exports = 'foo'
module.exports = { foo: 'bar' }
module.exports = ['foo', 'bar']
module.exports = function foo () {}

ps: 任何一个在module中定义的变量不会提供给其他模块,除非被特定指出输出,作为一个模块的api

  • 你可以吧CommonJS中的 module.exports = 简写成 export default
export default 1
export default NaN
export default 'foo'
export default { foo: 'bar' }
export default ['foo', 'bar']
export default function foo () {}


  • 不同于CommonJS export 表达式必须写在最高作用域内,即使当加载此模块时立即调用他们

function foo () {
  export default 'bar' // SyntaxError
}
foo()
  • 命名输出项

像CommonJS一样,为了避免给module.exports分配对象,你可以给export定义绑定
下面的代码块展示了ES6模块API的定义.


export var foo = 'bar'
export var baz = 'ponyfoo'

  • 绑定,绑定,不是数值和引用。

下面是文档对于此特性的定义,

That means that a foo variable you export would be bound into the foo variable on the module, and its value would be subject to changes made to foo. I’d advise against changing the public interface of a module after it has initially loaded, though.

也就是说 export中输出的属性,将会和模块export属性绑定,当输出的属性改变时,会影响到模块的值跟着改变.文档作者建议,当加载某模块时,尽量不要修改模块公共接口,以免影响其他同时加载此模块的代码段。

export var foo = 'bar'
setTimeout(() => foo = 'baz', 500)

  • 输出列表

var foo = 'ponyfoo'
var bar = 'baz'
export { foo, bar }

可以起一个别名.


export foo as ponyfoo

也可以在输出列表中 as default

export { foo as default,bar}

import

不多说了上代码

import {default, map} from 'lodash'
import {default as _, map} from 'lodash'
import _, {map} from 'lodash'


import * as _ from 'lodash'   //所有

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容