加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:48:58 所属栏目:安全 来源:网络整理
导读:在不暴露全局变量的情况下使用第三方库的最佳方式是什么? 例如,如果我使用underscore.js,我只想将_注入到只使用它的控制器. angular.module('module').controller(function(_) { // _ is injected only into this scope}; 为了达到这个效果,我看到一些人用
在不暴露全局变量的情况下使用第三方库的最佳方式是什么?

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

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

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

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

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

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读