注入非角度JS库

时间:2015-12-15 17:21:57

标签: javascript angularjs node.js npm

在我们的项目中,我们将NPM与Browserify一起用于第三方依赖关系管理,与AngularJS结合使用效果很好(感谢CommonJS模块)。

以下代码显示了依赖关系结构,它适用于angular的依赖注入:

(function () {
    'use strict';

    var moment = require('moment');
    var lodash = require('lodash');

    var angular = require('angular');

    var app = angular.module('myProject', [
        require('angular-ui-router'),
        require('angular-animate'),
        require('angular-resource'),
        require('angular-ui-bootstrap'),
        require('ng-file-upload'),
        require('angular-smart-table'),
    ]);

    app.constant('moment',moment);
    app.constant('lodash',lodash);

})();

我的问题是关于简单的javascript库,例如时刻 lodash 。什么是将它们注入我的控制器和指令的最佳方法?是app.constant() - 接近的方式还是有任何我不考虑的缺点?

我意识到这个库周围有很多“角度映射器”项目,但我不希望它们得到足够长的支持,因此宁可坚持使用原始库。

1 个答案:

答案 0 :(得分:2)

对你的问题的评论确实指向正确的方向 - 首先寻找那些图书馆的角度化形式。如果没有,那么你可以做类似的事情 -

var lodash = angular.module('lodash', []);
lodash.factory('_', function() {
  return window._;
});

然后使用此模块依赖项并在您的控制器和服务中注入“_”。

即使您使用app.constant,它仍然可以作为依赖项“注入”。 “工厂”的方式让我觉得更灵活。