JavaScript MVC (마이크로) 프레임 워크가 있습니까? [닫은]


133

클라이언트 측 JavaScript MVC (마이크로) 프레임 워크가 있습니까?

다소 복잡한 HTML 양식이 있으며 MVC 패턴의 이점을 누릴 수 있습니다.

좋은 솔루션이 다음을 제공한다고 생각합니다.

  • 값이 변경되면 모델 및 뷰가 컨트롤러를 업데이트합니다 (Observer 패턴)
  • 페이지가로드 될 때 양식 데이터에서 모델을 채 웁니다.
  • 모델이 변경 될 때 모델에서 양식을 채 웁니다.

Ajax, 혜성, JSONP 및 모든 재즈는 심각한 과잉입니다.


2
내가 틀렸거나 이것이 나쁜 생각입니까 (또는 어쩌면 유행어 호환 프레임 워크) ?.

2
나는 당신과 같은 느낌을 가지고 있었기 때문에 얼마 전에 무언가를 시작했습니다. 그것이 얻을 수있는 한, 최소한의 AMD이며, 의견이 맞지 않습니다. 더 jQuery를 등 나는이 모르고 그 말은 지금은 폐쇄되었지만, 나는이 생각하는 수도 당신이 찾고 있던 물건의 종류 수 : github.com/Wolfy87/tarmac이 - 내가 생각 때문에 나는 최근에 많이하지 않은 유일한 사용자 일 것입니다.
Olical


간단한 TODO 앱을 구현하여 사용 가능한 모든 JavaScript 프레임 워크를 (거의) 비교하는 TodoMVC를 살펴보십시오 .
koppor

답변:


71

백본은 매우 가벼운 프레임 워크입니다. 시도해보십시오 : http://backbonejs.org/


2
나는 백본을 발견해서 기쁘다.
Aaron Greenlee

나는 확실히 체크 아웃하는 것에 동의합니다!
Ivanhoe

MVC 방식으로 백본을 사용하는 방법은 무엇입니까?
IsmailS

1
@TristanJuricek peepcode에 대한 무료 대안이 있습니까?
Matt

척추를 건너 뛰고 척추로 우회전하십시오. 훨씬 더 논리적 인 MVC 구현이 있습니다.
Chris Jaynes

33

JavaScriptMVC 는 훌륭한 솔루션입니다. 플러그인 접근 방식으로 필요한 기능 만 선택할 수 있습니다. 2.0부터는 jQuery를 기반으로합니다.

JMVC는 개발을위한 중간 계층 만 제공하므로 웹 사이트를 점진적으로 향상시키는 것은 사용자에게 달려 있습니다. 디자인 선택은 사용자가 직접 결정해야합니다.

그러나 JavaScriptMVC는 강력한 이벤트 위임 기반 컨트롤러로 인해 최고의 범용 JavaScriptMVC 라이브러리입니다.

이벤트 위임을 사용하면 이벤트 핸들러를 첨부하지 않고도 페이지에 대한 규칙을 만들 수 있습니다.

마지막으로 JMVC는 MVC 아키텍처 그 이상입니다. 여기에는 개발주기의 모든 부분이 포함됩니다.

  • 코드 생성기
  • 셀레늄 및 Env.js 통합 테스트
  • 문서화 엔진
  • 자동 Concat + Compress
  • 오류 감지 및보고

1
JavascriptMVC +1-지금은 몇 가지 응용 프로그램에 사용했으며 꽤 좋습니다. 웹 사이트에서 코드 생성 예제를 건너 뛰십시오. 레일스 팬보이를 진정시키기 위해서만 존재한다고 생각합니다. :) 기본 JQueryMX 객체 모델로 시작하고 컨트롤러를 만듭니다.
Chris Jaynes

1
이 의견을 말한 후 Require 및 Spine을 사용하도록 전환했습니다. 궁극적으로 JMVC보다 작고 우아하며 '엔터프라이즈'가 적습니다. JMVC은 JS에 조정을하는 자바 개발자의 우리 팀에 좋은,하지만 당신이 더 JS를 이해하기 시작하면 그것은 그냥 보유하지 않습니다 ...
크리스 제인스

JMVC의 MVC 부분은 이제 can.js입니다
PHearst

21

Spine 에는 Backbone과 비슷한 API가 있지만 훨씬 작습니다. 프로토 타입 상속이 특징입니다.


2
또한 CoffeeScript로 작성되었으며 CoffeeScript의 클래스 스타일을 사용합니다. 이는 큰 승리는 아니지만 다소 좋은 것입니다.
유료

1
나는 그것이 백본보다 작은 이유라고 생각합니까? Coffeescript 코드는 더 간결합니다 ...
Brenden

나는 척추를 좋아한다. 굉장한 굉장함을 위해 RequireJS와 함께 사용하십시오. CoffeeScript라는 사실도 당신을 놀라게하지 말고, 일반적인 JS에서도 잘 작동합니다.
Chris Jaynes

브라우저 지원은 IE> = 9이므로 방문자의 프로필과 일치하는지 확인하십시오.
Richard

20

AngularJS는 jQuery와 함께 잘 작동하며 MVC 구조와 엄격한 우려 분리를 통해 많은 도움을 줄 것입니다.

전체 테스트 환경 및 의존성 주입 포함 ...

http://angularjs.org 에서 확인하십시오


AngularJS와는 .... 나는 생각한다 .... 2013 년 말에 지금까지 최고입니다
토니 바오

15
angular는 마이크로 프레임 워크가 아닙니다 : /
iConnor

1
동의 Angular는 마이크로 프레임 워크가 아닙니다.
Vojta

2
예, 또한 학습 곡선은 비 비례 적이며 다른 프레임 워크와 비교할 때 이점이 있습니다.
vsync

4
각도는 마이크로 프레임 워크의 반대입니다. 짐승입니다.
하센


14

나는 이것이 당신이 체크 아웃해야 할 것처럼 보인다고 생각한다 : http://knockoutjs.com/

(silverlight / wpf 프로그래머로서 이것은 마침내 자바 스크립트를 배우기 시작한 라이브러리였습니다. 현재 VMV (Model-View-View-Model) 패턴을 기반으로합니다. 지금은 좋은 선택 인 것처럼 보입니다!)


silverlight / wpf 프로그래머로서 나는 녹아웃, 백본 및 기타 몇 가지를 평가했습니다. 하루가 끝나면 Angular로 전환했습니다. 그것은 바인딩과 훨씬 더 있습니다.
jonperl


8

Ember.js

다음은 Ember를 즐겁게 사용할 수있는 세 가지 기능입니다.

  1. 바인딩
  2. 계산 된 속성
  3. 자동 업데이트 템플릿

바인딩

바인딩을 사용하여 서로 다른 두 객체 간의 속성을 동기화 상태로 유지하십시오. 바인딩을 한 번만 선언하면 Ember가 변경 사항이 어느 방향으로 전파되는지 확인합니다.

두 객체 사이에 바인딩을 만드는 방법은 다음과 같습니다.

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

바인딩을 사용하면 MVC (Model-View-Controller) 패턴을 사용하여 응용 프로그램을 설계 한 다음 데이터가 항상 계층에서 계층으로 올바르게 전달된다는 것을 쉽게 알 수 있습니다.

계산 된 속성

계산 된 속성을 사용하면 함수를 속성처럼 취급 할 수 있습니다. 계산 된 속성은 다른 속성과 마찬가지로 바인딩으로 작업 할 수 있으므로 유용합니다.

자동 업데이트 템플릿

Ember는 시맨틱 템플릿 라이브러리 인 Handlebars를 사용합니다. JavaScript 애플리케이션에서 데이터를 가져 와서 DOM에 넣으려면 값을 표시하려는 위치에 태그를 작성하여 HTML에 넣으십시오.

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
사양은 초기 단계에서 분명하지 않은 경우 .. .... 어떤 방법으로 백본을 통해 사용하는 것이 유리 엠버입니다
Bijendra

4
나는 emberJS 좋아한다, 그러나 아니다 "마이크로" 그것의 거대한 때문에 워크 아웃 자사의 평면
iConnor

1
같은 문장에서 Ember와 microframework를 사용해서는 안됩니다.
Prefix

8

Stapes.js

전체 공개 : 저는이 도서관의 저자입니다 :)

정말 작은 것을 찾고 있다면 (1.5kb 축소 / gzipped) 모양이 있고 좋아하는지 말 해주세요.


첫눈에 좋아 보인다! 저는 프로토 타입 상속 (시뮬레이션 된 클래스 및 혼란스러운 new연산자 없음 )에 중점을 둡니다 . 어떤 불필요한 것 같습니다 것은 또 다른입니다 eachmap. Underscore.jsjQuery 에 이미 있습니다 .
feklee

7

요구 사항이 정말 간단 하다면 Alex Netkachov 처럼 간단한 MVC를 작성할 수 있습니다 .

그의 예제는 dojo (참고 : dojo.js 파일이 누락되어 페이지에서 작동하지 않음)를 기반으로하지만 일반 Javascript의 패턴을 따를 수 있습니다.


4

아마도 당신이 필요로하는 것에 대해 과잉 일 수 있지만 SproutCore 는 MVC 프레임 워크이며 JavaScriptMVC 또는 TrimPath의 Junction 보다 더 무겁지 않습니다 .

불행히도, 이들 중 어느 것도 점진적 향상 원칙에 기반한 것으로 보이지 않습니다 .


1
JavaScriptMVC의 핵심 MVC 구성 요소는 Backbone의 gzipped보다 약 1k 더 큽니다 (여러 기능이 더 있음). JMVC는 점진적으로 향상된 앱을 완벽하게 구축 할 수 있습니다. 모델 레이어를 버릴 것입니다.
저스틴 메이어

3

널리 사용되는 ActionScript MVC 프레임 워크 PureMVC 는 최근 JavaScript로 포팅되었습니다. 아직 시험해 볼 기회는 없었지만 좋은 결과라고 확신합니다.


나는 플렉스를 좋아합니다. 간단하고 강력합니다.
Glenn

3

jquery-claypool 도 확인하십시오 .

jquery-claypool은 django, rails, spring 등에 대한 나의 경험을 바탕으로 jquery에 구축 된 작고 빠른 railable mvc 프레임 워크입니다. 매우 가볍고 클라이언트와 서버 환경 모두에서 실행됩니다.

깨끗한 mvc, 카테고리 로깅, 필터 (aop), 컨트롤러의 생성 지연, 제어 역전, 컨벤션 오버 컨피규레이션 등을위한 라우팅 프레임 워크를 제공합니다.

jquery가 이미 수행 한 작업을 수행하지 않고 jquery와 같은 느낌이 들며 좋은 프레임 워크처럼 작동합니다.

jquery-claypool

확인하시기 바랍니다.


클레이 풀을 백본과 관련하여 어떻게 보십니까?
Pepijn




2

키티를 사용해보십시오 . 1.4KB에 불과하며 유일한 종속성은 EJS입니다.


2

업데이트 2016 : Sammy.js가 버린 것 같습니다.

Sammy.js보십시오

사이트의 텍스트 :

클래스가있는 작은 웹 프레임 워크.

  • SMALL Sammy의 코어는 16K 압축 및 5.2K 압축 및 압축
  • MODULAR Sammy는 플러그인 및 어댑터 시스템을 기반으로합니다. 필요한 코드 만 포함하십시오. 재사용 가능한 플러그인으로 자신의 코드를 쉽게 추출 할 수도 있습니다.
  • CLEAN 전체 API는 이해하고 읽기 쉽게 설계되었습니다. Sammy는 캡슐화 및 응용 프로그램 디자인을 권장합니다.
  • 재미 있지 않은 개발의 진정한 포인트는 무엇입니까? 새미는 MATZ 접근법을 따르려고합니다. 개발자의 행복을 위해 최적화되었습니다.

MATZ 란 무엇입니까?
kstep

루비의 창시자 인 유키히로“마츠”마츠모토는 종종 ​​자신이 인생을 반영하는 방식으로“루비를 단순하지 않고 자연스럽게 만들려고 노력하고있다”고 말했다. 따라서 소프트웨어는 사용자에게 자연 스러워야합니다. 이것은 MATZ 접근 방식을 의미합니다.
Bijan


1

jQuery 기반이며 이해하기 쉽고 CorMVC이며 서버 기술에 의존하지 않습니다.


1

MCV 라는 매우 간단한 Javascript MVC 프레임 워크를 개발했습니다 . 요청한 것을 정확하게 수행하지는 않지만 도우미를 통해 쉽게 확장 할 수 있습니다. 어쨌든, 그것은 확실히 마이크로입니다 (1,9kb 포장).

Jamal과 거의 비슷하게 작동하지만 두 가지 이유로 내 롤을하기로 결정했습니다.

  • jQuery 의존성을 제거하십시오 (대부분 jQuery와 함께 사용하더라도)
  • 도우미로 확장 할 수 있습니다. 이들은 CakePHP 동작, 구성 요소 및 도우미와 유사합니다.


1

나는 AngularJS (전체 공개, 나는 각도 개발 노력에 제한적으로 참여하고 있음)를 찬성했고 그것에 대해 매우 기쁘게 생각합니다. 내부 프로젝트에 대해 하나의 기능을 사용하고 (죄송합니다. 그것은 훌륭한 운동이었고 결국 Angular에 매우 많이 기울고 있습니다. 핵심 개발자는 질문에 대답하는 데 능숙하며 내장 된 데이터 바인딩, 단위 / e2e 테스트 및 문서화를 통해 정말 훌륭한 작업을 수행했습니다. 아직 베타 버전으로 1.0은 가까운 장래에 나옵니다. 베타는 매우 안정적입니다.

약간의 패러다임 전환이 있으며, 대부분과는 상당히 다른 접근법을 사용합니다. 좋아하는 jquery 플러그인을 통합하는 데 약간의 노력이 필요하지만 수행 가능하고 완료되었습니다 (github의 각도 제어).

나는 이것이 대부분의 js 중심 프레임 워크에서 문제가된다고 말하고 콘텐츠를 SEO 친화적으로 만드는 방법을 조사해야합니다 (중요한 경우). 6 월에 앵귤러 커뮤니티에 합류 한 이래로 관심이 높아지고 있으며 많은 사람들이 백본과 다른 사람들을 보았지만 실제로는 Angular에서 보는 것과 같다고 말하는 게시물을 만들고 있습니다.








0

Can.js 는 필요한 모든 것을 갖추고 있으며 무게는 8KB에 불과합니다. JavaScriptMVC에서 최고의 비트를 가져 와서 관찰자, 위젯, 바인딩, 작품이있는 하나의 작지만 kickass 프레임 워크로 증류했습니다. 주요 프레임 워크 ( jQuery , Dojo Toolkit , MooTools 등)와 호환됩니다. 문서는 훌륭하고 저자는 반응이 좋습니다. 볼만한 가치가 있습니다.

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