2015-01-28 2 views
0

빠른 예를 들어,레일 자산 파이프 라인 정책

는 기본에

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

를 새로운 레일 프로젝트를 확인하고.

나는 app/assets/javascripts/

foo.js, bar.js을 추가하고 내가 앱이 자산 파이프 라인의 모든-페이지 even i don't need to use in most of the pages.

이것이 바로 구조에

부하 foo.js, bar.js을 실행하면?

무엇

변화

require_selfjavascript_include_tag를 사용하고 내가 필요로 할 때 수동으로 JS 파일을로드

어떻습니까?

더 좋은 방법이 아닙니까?

Rails 자산 파이프 라인 기본 정책이 필요한 모든 js 파일을 항상로드하는 이유는 무엇입니까?

답변

0
//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

주의 마지막 require_tree .는 의미, 무엇을 적 자바 스크립트 파일의 앱/javsacript 폴더 내에 현재 존재하는 것은 자동으로로드됩니다. 첫 번째 질문에 대한 답변에서 그렇습니다. 올바른 구조입니다. javascript 폴더 안에있는 Js 파일은 자동으로로드됩니다.

당신은 JS 폴더 안에 JS 파일을 보관 한

, 당신의 프로젝트에 당신이 그것을 :)

생산에서

사용하려는 의미 : 당신이 생산 기계에 자산을 사전 처리 컴파일 할 때 을, 모든 JS는 CSS는 것 단일 application.css & application.js 파일로 사전 컴파일되므로 각 파일을 수동으로로드하는 것에 신경 쓰지 않아도됩니다.

+0

감사합니다, require_tree를 알고 있습니다. 내 말은,이 질문을 require_self로 바꾸고 필요할 때 수동으로 js 파일을 추가하면 어떨까요? 과부하 또는 성능에 더 도움이되지 않습니까? – Canna

+0

프로덕션 환경에서 프로덕션 시스템에서 애셋을 미리 컴파일하면 모든 js, css가 하나의 application.css 및 application.js 파일로 사전 컴파일되어 각 수동으로로드하는 것에 대해 신경 쓸 필요가 없습니다. – Ajay

0

브라우저는 대개 자산 파일을 캐시합니다.

따라서 사용자가 처음으로 애플리케이션을 방문 할 때 하나의 거대한 애셋 파일을 브라우저에 전달하는 것이 좋습니다. 브라우저가 다른 작은 자산을 다시로드 할 필요가 없기 때문에 다음 요청 (다른 페이지의 경우에도)이 더 빨라집니다.

하지만 달라질 수 있습니다. 앱에서 거의 사용하지 않는 대형 자바 스크립트 라이브러리가있는 경우 해당 특수 페이지에서만 해당 파일을 제공하는 것이 좋습니다.

0

나는 그것이 오래된 질문이지만이 대답은 누군가를 도울 수 있음을 알고 있습니다.

자산을 특정 장소에 추가해야하는 경우 미리 컴파일 된 배열에 자산을 추가해야합니다.레일에서 3이 방법으로 자산을 추가하여 config/application.rb 파일을 수정해야 : 레일에서

config.assets.precompile += %w(foo.js bar.js) 

4,이 방법으로 config/initializers/assets.rb 파일을 수정해야 5 :

Rails.application.config.assets.precompile += %w(foo.js bar.js) 

잊지 마세요 서버를 다시 시작하십시오.

This 기사는 자산 파이프 라인에 대해 알아볼 수있는 훌륭한 자료입니다.

관련 문제