2011-11-23 4 views
16

취미 앱을 만들고 일부 jQuery를 사용하고 있습니다. 그 결과는 현재 괜찮습니다. 그러나 저는 jQuery 멍청한 놈입니다. 코드 구조에 대한 몇 가지 중요한 개선이 있다고 가정합니다. 지금 당장 Coffescript를 제외하고 내가 궁금해했던 한 가지는 자산 파이프 라인에서 모델 특정 .js 파일을 올바르게 사용하는 방법입니다.Rails 3.1 자산 파이프 라인에서 jQuery를 올바르게 사용하려면 어떻게해야합니까?

예를 들어 내 사용자 모델로 작업 할 때 문서를 준비 할 때 실행하고 싶은 코드가있을 수 있습니다. 레일즈 3.1에 의해 생성 된 users.js 파일의 $(document).ready(function() {...});에이를 넣는다 고 가정 해 봅시다.

다음 날 나는 Pet 모델로 작업 중이며 문서로 실행할 코드를 준비했습니다. 나는 이것을 레일이 준비하는 pets.js 파일의 $(document).ready(function() {...}); 안에 넣었다.

  1. 어떻게 그 때 응용 프로그램의 실행을 컴파일 않습니다 내 질문이 발생할 경우 여기

    이야?

  2. 위 예제에서 두 개의 jQuery 인스턴스를 인스턴스화하고 있습니까?
  3. $(document).ready(function() {...});을 앱에 한 번 사용해야합니까? 아니면 Rails가 내 코드를 단일 호출로 컴파일해야합니까?
  4. 모델에 특정한 .js 파일에 속하는 내용은 무엇입니까?
  5. 개발 모드와 프로덕션 모드에서 실행 방식이 다른가요?

답변

12

1) 컴파일 : Rails 자산 파이프 라인은 모든 javascript 파일을 하나의 큰 파일로 결합합니다.

2) JQuery와 만, 여러 $(document).ready 기능을 가지고있다 한 번로드,하지만 그건 문제가되지이다

3) 레일은 전화와 아무것도하지 않고, jQuery를 안전하게 당 그 블록을 더 처리 할 수 ​​있습니다 페이지.

4) 모델 특정 .js이라고 부르겠습니다. 컨트롤러 고유라고 부릅니다. 함께 속하는 기능을 함께 그룹화합니다. 함께 묶는 것이 컨트롤러인지 모델인지는 중요하지 않습니다. 우리는 js를 별도의 파일로 분리하여 관리하기 쉽게 만들었습니다.

5) 개발 과정에서 자산은 모든 요청에 ​​대해 컴파일되고, 프로덕션에서는 한 번만 수행됩니다. 또한 생산시에는 압축 및 압축 될 수 있습니다.

희망이 도움이됩니다.

3

나는 이들 중 일부에 답변하려고합니다. 페이지 당 1 개의 문서 대기 통화 만 필요하지만 배수가 있는지 여부는 중요하지 않습니다. 그 안에 포함 된 것은 브라우저에 DOM이로드되면 실행되는 코드입니다. 레일즈는 자바 스크립트로 어떤 것도하지 않을 것이고, 파일에 쓰는 것과 동일하게 유지 될 것입니다. Rails는 자바 스크립트 코드를 펑키 한 방식으로 컴파일하지 않을 것입니다. 프로덕션 환경에서는이를 축소 할 수 있지만 실제 코드는 거의 동일하게 유지됩니다. 이것은 브라우저가 아니라 서버에 의해 실행됩니다.

jQuery는 한 번만로드 된 다음 참조되므로 인스턴스 2 개를 인스턴스화하지 않습니다. $ (document) .ready() 호출은 본질적 기능 일뿐입니다.

모델 별 jquery 파일은 레일즈 애플리케이션에서 Ajax와 함께 사용할 수 있습니다. 따라서 'create.js.erb'와 같은 파일을 가질 수 있습니다. 실제로이 파일은 레일스 액션을 전달할 수있는 자바 스크립트 파일입니다. 게시물 작성/삭제 후 특정 코드를 실행하려면이 파일을 사용하면 레일즈 컨트롤러에서 자바 스크립트에 응답해야합니다.하지만이 코드는 레일 컨트롤러에서 자바 스크립트로 응답해야합니다. 위의 질문을보십시오.

중요한 점은 jquery는 자바 스크립트이며 javascript는 브라우저에서 실행된다는 점입니다. 동적 통합이없는 프론트 엔드에서는 클라이언트 측에서 항상 실행되며 jquery는 주로 DOM 조작에 대해 환상적입니다.

바라건대 그것은 약간의 물건을 정리할 것입니다!

+0

추가 정보 주셔서 감사합니다. – Clay