문제

우리는 Ruby on Rails 프레임 워크 (CRM System)를 사용하여 상당히 큰 응용 프로그램을 개발하고 있으며 Rails가 데이터 처리 만 수행 할 수 있도록 ExtJS를 사용하도록 다시 작성하려는 것을 고려하고 있으며 ExtJS는 데스크톱과 같은 방식으로 모든 브라우저를 Heavylifting합니다.

누구든지 가장 좋은 접근법이 무엇인지에 대한 경험과 힌트가 있습니까? extjs는 비교적 큰 (그리고 복잡한) 응용 프로그램에서 사용하기에 충분히 성숙합니까? 그리고 Rails Part는 어떻습니까? 여기에서 가장 좋은 방법은 무엇입니까?

편집하다:

그것을 명확하게하기 위해. 모든 JavaScript 클라이언트 측 응용 프로그램 코드가 한 번에로드되는 방식으로 (응용 프로그램의 시작시 최적으로 압축 된 JS 파일로 최적으로) AJAX를 사용하여 레일에 데이터를 보내는 것을 선호합니다. 앱. 또한 ERB를 Ext -Arpliccation 요소의 동적 생성에 사용할 수있게하는 것이 좋을 것입니다.

도움이 되었습니까?

해결책

현재 ExtJS로 작성된 매우 큰 데스크탑 스타일 앱이 있습니다. 그것은 Perl의 Catalyst MVC 프레임 워크 위에 실행되었지만 전체 뷰 레이어가 ExtJS 기반 데스크탑으로 변환되면 Ruby On Rails 모델 및 컨트롤러로 마이그레이션하기 시작했습니다. 더 빠르지 만, 더 빠르지 않지만 유지 관리가 쉽고 코드 기반이 훨씬 적습니다.

  • JSON에 모델의 루트 이름을 포함하지 않도록 활성 레코드 구성을 설정하여 Ext 's JSONSTORE에 레코드를 읽는 데 아무런 문제가 없습니다. ActiveRecord Base에 호출되는 옵션이 있습니다 include_root_in_json 당신은 거짓으로 설정해야합니다.

  • 응용 프로그램 클래스를 EXT에서 올바르게 정의하고 코드 재사용을 최대화하고 DOM에서 사용되지 않은 노드를 정리할 수있는 일종의 방법을 원할 것입니다. 최신 버전의 Safari 또는 Firefox 3.1을 사용하지 않는 한 JavaScript 성능은 진정한 고통이 될 수 있습니다.

  • 아마도 페이지가로드 될 때 서버의 데이터가 JSON 형식으로 애플리케이션에 제공되기를 원할 것입니다. 이것은 Ajax를 통한 라운드 트립의 수를 줄입니다.

  • Ext의 Windowmanager 및 Storemanager 개체를 사용하거나 Ext.Util.MixEdCollection에서 직접 굴립니다.

  • 별도의 관리 가능한 파일로 코드를 개발 한 다음이를 단일 파일로 결합한 빌드 프로세스를 제공 한 다음 Yui의 압축기 또는 Dean Edwards 패커를 실행하여 파일을 압축 / 난독 화하는 것입니다. EXT 제공된 파일을 포함하여 모든 JS 및 CSS를 자체 단일 파일로 제공하십시오.

다른 팁

2012 업데이트 ExtJS는 인수했습니다 GPLV3 라이센스를 제공하는 Sencha, 및 두 개의 상업 라이센스.

2008 -OCT Comment] ExtJS는 기술적 인 장점에 훌륭하지만 몇 달 전 라이센스와의 위기로 인해 다른 프레임 워크를 살펴 보았습니다. 저는 ExtJS 제작자를 전혀 믿지 않습니다. 나는 그들이 라이센스를 어떻게 표현했는지, 그리고 그들이 그들을 믿는 사람들에서 불공평하게 이익을 얻으려고 노력하면서 오픈 소스 옹호자 인 척하는 방식을 좋아하지 않습니다.

나는 도덕적 근거에서 extjs를 사용하는 것에 대해서만 반대합니다.

이것은 나의 이전 답변에 대한 밀라노의 의견에 대한 답변에 속하지만, 여기에 새로 온 사람은 그곳에서 답장 할 명성이 충분하지 않습니다.

"SP는 정의되지 않은"문제가 있었는데, 이는 Rails가 JavaScript 파일을 하나의 큰 파일로 캐싱 한 결과입니다 (그렇지 않으면 수백 파일이 있습니다). 캐싱은 모든 것을 버린 최신 라인과 함께 이상한 버그를 소개했습니다. 이로 인해 머리카락을 잠시 뽑아 냈지만 솔루션은 루비를 1.8.6 (패치 레벨 72)에서 최신 1.8.7로 업데이트하는 것이 었습니다. 문제가 해결되었으므로 살펴 보려면 다시 확인하십시오 (자산 캐싱을이기려면 완전히 새로 고침해야합니다).

전에 Ext MVC 물건을 만나서 다행입니다. 현재 나는 예제, 튜토리얼 및 데모가 없기 때문에 이해하기가 매우 어려워 야한다고 믿을 수 있습니다. 그러나 코드 자체는 합리적으로 잘 문서화되어 있습니다 (적어도 최신 코드는 어쨌든 많은 것이 필요합니다).

나는 현재 적절한 '릴리스'를 준비하기 전에 몇 가지 주요 클래스를 리팩토링하는 과정에 있습니다. 준비가되면 (몇 주 동안 생각하고 있습니다) 문서를 생성하고 데모 및 예제 코드가 포함 된 빠른 사이트를 설정합니다. 내가 그렇게했을 때 내 블로그에 게시물을 올릴 게요 (http://edspencer.net).

이것에 대한 나의 목표는 이러한 유형의 응용 프로그램을 훨씬 간단하게 작성하고 규칙을 설정하는 프레임 워크를 제공하는 것입니다. 현재 EXTJS 애플리케이션을 구성하는 합의 나 기본 방법이 없으므로이를 따라 이동하기 위해 할 수있는 모든 일은 올바른 방향으로 나아갈 수 있습니다! 의견과 기여는 환영받는 것 이상입니다.

나는 당신이 설명하는 종류의 대규모 ROR/Extjs 앱을 성공적으로 배포했습니다 ( "단일 페이지"클라이언트 측 AJAX 중심). ext_scaffold는 거의 붉은 색입니다.

ROR 및 EXTJS가 원활하게 협력하는 것은 너무 과세되지 않습니다. 근본적인 선택은 extjs를 "연설"으로 확장 할 것인지, "extjs를 말하기"또는 중간에서 만나기 위해 패치로 확장 할 것인지입니다. 팀의 기술이 어디에 있는지에 따라 다를 것입니다.

나는 다음을 포함하는 중간 전략을 채택했습니다.

  • 연장하다 Ext.data.Store 그리고 Ext.data.Record Rails 라우팅 컨벤션에 대해 알고 있습니다
  • 마구 자르기 Ext.grid.EditorPanel 그리고 Ext.form.BasicForm Activerecord Associations와 잘 어울립니다
  • 확장 할 모듈을 작성하십시오 ActiveRecord::Base 그리고 ApplicationController 단순히 커밋합니다 Ext.grid.EditorPanel 그리고 Ext.form.BasicForm

그것은 거의 그것입니다.

이렇게 말했습니다.

  • 당신은 내부에서 손을 더럽 히아야 할 것입니다. 데모에 푹 빠지지 마십시오.
  • 커뮤니티 문서는 열악하고 PHP 중심입니다.
  • vbulletin을 사용하는 Github/Lighthouse Centred Ror World에서 나오는 것은 1998 년에 깨어나는 것과 같습니다. 내 말은, 공개 버그 트랙커는 업데이트 된 포럼 게시물 (WTF?)이 없다는 것을 의미합니다.
  • 코드는 약간 과도하게 연결되어 있습니다.
  • 팀은 오픈 소스 신뢰성을 잃어 오픈 소스 산소를 잃었습니다.
  • 팀은 GWT와의 통합에 초점을 맞춘 것으로 보입니다 (누구나 "Enterpri $ ey"라고 말할 수 있습니까?).

모듈 식 접근법에 중점을 둔 복잡한 일 페이지 웹 응용 프로그램을 작성하는 데 도움이되는 Netzke 프레임 워크를 살펴볼 수 있습니다.

Netzke의 장점은 다음과 같습니다.

  • 코드의 재사용 및 확장 성. 구성 요소 (클라이언트 및 서버 측)를 얻으면 언제 어디서나 재사용하거나 다른 구성 요소와 결합하거나 이벤트를 상속으로 확장 할 수 있습니다.

  • 능률. 모든 구성 요소의 클래스는 서버에서로드 (및 평가)로 한 번만로드되므로 서버 클라이언트 통신에서 많은 시간이 절약됩니다.

  • 오픈 소스이며 활발한 개발 중입니다. 라이브 데모 및 예제 코드가 있습니다.

  • Ext JS를 만지지 않고도 바로 사용할 수있는 미리 빌드 구성 요소가 있습니다 (레일로 구성하시기 만하면)

  • 복잡한 물류 응용 프로그램의 실제 개발에 (저자에 의해) 사용되었습니다.

Netzke의 단점은 다음과 같습니다.

  • 코드는 여전히 젊고 커뮤니티는 작습니다.

관심이 있으시면 설명과 디자인 세부 사항을 살펴보십시오. https://github.com/nomadcoder/netzke-core

라이브 데모/튜토리얼은 여기에서 찾을 수 있습니다. http://netzke-demo.herokuapp.com 그리고 여기: http://yanit.heroku.com

Ext는이 상황을 처리 할만 큼 충분히 성숙합니다. 나는 현재 많은 Ext를 가진 Rails 프로젝트를 진행하고 있으며 가장 어려운 부분은 Rails 's와 함께 일하는 것입니다. to_json ext json을 렌더링하려면 (배열, 해시, 모델, 유효성 검사 실패 등)

ext_ 확인scaffold 레일 용 플러그인. 나는 이것으로 시작하여 그것에서 해킹했다 ActiveRecord/ActionView 내가해야 할 일을 할 때까지 확장.

나는 레일과 함께 ExtJ를 사용한 경험이 있습니다. 프레임 워크를 사용하는 것은 멋진 위젯을 무료로 얻을 수있는 좋은 방법입니다. REST 컨벤션은 단일 페이지 응용 프로그램을 개발하는 데 사용하는 경우 프레임 워크와 잘 어울립니다. RJ 와도 잘 작동합니다.

프레임 워크를 사용하는 내 그립은 다음과 같습니다

  1. 단일 페이지 응용 프로그램을 다시로드하는 것은 바보 같은 것이기 때문에 실제로 Flash [: University]를 사용할 수 없습니다. RJS/ JavaScript 메소드를 사용하여 표시해야하므로 유효성 검사 통지와 메시지를 전달합니다.

  2. ERB를 많이 사용할 수 없으므로 JSON 콜백에 많은 논리를 캡슐화해야합니다.

여러 응용 프로그램을 위해 ExtJS와 Rails를 배치했으며 분명히 서로 대화 할 수 있습니다. 우리는 현재 Rails + Ext에서 개발중인 앱의 빠른 데모를 구성했습니다. http://demo.domine.co.uk/admin. 완전하지 않으므로 지금은 프론트 엔드를 무시합니다 - 관리 섹션이 본질적으로 완료되었으며 다음과 같이 로그인 할 수 있습니다.

사용자 이름 : Edward Password : Rarrar

데모는 완전히 완료되지 않았지만이 단계에서 Firefox 이외의 다른 방법에서 올바르게 작동한다고 보장하지 않습니다. 다른 브라우저에서 작동하지 않을 이유가 없으며 아직 테스트하는 데 시간을 보내지 않았습니다. 요점은 레일과의 통합에 관한 것입니다.

시작 메뉴의 모든 응용 프로그램은 JSON을 통한 Rails 백엔드와 상호 작용합니다. 나는 우리를 위해 대부분의 작업을 수행하기 위해 기본 Rails 플러그인을 작성했습니다. 나는 곧 그 뒤에 코드를 발표 할 것이지만 지금은이 두 기술이 얼마나 잘 작동 할 수 있는지에 대한 아이디어를 제공하기를 바랍니다.

ExtJS에 대한 경험은 없지만 (실용 레일 프로젝트"책) 나는 jQuery를 사용했다 Flexigrid ~와 함께 Jrails 더 많은 데스크탑 느낌을 얻으려면.

그것은 꽤 잘 작동했습니다.

확인. 나는 많은 프로젝트에서 extjs gxt gwt를 사용하며 개발하기가 매우 쉽습니다. 그러나 나는 ExtJS+GWT (GXT)로 프로젝트를 구축했다고 말하고 싶습니다. 루비에 대해 잘 모르겠습니다.링크 텍스트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top