10月
17
在用webpack打包的时候,所打包的文件,会经常使用到 module.exports,exports,export和export default,import与require 这些语法。看起来眼花缭乱,其实,都是有迹可循的。
基本问题
- module.exports 和 exports 是属于 CommonJS 模块规范。
-
export 和 export default 是属于 es6 语法。
-
同样 import 和 require 分别属于 es6 和 CommonJS。
-
module.exports 和 exports、export 和 export default 都是导出模块。 import 和 require 则是导入模块。
module.exports 和 exports 的区别与联系
Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
继续阅读
10月
17
前边
es6 语法使用也越来越多了,本来已经落后了,再不学习就更落后落后了。
es6模块设计思想更是突出。es6模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。es6模块加载是静态加载,使得静态分析成为可能。有了它,就能进一步拓宽 JavaScript 的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。
es6模块自动采用严格模式,不管你有没有在模块头部加上"use strict";。
既然是模块,模块功能怎么构成呢。模块功能有 export 和 import 两部分构成。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
export
一个模块,就是一个独立的文件。通过export,将内部的变量,对象,方法,类输出给外部。并且export在顶级使用,如果在块内部使用就会报错。
export有以下一些规定。
- export 必须在顶级使用。
-
export命令规定的是对外的接口。必须用{}包裹起来,或直接 export。
-
export 输出接口与外是动态绑定的。 无论改变哪个,该数据都会改变。
-
既然export是输出接口,就有一个接受接口。接受用import,也需要要用{}包裹起来。
-
一个模块中,可以有多个 export。
-
export可以使用 as 关键字重命名。
继续阅读