Google Closure Library는 jQuery보다 무엇을 제공합니까? [닫은]


190

고려하면

  • 사업 배경
  • 커뮤니티 지원
  • 사용 가능한 확장
  • 기본 기능 세트
  • 사용의 단순성
  • 그리고 신뢰성

왜 다른 것을 선호합니까?


1
사람들이 응용 프로그램을 실험하고 폐쇄의 한계가 무엇인지 알 때까지 왜 하나가 다른 것보다 선호되는지 말하기는 어려울 것이라고 생각합니다.
James Black

3
여기에 몇 가지 구문 비교 : derekslager.com/blog/posts/2010/06/…
user194743

4
이 기사 는 또한 결정에 도움 될 수 있습니다. 주요 교훈 : “클로저는 생태계입니다. DOM을 더 쉽게 액세스하거나 조작하기 위해 여기저기서 사용하는 jQuery와 다릅니다. 클로저를 진정으로 사용하고 싶다면 클로저를 사용하겠다는 약속을해야합니다.”
Dan Abramov 2019

2019 Google 폐쇄 란 무엇입니까? : D
evilReiko

답변:


176

정보를 추가하려고합니다.

다른 JS 라이브러리보다

내가 이해하는 것처럼 Google Closure는 다른 JS 라이브러리 일뿐만 아니라 JS 코드를 최적화 할 수있는 도구 모음이기도합니다. jQuery로 작업하면 훌륭한 도구와 가벼운 라이브러리가 제공되지만 자체 코드를 축소하지는 않습니다. 폐쇄 컴파일러는 것이다. 폐쇄 관리자는 종종 축소 된 코드가 원래와는 다른 행동을 가지고 있으며, 디버깅 고통으로도 유용 할 수 있습니다. Firebug 와 통합되어 현재 개발자의 가장 친한 친구 인 단위 테스트를 지원합니다.

선적 서류 비치

나는 새로운 라이브러리 VS 잘 확립 된 라이브러리로서 jQuery가 가지고있는 수많은 확장 기능과 튜토리얼을 사용할 수 없을 것입니다. 그러나 Google의 지원을 받으면 지원과 안정성이 모두 좋아질 것입니다. 현재 문서튜토리얼 도 정말 좋습니다.

풍모

클로저의 기능은 괜찮아 보이고 모듈 식 아키텍처도 유망하다. Google은 오랫동안 내부에서 오랫동안 사용해 왔기 때문에 모든 기본 기능 (및 그 이상)이 구현되고 매우 최적화되고 확장 가능한 방식으로 예상 될 수 있습니다. 그들은 그것을 JavaScript의 STL로 제시하려고 노력하고 있기 때문에 그것을 연마해야합니다.

기능을 더 자세히 살펴본 후에는 jQuery와 같은 기존 라이브러리와 비교할 때 웹 응용 프로그램 개발에 한 단계 발전한 것으로 보입니다. Google의 내부 개발에는 도움이되지만 온라인 상태 감지 ( goog.events.OnlineHandler 참조 ), 브라우저 기록에 AJAX 요청 및 JS 작업의 쉬운 통합 ( goog.History 참조 ) 또는 훌륭한 위젯 군단과 같은 것들 그들은 ( goog.ui 패키지 참조 ) 우리 모두가 더 멋진 웹앱을 만드는 데 도움이 될 수 있습니다.

그것은 함께 제공 기능 템플릿 (밝혔다 자바와 그 통합하고 GWT 이 또한 폐쇄에 대한 또 다른 플러스가 될 수 있도록를?).

사용의 용이성

마지막으로 사용이 매우 간단 해 보입니다. 구문은 짧은 $ jQuery 함수보다 조금 더 장황 할 수 있지만 IDE와 자동 완성 기능을 사용하면 실제로 문제가되지 않습니다. 또한 Google에서 제공하는 Eclipse와 같은 IDE에서 우수한 통합을 기대할 수 있다고 말하고 싶습니다.

편집 : 요청에 따라 GWT 참조에 대해 몇 마디 말하겠습니다. Google Web Toolkit은 AJAX 지원 웹 인터페이스를 생성하고 필요한 JavaScript 코드를 생성 및 최적화하는 Java 라이브러리입니다. Google Closure를 사용하면 클라이언트 및 서버 측 모두에서 사용할 수있는 템플릿 (JavaScript 및 Java 사용)을 만들 수 있으므로 곧 함께 사용할 수 있습니다 (아직 그렇지 않은 경우).


5
상세하고 의미있는 답변, 감사합니다. GWT에 대한 언급이 무엇을 의미하는지 설명해 주시겠습니까? 나는 그것을 얻지 못하는 것을 두려워한다.
pestaa 2009

1
"More than"섹션에서 템플릿 라이브러리 (Soy)를 언급해야한다고 생각합니다. 서버 (Java) 측과 클라이언트 측 모두에서 동일한 템플리트 파일을 사용할 수 있습니다. 정말 좋은 구현 IMO. HTML을 전송하지 않고 AJAX 쿼리로 JSON을 전송 만하면 대역폭이 절약됩니다.
Frank Krueger

1
방금 Closure에 대한 비판을 발견했지만 아마도 FUD 일 것입니다 : sitepoint.com/blogs/2009/11/12/…
nalply

7
비판은 FUD가 아니며 링크에 감사드립니다. 비판은 자바 스크립트 코드가 어느 곳에서 최적이 아닌지에 중점을두고 있습니다. 이것은 유효하지만 더 큰 요점을 놓칩니다. 내가 이해하는 것처럼 Closure는 실제로 복잡한 JS 응용 프로그램 (GMail 규모)을 대상으로하며, 모든 것이 단일 화려한 코더로 작성되지 않기 때문에 모든 줄이 최적이 아닌 것과 같은 결과가 있습니다. 그러나 반대로 소프트웨어 엔지니어링 프레임 워크로 확장 될 수 있습니다.
Peter S Magnusson 2016 년

3
@nalpy 의견에서 제안한 바와 같이이 기사에서는 라이브러리에 이러한 코딩 문제를 최적화 할 수있는 축소 기가 아닌 COMPILER가 있다고 언급하지 않았습니다.
앤트

30

API를 간단히 살펴보면 jQuery와 Closure의 차이점이 눈에 띄는 것으로 나타났습니다.

jQuery는 기본적으로 크로스 브라우저 방식으로 많은 빈번한 작업을 수행하는 간단한 방법입니다.

클로저는 <canvas>예를 들어 태그 를 사용하는 브라우저 간 방법을 제공하고 새로운 이벤트를 추가 했다는 점에서 매우 새로운 프레임 워크입니다 .

그래서 이것은 우리가 일반적으로 자바 스크립트로하는 일을 추가하고 사람들이 원하는 많은 작업을 수행하여 API에 넣습니다.

예를 들어 온라인 상태가 변경되었는지 알려주는 이벤트가 있습니다. 따라서 시스템이 온라인 상태인지 알 수 있습니다.

여기에는 Google Gears와 같은 도구를 사용하는 자바 스크립트 기능이 있으며, 이는 자바 스크립트로 수행 할 수있는 작업을 확장했다는 사실로 이어집니다.

모든 변경 사항을 요약하는 데 며칠이 걸리지 만 이것이 개발 가능한 웹 응용 프로그램에 큰 영향을 줄 수 있음을 알 수 있습니다.


25

클로저 라이브러리의 가장 큰 장점은 클로저 컴파일러 용으로 설계된 것입니다. 이것은 JavaScript 개발을위한 완전히 새로운 가능성을 열어줍니다 ...

컴파일러에는 몇 가지 멋진 기능이 있습니다.

  • 읽을 수있는 JavaScript를 압축 된 시스템에서 읽을 수있는 JavaScript로 컴파일 합니다. "ADVANCED"모드에서 압축률가장 높습니다.
  • JSDoc 태그를 사용하여 코드를 문서화하는 것이 중요합니다. 컴파일러에서 코드를 읽고 컴파일시 문서 오타, @constructor의 잘못된 사용, 잘못된 변수 유형 , @private 및 @protected로 주석이 달린 필드의 오용, 기타
  • OpenLayers 또는 Google Maps와 같은 재사용 가능한 JavaScript 라이브러리를 작성하는 경우 공식 API를 공식적으로 내 보내면 컴파일러가 내부 코드를 최적화합니다.
  • 최종 응용 프로그램은 라이브러리와 함께 컴파일 될 수 있으며 사용되지 않은 라이브러리 부분은 생성 된 코드에서 제거됩니다. 종속성은 컴파일러에 의해 자동으로 해결됩니다.
  • 컴파일러는 원치 않는 기능을 제거하기 위해 상수를 허용합니다. 이는 모바일 웹킷과 같은 특정 브라우저, Quirks 모드 또는 Strict 모드 중 하나에 대해서만 컴파일, IE6을 지원하지 않는 컴파일 등을 허용합니다.
  • 소스 코드의 컴파일 된 버전에서도 FireBug로 디버깅 할 수 있습니다.
  • 컴파일러는 동적으로로드 가능한 모듈의 생성을 지원하므로 고급 기능을위한 코드는 필요할 때만로드 할 수 있기 때문에 최종 애플리케이션의로드 속도를 크게 높일 수 있습니다.

자세한 내용은 http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html을 참조하십시오.


20

편집 : 이 YouTube 비디오를 살펴보면 Google Closure에 대한 몇 가지 질문에 더 잘 대답 할 수 있습니다.

아마도 구글 클로저에 대한 최고의 정보원은 프로젝트 토론 그룹 , 위키, 문서 페이지, 데모 및 아직 미완성 된 마이클 볼린의 책으로 사파리 서적 사이트에서 얻을 수 있습니다.

지금 당장 말할 수있는 한 가지 - 거기에 대한 가파른 학습 곡선 closure대는 jQuery하지만 인해 도서관의 광대, 명확한 조직과 컴파일러와 템플릿 도구와 함께 사용의 혜택에 가치가있을 수 있습니다.

closure그 점에서 라이브러리는 더 같다 dojo이상 jQuery, 일부 개념에서 차용 한 dojo마이클의 Bolin에 따라.

Google 클로저 컴파일러는 JSDoc문서화 시스템을 사용하여 동시에 (프로그래머가 올바르게 작성한 경우) 문서를 제공하고 컴파일 타임에 많은 오류를 잡을 수 있습니다.

함수 이름은의 것보다 더 장황하지만 jQuery컴파일러는 다양한 최적화 전술을 사용하여 코드를 축소하고 유형 검사는 코드를 디버깅하는 데 상당한 시간을 절약하므로 더 긴 이름을 입력하는 시간은 문제가되지 않습니다. 동시에 더 긴 이름은 가독성을 추가합니다.

library는 quirks 모드에서 실행되는 브라우저를 지원하므로 "quirky"html을 사용하여 다른 사이트에서 스크립트를 임베드 할 수 있습니다.

라이브러리는 soy문서로 내용을 채우는 것을 단순화 하는 자바 스크립트 템플릿 시스템과 작동하지만 의존하지는 않습니다 .

jQuerygoogle 과 같이 closure라이브러리의 전용 구성 요소를 사용하여 문자열 기반 쿼리로 dom 구조를 통과 할 수 있습니다.

closure라이브러리는 점으로 구분 된 네임 스페이스 (더욱 Java강력한 조직 기능) 에 의존 합니다.

이러한 네임 스페이스를 사용하면 컴파일되지 않은 코드에서 오버 헤드가 발생하지만 컴파일 된 코드에서는 짧은 변수 이름으로 대체됩니다.


1
나는 다른 것을 찾고 있었고 여기서 끝났지 만 알아두면 좋을 like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.것입니다. 관련 문서에 저를 연결시켜 주시겠습니까?
IsmailS

@ iSid :에 대해 이야기한다고 생각 goog.dom.DomHelper하지만 개인적으로 jQuery와 동등한 쿼리 기능을 보지 못합니다. @Evgeny : 더 자세한 정보를 제공해 주시겠습니까?
exhuma

@iSid :이 기능은 goog.dom.query 에 의해 제공되며 , 나머지 goog.dom 네임 스페이스는 문서화되어 있지 않습니다.
bkirkbri

8

방금이 질문에 insideRIA 에 대한 Google Closure에 대한 철저한 기사를 게시했습니다 .

... 클로저 규칙! ^ _ ^


4
jQuery와의 완벽한 비교 : "[...] jQuery는 정말 잘 작동하고 노력 없이도 큰 일을 가능하게합니다. 따라서 Closure의"약속 "은 더 나은 알고리즘을 제공하는 것이 아니라 오히려 더 나은 알고리즘을 제공하는 것입니다. JavaScript 응용 프로그램을 배포하는 체계적이고 유지 관리 가능한 방법 [...] Cloding의 코딩은 객체 지향 원칙을 염두에두고 생각하고, 각각 단일 클래스를 나타내는 여러 js 파일을 만들고, 응용 프로그램 아키텍처를 패키지로 구성한 다음 제공된 도구를 사용하여 배포하는 것을 의미합니다. , 압축되고 안전한 단일 JavaScript 파일 [...] "
Alex

7

어쩌면 나는 jQuery를 얻지 못했지만 실제 UI 위젯 컬렉션을 보지 못했습니다 (플러그인이 있습니다).하지만 잘 테스트 된 적이 없으며 명확한 승자가 없으며 종종 플러그인 부족이 있습니다. 선적 서류 비치).

클로저는 무엇보다도 Gmail에 사용되는 이미지가 없는 버튼을 포함 하여 위젯 컬렉션 (데모 탭 참조)을 가지고 있습니다.

보다 일반적으로 릴리스의 일부로 더 많은 기능이 구현되었습니다. 큰 문제는 아니지만 아약스 히스토리 모듈이나 자동 완성과 같은 간단한 것을 찾을 때 jQuery 플러그인의 바다에 짜증이납니다.

전반적으로 거대한 라이브러리 + 도구 세트이며 사용 가능한 항목을 알기 위해 익숙해 질 것입니다.


2
jqueryui.com 공식 UI 위젯 모음입니다
Jourkey

1
아코디언 날짜 선택기 대화 상자의 ProgressBar 슬라이더 탭 : 음, 그래, 사이트에서 판단이 6 위젯이
Nickolay

3
jQueryUI를 사용했는데 매우 약하다고 생각했습니다. 개발중인 것조차 거의 없습니다. 새 위젯이 마지막으로 추가 된시기는 언제입니까? 공식 위젯 모음 일 수도 있지만 jQuery와 함께 사용할 위젯을 찾는 사람은 타사 jQuery 위젯을 검색하는 것이 좋습니다.
Nosredna 2009

2
jQueryUI는 단순한 자바 스크립트 위젯 일뿐만 아니라 훌륭한 CSS 프레임 워크도 가지고 있습니다. CRUD / 관리자 페이지를 스타일링 할 때 훌륭한 도구였습니다. 또한 Closure "Widgets"의 많은 부분은 jQuery에서 1-2 개의 라이너로, 플러그인을 작성할 가치조차 없습니다.
Jace Rhea

2
JQuery의 매력은 미리 만들어진 위젯이 아닙니다. 기록적인 시간에 나만의 맞춤 위젯을 만들고 있습니다. UI를 포함한 플러그인을 거의 만지지 않습니다.
Erik Reppen

1

오픈 소스 커뮤니티에 대한 Google의 기여의 대부분에 감사 드리며 멋진 것들이 있지만 전체적으로 Closure가 거대하고 과장되어 우아하지 않다고 확신합니다. 모든 것을 Java로 바꿔야한다면 나는 그것이 엄청나다고 생각합니다.

편집하다:

그럴 수 있지. 나는 실제로 비교하지 않았다. 폐쇄는 어딘가에 원하는 모든 가능한 도구가있는 거대한 창고와 같습니다. .NET 또는 대규모 Java 라이브러리와 같습니다. 필요한 것을 찾으면 매우 구체적인 작업을 수행하는 매우 구체적인 작업을 찾을 수 있습니다. 그런 다음 생산을 위해 모든 균열을 제거 할 수 있습니다.

반면에 JQuery는 쉽게 수정할 수있는 음향 드라이버입니다.


1
Java 버전의 Closure에 대해 자세히 알고 싶습니다. 이것에 대한 링크가 있습니까? 감사합니다
Yazz.com

'아이러니 태그'를 찾으십시오. 거기에 답이 있습니다.
Erik Reppen

0

Google 클로저 라이브러리를 사용하면 JavaScript를 컴파일하고 최적화 할 수 있습니다. jQuery와 같은 라이브러리가 아닙니다. jQuery는 자바 스크립트를 더 빨리 작성할 수있는 기능을 제공하는 것입니다.

Google Closure를 사용하면 인터넷을 통한 빠른 배송을 위해 자체 자바 스크립트 코드를 최소화 할 수 있습니다.

간단히 말해 Google Closure는 도구이고 jQuery는 프로토 타입과 유사한 라이브러리입니다.


6
그것은 사실이 아닙니다. Google Closures에는 jQuery와 유사한 자체 라이브러리가 있으며 코드를 작성하는 함수와 유틸리티를 제공합니다. code.google.com/closure/library/docs/tutorial.html
Wookai

2
그래! 수정 해 주셔서 감사합니다.
Tereno

2
+1 도움을주기 위해 :)
Andomar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.