在定义角度模块时 - 我应该包装自执行功能吗?

时间:2015-07-13 19:23:45

标签: angularjs

(function (angular) {
   "use strict";

   angular.module('module')
   .filter('leFilter', function() { ... });

})(angular);

在我正在研究的新项目中看到这段代码。 我通常只是在文件根目录下启动模块,不要使用' strict'模式。

angular.module('module')
   .filter('leFilter', function() { ... });

我从来没有遇到过这样的问题。

在角度应用的背景下,是否有任何可以从自动执行功能和“严格”中获得的东西。模式?

2 个答案:

答案 0 :(得分:3)

我真的没有看到任何主要的在IIFE(立即调用的函数表达式)中运行它的好处,特别是关于封装中的东西有多好(例如在你的过滤)。由于使用它们创建的范围,您将使自己与命名冲突隔离,但它们会降低可读性。如果在实例化时将角度模块存储在变量中并在添加控制器/过滤器/等时使用它们,那么它们在这方面会更有用。而不是使用模块getter,但我不建议这样做。

如果您正在使用Gulp或Grunt等构建系统,那么在IIFE中编译这些文件并将其保留在没有它们的情况下可能是值得的。

我总是建议使用“use strict”,因为它可以让你编写更清晰的代码,减少了出现问题的可能性。但是,再一次,它并不一定能帮助你“获得”任何东西,因为它可以防止可能发生的坏事。

这两者基本上都是安全防范,所以不会给你一些优势。

答案 1 :(得分:1)

严格模式意味着您遇到类型转换问题的可能性较小,而自执行功能则是为了避免污染全局命名空间。