发布于 2016-03-16 22:41:44
Angular确实使用了IIFE,它将代码包装在
(function(window, document, undefined) {'use strict';
...
})(window, document);因此,这区分并保护了所有angular代码的全局/外部上下文和环境
您可以验证here
,所以它包装了整个应用程序,对吗?但它并没有包装单个组件
为了回答您的问题,这些组件不在单独的文件中,而是包含在单个生命周期中
像angular-route、ng-resource这样的独立模块使用angular.module()命名空间或模块化模式与全局上下文分开
发布于 2016-03-16 22:48:05
我认为答案可能是,这要视情况而定。
首先,AngularJS必须公开angular以供用户使用,因此它不能在生命周期内。(就像jQuery公开$和jQuery一样,尽管它有一个只公开jQuery的选项)。
然后,如果您决定使用AngularJS,那么AngularJS向全局空间公开一些其他东西也就不足为奇了。但到目前为止,我使用的是AngularJS,我只看到angular被公开,我做的所有事情,我都是这样做的
angular.module()
.controller()
.directive()
.factory()
.service();并且$compile不会暴露在全局空间中。
您只需使用IIFE创建一个局部作用域,这样变量就不会成为全局作用域的一部分。
https://stackoverflow.com/questions/36038803
复制相似问题