AngularJS:在不暴露全局变量的情况下使用第三方库

前端之家收集整理的这篇文章主要介绍了AngularJS:在不暴露全局变量的情况下使用第三方库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在不暴露全局变量的情况下使用第三方库的最佳方式是什么?

例如,如果我使用underscore.js,我只想将_注入到只使用它的控制器.

angular.module('module').controller(function(_) {
  // _ is injected only into this scope
};

为了达到这个效果,我看到一些人用脚本标签在全球下载了下划线,然后创建了一个这样的服务:

myModule.factory('_',function ($window) {
    return $window._;
});

然而,这仍然会用_来污染全球范围.

注册注册第三方图书馆是否有“角色”,而不会导致此问题?

除了通过分派和创建自己的版本之外,您不能对第三方库的写作做任何事情.

第三方库将几乎总是在全局范围内创建这样的变量,并且您将提到在角度模块中使用两种最常用的方法:通过注入$window并直接使用它们,或通过创建提供对象的瘦服务.

在大多数情况下,我会赞成后者,因为它使得其他模块中的代码更简单.另外,在我看来,服务方法使得你的控制器中的代码看起来不那么“魔法”,而且可以调试,因为它清楚了图书馆的位置. _来自.出现“超薄空气”的变量是全局变量开始的一些问题.

库将仍然会“污染”全局范围,除非您明确地将其从全局范围中删除,也许在获取服务中的指针之后,然后可以传递它.但是,我看不到有这样做的动机.任何其他尝试,例如使用Angular服务实际下载第三方脚本并对其进行评估,以某种方式阻止其达到全局范围,似乎无效率,过度设计和缓慢(在计算方面以及HTTP请求是否为解雇).

否则,除了严格要求外,不要创建任何更多的全局变量.

原文链接:https://www.f2er.com/angularjs/143206.html

猜你在找的Angularjs相关文章