2014-11-05 1 views
1

anglejs에서 사용하고 싶은 유용한 라이브러리가 있습니다. jquery, underscore, underscore.string.각도 모듈에 유용한 js 라이브러리를 래핑하는 것이 좋습니다.

모의하고 테스트하기가 어렵 기 때문에 각도 코드 (예 : 컨트롤러, 지시문)로 직접 사용하는 것은 좋지 않을 수 있습니다. 그래서 각 모듈로 포장 할 :

angularUnderscore.js

define(['angular', 'underscore'], function(ng, _) { 
    return ng.module('3rd-libraries') 
    .service('underscoreService', function() { 
     return _; 
    }); 
}); 

내 질문 있습니다

  1. 그것은 service을 정의 할 .service()를 사용하는 것이 좋은가요? 또는 공장이나 상수가 더 좋습니까?
  2. underscoreService을 사용하는 것이 좋습니까? 아니면 underscore만으로 충분합니까?
+0

매우 숙고 된 질문입니다. 그냥 내 취향 : 1. 서비스, 2. 밑줄 – harishr

+0

나는 항상 그걸 공장에 넣었다. 밑줄 (또는 더 나은 : lodash) 나는 기본적으로 유틸리티 라이브러리이기 때문에 항상 작은 예외로 취급합니다. 나는 어떤 식 으로든 그것을 조롱 할 필요가 없었으며 어쨌든 내 테스트에서 실제 사용했습니다 ... – Charminbear

답변

1

나는 그것이 정말로 범위의 문제라고 생각합니다.
일부 의견은 일치하지 않지만 모든 테스트 제품군의 종속성으로 _underscore를로드하는 것이 좋다고 생각합니다. 그 이유는 어림짐작으로 "정적"연산을 말하는 것입니다. 즉, 애플리케이션 로직이나 데이터에 민감하지 않은 일반 알고리즘을 별도로 테스트해야합니다 (또는 프레임 워크와 같은 _underscope의 경우에는 전혀 사용하지 않아야합니다).
이렇게하면 테스트를 더 간단하게 작성하고, 읽기 쉽고 유지하기 쉬우 며 드문 경우는 제쳐 놓고 배열을 정렬 할 때 _underscore에 새로운 버그가 있으면이 테스트는 실패합니다. 또한, 나는 당신이 이익을 볼 수 없습니다 (다른 조롱, 내가 전에 언급 한) 이러한 알고리즘의 DI.

그러나 알고리즘이 더 복잡하고 데이터 논리 종속성이있는 경우이 논리를 캡슐화하고 테스트 할 수 있도록 팩터 리 (또는 서비스, 둘 다 싱글 톤)를 소개합니다. 서비스 대 공장 (대 제공 업체)에 대한 답변이 많습니다. 개인적으로는 다음과 같습니다. This

관련 문제