Skip to content

Commit ec93e4e

Browse files
fix structure
1 parent 64c879d commit ec93e4e

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

_posts/2019-04-13-翻译javascript模块化入门.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ myModuleInstance.goodbye(); // 'goodbye!'
183183
1.由于用到的模块都需要require()所以依赖关系就变得清晰
184184
2.每个模块不需要写全局变量
185185
这里需要注意是require()是阻塞的。而javascript又是单线程的,这在server端通常没什么问题因为require的时候只是去读磁盘中的文件然后加载。但是在浏览器中这意味着一个网络请求,唯一的线程会一直等到require的模块文件返回load完毕。
186-
### AMD
186+
#### AMD
187187
接着刚才的问题说。如果在浏览器端能够异步加载模块这样不就好了吗。AMD正式解决这样一个问题的技术,全称是Asynchronous Module Definition。
188188
下面给出一个AMD的例子
189189
```
@@ -193,7 +193,7 @@ define(['myModule', 'myOtherModule'], function(myModule, myOtherModule) {
193193
```
194194
define函数的第一个参数是所需要加载的模块。第二个参数是回调函数,刚刚加载好的模块就会作为args传进回调函数。
195195
简单来说AMD主要是适用于浏览器。
196-
### UMD
196+
#### UMD
197197
有些项目需要你同时支持AMD和CommonJS功能,那么就可以用UMD(Universal Module Definition)
198198
UMD支持刚刚说到的两种模块和定义在全局变量的模块。并且即可以在服务端也可以在浏览器端执行。
199199
下面是一个UMD的例子:
@@ -222,7 +222,7 @@ UMD支持刚刚说到的两种模块和定义在全局变量的模块。并且
222222
}
223223
}));
224224
```
225-
### ES6
225+
#### ES6
226226
刚才我们说的所有的打包方式都不是javascript原生支持的。在ES6对语法和语义的定义中,引入了模块的定义。
227227
ES6中的模块汲取了CommonJS和AMD的优点,声明式的语法和异步加载,和对循环依赖更好的支持。
228228
还有很厉害的一点是ES6模块的引入是对导出内容的实时只读(这句比较难翻,需要看下面代码理解)。在CommonJS中,import只是对export的拷贝。这是CommonJs的例子

0 commit comments

Comments
 (0)