我只是查看angular-flash
的源代码,如下所示:
https://github.com/gtramontina/angular-flash/blob/master/angular-flash.js
任何人都可以向我解释他是如何创建flash
模块
(function (root, factory) {
if (typeof module !== 'undefined' && module.exports) {
// CommonJS
module.exports = factory(root, require('angular'));
} else if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], function (react, angular) {
return (root.angularFlash = factory(root, angular));
});
} else {
// Global Variables
root.angularFlash = factory(root, root.angular);
}
}(this, function (window, angular) {
return angular.module('flash', []);
}));
我不理解的是正在接收的参数factory
和root.angularFlash
变量?这如何创建angular module flash
?
我没有看到angularFlash
变量过于使用的任何地方?
答案 0 :(得分:0)
(function (root, factory) {
if (typeof module !== 'undefined' && module.exports) {
// CommonJS
module.exports = factory(root, require('angular'));
} else if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], function (react, angular) {
return (root.angularFlash = factory(root, angular));
});
} else {
// Global Variables
root.angularFlash = factory(root, root.angular);
}
}(this, function (window, angular) {
return angular.module('flash', []);
}));
如果你看一下底部的IIFE,它会调用一个匿名函数作为第二个参数,它被命名为factory,定义了角度模块flash:
factory = function (window, angular) {
return angular.module('flash', []);
}
因此,当调用工厂时,它基本上定义了一个名为flash的模块。
答案 1 :(得分:0)
假设此脚本在浏览器上下文中运行(与CommonJS或AMD相反)。
从function (root, factory) ...
开始的外部函数是立即调用的函数表达式或IIFE的示例。使用参数this
和函数(绑定到factory
参数)调用此外部函数。在这种情况下,关键字this
引用全局window
对象。
因此,此功能的效果基本上与:
相同window.angularFlash = window.angular.module('flash', [])
这将创建名为flash
的模块,并将全局变量angularFlash
绑定到该模块,该变量可用于引用代码中其他位置的模块。