我一直在阅读试图模仿Medium.com的Medium.js Open Source Project。
在阅读时,我注意到代码中有一个模式。主要是,每隔一段时间就会召集一次IIFE来做各种各样的事情。
(function(Medium) {
"use strict";
//do stuff
})(Medium);
(function(Medium) {
"use strict";
//do stuff
})(Medium);
(function(Medium) {
"use strict";
//do stuff
etc.
为什么代码被区分为这样?无法同时调用它们,为什么要调用一系列IFFE语句?这是一种常见的模式吗?您可以在上面查看我的链接,查看我所指的完整代码。
答案 0 :(得分:1)
如果查看the source files,您会看到每个单独的组件都是在单独的JavaScript文件中开发的。 A build script用于将所有这些脚本连接在一起,并生成您正在查看的文件。
通过这种方式开发,您可以只使用所需的组件构建自己的自定义构建。通过在IIFE中将函数组包装在一起,他还可以避免在全局和每个函数中设置"use strict"
。如果需要在一组API之间对变量进行着色,则允许在IIFE内声明变量,而不会与其他模块或全局空间中的变量发生冲突。
但主要优点是开发人员可以将库开发为多个不同的文件,您可以选择只包含项目中需要的文件。
答案 1 :(得分:1)
如果查看src/Medium
目录,您可以看到每个IIFE都是单独的文件,其中许多文件在tests
目录中都有匹配的文件。
他们将这些代码分开,这样他们就可以将代码分成小的可测试模块,并使用IIFE来扩展具有新功能的existsin Medium对象。
Medium.js
文件是构建过程的结果,该过程会合并src/Medium
文件夹中的所有文件。