태그 보관물: javascript

javascript

jQuery는 JavaScriptMVC, BackboneJS, SproutCore 및 Knockout과 같은 프레임 워크에 어디에 적합합니까? 같습니다 . Additonally, 멋진가 AMD

나는 지난 2 년 동안 JQuery 를 행복하게 사용 했으며 정말 멋진 기능을 만드는 데 성공했습니다 … 그래서 매우 편안합니다. 또한 웹의 미래가 현재 클라이언트 쪽 경로에서 계속 될 것이라고 믿습니다.

하나…

다음 도전은 KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (목록에 있음) 와 같은 다양한 컨트롤러 프레임 워크의 형태로 오는 것 같습니다 .

Additonally, 멋진가 AMD 로더 등의 사용을위한 도구 RequireJS 또는 LabJS 등은 그러나, jQuery를 지금 가지고 definethen기능 구운에서.

모든 것을 추적하기가 점점 어려워지고 있습니다 …

그리고 지금, 내 임무는 클라이언트 측 MVC 또는 MVVM 프레임 워크의 어떤 형태를 사용하기위한 전략적 방향을 평가 / 결정하는 것 같습니다 …하지만 많은 질문이 있습니다.

  • JQuery 는 위에서 언급 한 다양한 컨트롤러 프레임 워크와 어디에 적합 합니까?
  • JQuery와 함께 사용되는 각각 또는 그들 중 일부는 그들의 자신의 ‘해야합니까 JQuery와 버전을 -styled’구운에?
  • 위에서 언급 한 다양한 컨트롤러 프레임 워크 중 하나를 구현 하는 경우 RequireJS 와 같은 도구가 여전히 필요 합니까?
  • 않습니다 definethen기능 구운에 JQuery와 지금 대체할만한 AMD의 로더는 위에서 언급?
  • 어느 것이 가장 모듈 식으로 보이는가? (아래 참고 참조)

참고 :
미래의 프레임 워크에서 원하지 않는 한 가지는 사용하지 않는 방대한 양의 기능을 사용해야한다는 것입니다. 즉, 나는 진정으로 모듈 식 인 프레임 워크를 사용하고 싶습니다. 예를 들어, jQuery UI를 사용하려면 실제로 사용하지 않을 다른 핵심 라이브러리를 많이 가져와야합니다.

나는 각각을 실험 할 것이지만, 약간의 실제 피드백은 좋을 것입니다. 나는 몇 가지 ‘유사한’질문을 보았지만 실제로 위의 비뚤어진 대답은 없습니다.

미리 감사드립니다!



답변

jQuery는 크로스 브라우저 정규화 도구입니다. 그것은 당신에게 다음을 제공합니다

  • DOM 유틸리티
  • 이벤트 시스템
  • 아약스
  • 애니메이션
  • ES5 유틸리티
  • 다른 것

Backbone / knockout / yada / yada는 모듈 형 애플리케이션을 구성하고 작성하는 데 도움이되는 MVC와 유사한 라이브러리입니다. 당신이 그들의 구조를 원하는 경우에만 이것들이 필요합니다.

RequireJS / yada / yada는 모듈 로더입니다. 모듈 식 응용 프로그램을 작성하려면 일부 형식의 모듈 로더가 필요합니다.

JQuery는 위에서 언급 한 다양한 컨트롤러 프레임 워크와 어디에 적합합니까?

언급했듯이 jQuery는 브라우저를 정규화합니다. 컨트롤러 프레임 워크는 그렇지 않습니다. jQuery는 필요하지 않지만 브라우저를 정규화하는 방법이 필요합니다.

JQuery는 각각과 함께 사용됩니까? 또는 일부는 자체 ‘JQuery 스타일 버전’을 가지고 있습니까?

Backbone / knockout / JavaScriptMVC에는 브라우저 정규화가 포함되어 있지 않으므로이를위한 도구가 필요합니다. SproutCore에 대해 잘 모르겠습니다.

위에서 언급 한 다양한 컨트롤러 프레임 워크 중 하나를 구현하는 경우 RequireJS와 같은 도구가 여전히 필요합니까?

모듈 식 응용 프로그램을 작성하기 위해 작성하는 경우에만 필요합니다. 그렇습니다.

모듈 형 애플리케이션에는 세 가지 맛이 있습니다

  • requireJS와 같은 비동기 요구 로더
  • 동기화에는 modul8 과 같은 로더가 필요합니다.
  • 네임 스페이스를 사용하고 파일 만 포함
  • 엔더 와 같은 패키지

JQuery에 구운 정의 및 기능이 이제 위에서 언급 한 AMD 로더를 대체합니까?

아니요. jQuery에 구운 정의 기능을 사용하면 jQuery를 래핑하지 않고 AMD 로더와 함께 사용할 수 있습니다. 여전히 AMD 로더가 필요합니다. “then”기능은 jQuery 연기의 일부일뿐입니다.

어느 것이 가장 모듈 식으로 보이는가? (아래 참고 참조)

그것은 의견이 많은 질문입니다. 내 개인적인 의견은 jQuery를 포함한 모든 프레임 워크가 팽창되어 모듈식이 아니라는 것입니다.

모듈 식, 자체 라이브러리 작성, 고유 한 아키텍처 작성이 필요합니다.

그러나 당신이 더 적은 악을 원한다면 간단하고 작거나 척추 가 비슷한 백본을 선택합니다.


답변

기고자 인 JavaScriptMVC에 대해 답변하겠습니다.

JQuery는 위에서 언급 한 다양한 컨트롤러 프레임 워크와 어디에 적합합니까?

JavaScriptMVC는 jQuery에 의존하며 광범위하게 사용합니다.

JQuery는 각각과 함께 사용됩니까? 또는 일부는 자체 ‘JQuery 스타일 버전’을 가지고 있습니까?

JavaScriptMVC는 jQuery와 경쟁하는 기능이 없습니다. 자체 이벤트 시스템이있는 Backbone에서는 그렇지 않습니다. 그러나 백본 또는 척추 추가는 매우 최소화됩니다.

위에서 언급 한 다양한 컨트롤러 프레임 워크 중 하나를 구현하는 경우 RequireJS와 같은 도구가 여전히 필요합니까?

JavaScriptMVC는 종속성 관리 시스템-> 도용과 함께 제공됩니다. RequireJS와 함께 JavaScriptMVC를 사용할 수 있지만 도용은 실제로 훨씬 강력하고 사용자가 다운로드 한 크기와 거의 같습니다.

어느 것이 가장 모듈 식으로 보이는가? (아래 참고 참조)

이것은 의견이 없습니다. JavaScriptMVC는 매우 모듈 식입니다. 필요한 것만 사용하십시오. 백본 또는 스파인에 비해 M, V 또는 C 부품을 독립형으로 사용할 수 있습니다. 함께 조립하면 백본보다 1k 더 큽니다 (jQuery 및 Underscore 사용시). 다양한 크기의 기본 구성 요소를 여기에서 볼 수 있습니다 : https://github.com/jupiterjs/javascriptmvc/issues/26

그러나 JavaScriptMVC는 Backbone 또는 Spine에 비해 기능면에서 훨씬 강력합니다. 예를 들어, 템플릿 이벤트 핸들러는 거의 모든 메모리 누수를 방지합니다. 창을 클릭하면 숨겨지는 툴팁이 있습니다.

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

컨트롤이 다음과 같이 모델의 변경 사항을 수신 할 때 MVC 접근 방식에서 이는 매우 중요합니다.

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

컨트롤러는 이러한 모든 외부 이벤트 핸들러를 자동 바인딩 해제합니다.

MVC 부품의 몇 가지 다른 장점 :

  • $ .Class는 매우 강력한 클래스 시스템입니다
  • $ .View 및 $ .Model은 지연을 지원합니다.
  • $ .Controller는 이벤트 핸들러를 ‘리 바인드’할 수 있습니다
  • $ .Model은 연결, getter / setter, 기본값, 유효성 검사를 지원합니다

이제 JavaScriptMVC는 MVC 부분 (jQueryMX 하위 프로젝트의 일부)이 아닙니다. 그것은있다 :

  • jQueryMX-특별 이벤트, DOM 도우미 등과 같은 jQuery의 누락 된 기능
  • 도용-종속성 관리 시스템 그러나 그것은 아약스 앱을 가져 와서 구글 크롤링 할 수있는 것과 같은 일을 할 수 있습니다.
  • FuncUnit-놀랍도록 강력한 테스트 프레임 워크.

이제 무엇을 사용해야하는지에 따라 많이 달라집니다. “앱”또는 “페이지”를 만드는지에 따라 다릅니다. 테스트, 종속성 관리, 메모리 누수를 걱정하는 응용 프로그램은 JMVC 또는 SproutCore를 살펴 봅니다.

몇 가지 기본 위젯을 함께 붙이는 경우 척추 또는 백본을 살펴 보겠습니다.


답변