2010-07-04 7 views
0

일반적으로 전지구적인 상태는 찌그러지고 있습니다. 그러나, 나는 그것을 클라이언트 내 애플 리케이션을 간단하게 만들 수 있다고 생각합니다.이것이 전역 변수를 잘 사용할 수 있습니까?

사용자가 로그인 할 때 몇 가지 값을 설정하는 AJAX 웹 앱이 있습니다 (예 : 사용자 ID 및 기타 정보). 이 정보는 앱의 평생 동안 바뀌지 않습니다.

또한 서버로의 이동을 최소화하기 위해 데이터 캐시가 있습니다.

나는이 모든 것을 안전하게 만들 수 있습니까? (읽기 전용 사용자 정보와 캐시) 나는 때때로 함수들 사이의 값을 때때로 어색한 방식으로 전달하는 것에 대해 걱정할 필요가 없으므로 간단하게 만들 것이라고 생각한다.

기본적으로 "컴파일 타임"에 값이 알려지지 않은 상수와 같습니다.

어떤면에서 DOM 자체는 전역 상태의 한 형태로 작용합니다. HTML에 값을 저장할 수 있으며 프로그램의 어느 곳에서나 액세스 할 수 있습니다.

+0

아약스의 맥락에서 글로벌이 정확히 무엇을 의미합니까? 서버 또는 클라이언트에서? –

+0

** 고객 측 **. 선명도가 부족해서 죄송합니다. –

답변

0

현재 수행중인 작업을 알고있는 경우 전역을 사용하는 데 문제가 없습니다. 하나의 전역 객체에 모든 "상수"를 래핑하여 깨끗하게 유지하십시오. 전역 변수의 주요 관심사는 전역 속성이 저장하는 모든 상태의 단일 인스턴스에 묶여 있다는 점입니다.이 경우 상황에 따라 문제가 발생할 수도 있고 그렇지 않을 수도 있습니다.

0

당신은 네임 스페이스를 만들 수 있습니다.이 방법은 변수가 이고, 글로벌 변수는입니다. 그러나 충돌과 그 종류의 것들에 대해서는 너무 걱정할 필요가 없습니다. 페이스 북은 API 중 일부에서이를 수행합니다. 문서에 다른 변수와 충돌하지 않고,

if(!window.MY_NAMESPACE){ 
    MY_NAMESPACE = { 
    a_variable : "some value", 
    a_function: function(params){ 
     return a_variable; 
    }, 
    }; 
} 

전역 물건 같은 것을 얻을 그런 식으로 (또는 스크립트의 중복)

0
:

그냥 안전을 위해, 여기에 예를 들어 안전 네임 스페이스 구현입니다

내가 언급 한 목적을 위해 전역 상태를 사용하는 것이 완벽하다고 생각합니다. 파일이 한 번만 작성되도록하십시오. 즉, 실행 중에 변경되지 않도록하십시오. 따라서 나중에 실수로 덮어 쓰지 않게 할 이름을 지정하십시오. (자바 스크립트에서는 항상 위험합니다. 즉, var을 잊어 버리고 변수가 전역이됩니다. 즉, window 개체에 첨부 됨) 모든 개체를 동일한 구조로 배치하는 것이 좋습니다. 이름 충돌 (이름이 적고 충돌이 적음)의 위험을 최소화합니다.

변수가 실제로 '글로벌'이 아니라는 점도 기억하십시오. 사용자가 계속 로그인했지만 사이트에 새 창을 열면 '전역 변수'가 사라집니다. 이 경우 일관성이 유지되지 않도록해야합니다. 즉, 서버에 사용자가 로그인되어 있다고 가정하면 변수가 설정됩니다.

관련 문제