阅读开源:一系列 IIFE

Reading Open Source: a series of IIFEs

我一直在阅读试图嘲笑 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语句呢?这是一种常见的模式吗?您可以在上面查看我的 link 以获得我所指的完整代码。

If you look through the source files, you will see that each individual component is developed in a separate JavaScript file. A build script 用于将所有这些脚本连接在一起,并生成您正在查看的文件。

通过这种方式开发,您可以只使用所需的组件来构建自己的自定义版本。通过将函数组包装在一个 IIFE 中,他还可以避免全局设置 "use strict",并为每个单独的函数设置。如果需要在一组 API 之间对变量进行着色,这允许在 IIFE 中声明变量,而不会与其他模块或全局 space 中的变量发生冲突。

但主要优点是开发人员可以将库开发为多个不同的文件,并且您可以选择只包含项目中需要的文件。

如果您查看 src/Medium 目录,您会发现这些 IIFE 中的每一个都是单独的文件,其中许多在 tests 目录中都有匹配的文件。

他们像这样分离他们的代码,这样他们就可以将他们的代码分成小的可测试模块,他们使用 IIFE 来扩展现有的 Medium 对象,使其具有新的功能。

Medium.js 文件是将 src/Medium 文件夹中的所有文件合并在一起的构建过程的结果。