2009-11-09 2 views
1

내 응용 프로그램에 약 2000 줄의 자바 스크립트 코드가 있습니다. 많은 것은 사용자 상호 작용/jQuery입니다. 걱정하지 마세요. 모두 잘 작동합니다.큰 자바 스크립트 파일 작업에 대한 조언이 필요합니다.

하지만 코드 기반을 추적하기가 어려워졌습니다. 그래서 나는 파일을 5 개의 파일로 나눴다.

나는 모든 파일을로드하면 모두 메모리에 상주하며 서로 통신 할 수 있다고 생각했습니다. 그러나 그것 같이 보이지 않는다. 파일 A에는 var currentPage = getURLvar('slpage');이 있고 파일 B에는 if (currentPage == 'someName')이 있습니다.

그러나 파일 B는 currentPage 변수를 인식하지 못합니다.

또한 파일 C에 일반 스크립트가 있으며 파일 B와 B를 사용할 수 있습니다. 그런데 칼이 나올 수 없다고 생각하니?

모든 조언을 주시면 감사하겠습니다. 당신은 그것을 다른 파일에 스크립트의 일부를 액세스 할 수있어 그 권리있어

// FILE A 
jQuery(document).ready(function() { 

    var currentPage = getURLvar('slpage'); 

    if ((currentPage == 'Aa') || (currentPage == 'Bb')) { 
    init_AA(); 
    } 
    else if ((currentPage == 'Cc') || (currentPage == 'Dd')) { 
    init_BB();  
    } else if ((currentPage == 'Ee') || (currentPage == 'Ff')) { 
    init_CC();  
    } 
    (...) 

// FILE B 
    function init_AA() 
    { 
    (...) 
    } 

    function getURLvar(name) 
    { 
    //Gets the URL and returns the value of specified paramter. 
    } 
+0

"currentPage"변수가 "live"범위에 있습니까? –

+1

프로덕션 환경에서 싱글 파일 하나를 최소화하는 것은 어떻습니까? –

+0

@Jan - Scope의 의미는 무엇입니까? @Alex - 프로덕션에 들어가면 그렇게 할 것입니다. 하지만 내가 함께 일하는 동안 사이트의 다른 섹션에 다른 js 파일이있을 때 관리가 잘됩니다. – Steven

답변

4

이 같은

내 자바 스크립트 시작의이

UPDATE. 당신이 겪고있는 문제는 범위를 지정하는 것과 같습니다.

변수가 전역 네임 스페이스에있는 경우 (좋은 생각이 아님) 시도한 것처럼 직접 변수에 액세스 할 수 있습니다.

또는 변수 범위가 메소드 내에있는 경우 해당 메소드에도 액세스 할 수 있습니다.

원하는 변수를 노출하기 위해 코드의 공통 네임 스페이스를 만들고 관련 자바 스크립트를 관련 네임 스페이스로 범위를 지정하는 것이 좋습니다.

여기

자세한 내용은 일부 자원을이다 :

http://www.dustindiaz.com/namespace-your-javascript/

http://snook.ca/archives/javascript/javascript_name

UPDATE : 당신은 당신이 단순히 외부 변수 decleration을 움직일 수 게시 한 코드를 기반으로

anonymouse 함수의 범위.

var currentPage; 

jQuery(document).ready(function() { 

currentPage = getURLvar('slpage'); 
... 
+0

humm ... 나는 이런 것이 존재하는지 궁금해하고 있었다. 그래도 스코핑으로 무슨 뜻인지 모르겠다. – Steven

+1

범위 지정은 코드에있는 범위를 나타냅니다. 예를 들어, 함수의 맨 위에 변수를 선언하면 함수가 변수를 사용할 수있는 범위가됩니다. 이 함수 밖에서 변수는 존재하지 않습니다. 이것을 범위가있는 변수 (함수에 적용)라고합니다. 실제로 말하는 것은 "이 변수를 어디에서 볼 수 있습니까"입니다.귀하의 예제에서 그것은 변수가 내 정의 된 함수에서 볼 수 밖에없는 것처럼 보입니다. 다른 함수는 잠겨 있기 때문에 해당 범위를 갖지 않습니다 (변수를 볼 수 없음). –

+0

위 업데이트를 참조하십시오. 이렇게하면 즉시 운전을 시작해야합니다. –

관련 문제