我的angularjs应用程序中有类似下面的内容,适用于browserify + gulp。
require('angular');
require('angular-resource');
require('angular-xeditable');
require('angular-spinner');
var app = angular.module('itembase', [
require('angular-ui-router'),
'ngResource',
'xeditable',
'angularSpinner'
]);
我的问题是如何将下划线库集成到这个环境中
我尝试了几种方法,将require('underscore');
放在var _ = require('underscore');
之上,但它似乎不起作用。
这些文件在代码中,但在angularjs app中真的可见。
答案 0 :(得分:1)
首先,下划线不是角度模块
解决方案是加载下划线(使用browserfy:require('underscore')
),然后创建一个返回下划线并使其可注入其他角度组件的工厂:
angular.module('itembase')
.factory('_', function($window) {
return $window._;
});
在此之后,您只需将其注入组件中,就像对其他任何组件一样:
angular.module('itembase')
.controller('MyController', function(_) {
_.each([1,2,3,4], function() {
console.log('using underscore!!!');
});
});
这种方法的优点在于您的依赖关系与代码完全分离,并且很容易测试它或更改它而不必在以后重写内容。
例如,如果在项目结束时您意识到仅使用下划线来迭代数组,则可以重新实现_
工厂,如:
angular.module('itembase')
.factory('_', function($window) {
return {
each: function(el, fn) {
for(var i = 0; i < el.length; i++) {
fn(el[i], i, el);
}
}
};
});