2013-01-22 2 views
6

우리의 모든 애플 리케이션은 PHP mvc이며 클라이언트 측 맨 위에 매우 간단한 js 동작 레이어가 있습니다. 우리는 자바 스크립트를 더 구조화하고 "snippets"에 간단한 동작 (예 : 다른 jquery 플러그인을 모든 곳에서로드)을 실행하도록 요청하는 것을 중단합니다. 우리는 자바 스크립트 MVC 프레임 워크를 사용하지 않고 새로운 앱에 가장 적합한 솔루션을 찾고 있습니다.pushstate "hijax"에 대한 자바 프레임 워크

가장 매력적인 솔루션 중 하나는 Twitter does과 같이 서버 측 렌더링을 계속 유지하는 것입니다. 그들은 이것을 "Hijax + 서버 측 렌더링"이라고 부릅니다. 계약에 의해

는, 우리의 구성 요소가 하나의 DOM 노드에 자신을 첨부 위임 화재를 통해 이벤트를 수신 : 우리는 블로그에서이 따옴표는 우리에게 매우 매력적 자바 스크립트 만에 전체 날려 MVC 프레임 워크가하지 않으려는 DOM 이벤트 및 DOM 이벤트 버블 링을 통해 이러한 이벤트가 다른 구성 요소로 브로드 캐스팅됩니다. [...] 둘째, 모든 구성 요소는 AMD를 사용하여 정의됩니다.

우리는 우리 자신 만의 무언가를 만들려고 노력해 왔지만, 높은 수준의 자바 스크립트 전문 지식이 없으면 우리는이 문제를 해결할 수 없습니다. jquery-pjax 같은 것도 아주 간단한 경우에도 좋은 해결책 인 것 같습니다. 우리가 찾고있는

:

  1. UI를/데이터 분리 DOM을
  2. 이벤트 중심의 UI와 loosly 몇 XHR, DEVS는 DOM의 모든 종류에 수신기를 부착 할 수 있도록
객체에

거기에 javascript 프레임 워크와 같은 것이 있습니까? pushState으로 점점 더 많은 주목을 받고 있습니다. 어떤 아이디어?

+1

IMO Twitter의 접근 방식은 상당히 비참합니다. 지난 6 월에 나는 [데모 js 북마크릿] (http://dist.meekostuff.net/meeko-twitter/)과 [article] (http://www.meekostuff.net/blog/Twitter-without-Hashbangs/)을 썼다.) 그들이 mobile.twitter.com을 점진적으로 향상시킴으로써'pushState'로 어떻게 이전 할 수 있었는지 보여줍니다. 내 [HTMLDecor] (http://github.com/meekostuff/HTMLDecor/) js 프레임 워크를 사용했으며 데모는 며칠 밖에 걸리지 않았습니다. 트위터는 몇 달 만에 이주 할 수 있었습니까? –

+0

흥미로운 코멘트 Sean :-) 그러나, 우리는 성능 향상을 기원하기 때문에 js hijax로 옮기지 않습니다. 우리는 때때로 html이 작업을 수행 할 수없는 행동 스크립트가 필요하며 우리는 서버 측 애플리케이션을 최소화하고자합니다. 그것이 우리가 하이 잭스가 우리에게 정말 잘 맞는 것이라고 생각한 이유입니다. 자바 스크립트가 비활성화되면 "이전"전체 페이지 렌더링 된 앱의 대체 버전을 가져와야합니다. 그리고 나는 완전히 "hashbangs가 죽었습니다"라고 동의합니다 : 그들은 유연하지 못하고 진보적 인 향상은 no-go가됩니다 –

+0

그건 새로운 twitter.com의 또 다른 문제점입니다 - js가 비활성화 된 경우에는 트윗 할 방법이 없습니다. 애프터 - 생각으로의 진보적 인 향상. –

답변

2

당신은 내가 최선을 다해 귀하의 질문에 대답하려고거야

0

History.jsAmplifyjs (일부 구성 요소에 대한 가능성이 microjs 함께 넣어) 체크 아웃 할 수 있습니다. 그렇게 말하면서, 귀하의 질문은 매우이며 매우 모호하다고합니다. JavaScript 라이브러리에서 찾고있는 것을 정확히 전달하지 못했습니다. 당신은 모두 복잡하고 각각 클라이언트 측 개발에서 특정 목적을 서버 화하기 위해 존재하는 많은 다른 주제를 언급했습니다. 어쩌면 야생에서 이러한 모든 개념의 구현이있을 수 있지만 모든 문제를 해결할 명확한 답은 없습니다.

먼저 "UI/데이터 분리"에서부터 시작하겠습니다. 이 개념은 정말로 우려의 분리에 관한 것입니다. UI가 데이터와 별도로 존재하기를 원합니다. 여기서 정말로 찾고있는 것은 HTML이 데이터 모델의 현재 상태를 반영하는 것입니다. 또한이 작업이 자동으로 수행되기를 원합니다. MVC 디자인 패턴이있는 매우 일반적인 워크 플로입니다. 이 유연하고 가벼운 자연의를 위해 나는 Backbonejs을 제안, 서로 다른 프레임 워크의 적지 사용하여 내 개인적인 경험에서

... Backbone.js, AngularJS, EmberJS, 그리고 목록은 계속 : 자바 스크립트는 사용 가능한 여러 가지 옵션이 있습니다 . 백본에서 우리는 데이터 모델에 직접 묶여있는 "보기"개념을 가지고 있습니다. 또한 Routes 메커니즘을 통해 원하는 "pushSate"개념을 지원합니다.

"이벤트 기반 UI"부분은 다양한 JavaScript 라이브러리에서 처리 할 수 ​​있습니다. jQuery는 "모든 종류의 DOM 요소"에 이벤트를 첨부하는 데 가장 인기있는 라이브러리 일 것입니다. 또한 Backbone.js는 View 객체로 이벤트 위임을 통해 이벤트 위임을 쉽게 설정할 수 있습니다.

요약하면 JavaScript에 구조를 추가하려는 경우 ... 실제로는 에 따라 달라지며 정확히 무엇입니까? 단순한 작업을 위해 손으로 직접 만든 jQuery가 약간의 작업을 수행합니다. 정말로 더 많은 MVC 스타일 앱이 필요하다면 성장할 가능성이 있습니다. Backbone과 같은 MVC 프레임 워크는 갈 길이 멀습니다.