2011-08-04 2 views
4

Rails 3.1 (rc5)을 사용하여 레일 (또는 스프로킷)이 포함 된 coffeescript 파일이 상단과 하단에 자바 스크립트를 초기화하는 데 추가되는 것을 알았습니다. 즉, 빈 .js.coffee 파일은 다음과 같이보고 출력됩니다 :Rails 3.1/Sprockets 2/CoffeeScript가 여분의 코드를 추가하는 이유는 무엇입니까?

(function() { 
}).call(this); 

이 자극되기 때문에 나사까지 내 자바 스크립트 범위를 (난 정말 내가 뭘하는지 모르는 경우). 필자는 일반적으로 모든 자바 스크립트 클래스를 별도의 파일로 분리하고 클래스를 래핑하는 함수 코드를 사용하면 서로 범위를 벗어날 수 있다고 생각합니다. 또는 적어도 난 정의되지 않은 오류가 계속 발생하면서 액세스 할 수없는 것 같습니다.

이것을 무시할 수있는 방법이 있습니까? I로까지 https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb

내가 함수에 모든 것을 포장하는로드로 다음 아무것도 DOM 때까지 실행되지 않는 편의처럼 보일 수 있음을 이해하지만 : 그것은 톱니에이 파일이 코드를 추가과 관련이있다처럼 보인다 내 범위를 망칠 수 있다고 말할 수 있습니다.

+0

페이지의 읽기 유무 : http://stackoverflow.com/questions/6099342/how-can-i-use-option-bare-in-rails-3-1-for-coffeescript –

답변

10

개체를 전역 범위에 넣으려고합니까? CoffeeScript는 대개 익명의 함수로 코드를 래핑하여 실수로 변수를 전역 범위로 누출시키지 않도록합니다. 을 해제하는 방법이 아닌 경우, 가장 좋은 건 아마 특별히 창 개체에 전역 범위에서 원하는 무엇이든을 추가하는 것입니다 것은 :

window.myGlobal = myGlobal; 

이 요즘 자바 스크립트 모범 사례가 될 것으로 보인다 함수 범위 안에 코드를 넣고 전역 범위에 객체를 추가하는 것에 대해 명시해야합니다. 일반적으로 CoffeeScript가 자동으로 수행하는 것으로 보입니다.

+1

그래, 지금 이해하기 시작 했어. 저는 모든 것을 글로벌 범위에 넣고 있습니다. 고마워요. –

+1

이 두 질문은 유사합니다. http://stackoverflow.com/questions/6685292/calling-javascript-functions-from-html-in-rails-3-1 http://stackoverflow.com/questions/6089992/ 기울이지 않는 변수 오류가있는 레일 3-1 & coffeescript/6090251 # 6090251 –

관련 문제