2012-01-02 4 views
1

현재 각 웹 사이트에는 $ (document) .ready 함수가있는 html + php 파일이 많이 있습니다.Javascript 및 jquery 네임 스페이스

필자는 가능한 한 많은 JS를 하나의 파일로 대조하고 함수 이름을 지정해야한다고 생각합니다. 이처럼 내 하나의 site_scripts 파일에

<script type="text/javascript"> 
    $(document).ready(function(){ 
     productActions.documentReady(); 
    }); 
</script> 

그 다음을, 내가 할 수있는 일 :

var productActions = { 
    documentReady: function() { 
     $('#date').change(function() { 
      someGlobalFunction(); 
      productActions.getTerms(); 
     }); 

     $('#product_id').change(function() { 
      productActions.getTerms(); 
     }); 
    }, 

    getTerms: function() { 
     //do something here 
    } 
}; 
내가 product_edit라는 PHP 파일이있는 경우

그래서, 다음, 나는 다음과 같은 일을 할 것

첫째로 : 나는 올바른 방향으로이 일을 진행하고 있습니까? 이 전체적인 방법론은 바른 길에 있습니까 ... 아니면 말도 안됩니다?

두 번째로 : 내 site_scripts 파일이 캐시 된 것으로 보이므로 매번 브라우저 캐시를 지우고 변경해야합니다. 이 문제를 해결하는 빠른 방법이 있습니까?

+1

나는 단점을 잘 모르는 것 같아요 (있는가있는 경우) 하지만 당신은 1) 함수를'.ready'에 직접 전달할 수 있고, 2) 캐싱 문제에 대해, 예를 들어 '? v2'를 자바 스크립트 파일의 URL에 추가하여 브라우저가 속임수를 사용하도록 유도하십시오. – pimvdb

답변

1

필요가 없습니다에 추가 기능으로 감싸기 (의견 작성자의 말처럼)

$(document).ready(productActions.documentReady) 

캐싱을 처리하는 방법에는 여러 가지가 있습니다. 예를 들어 일 때 파일에 타임 스탬프를 넣고 (빌드 스크립트에서이 작업을 자동으로 수행함) far-futures expires headers을 적용하면 한 번만 다운로드됩니다.

또한 네임 스페이스의 경우 대문자로 전역 네임 스페이스를 사용하는 것이 일반적입니다. 나는 i.TV에서 일을 우리는 다음과 같이 수행

window.ITV = {pages:{}} 
ITV.pages.tvListings = { 
    init: function() { } // basic init for page 
    prop1: "bla bla bla" 
} 

을 그리고 우리는 약간의 장식성을 할 수와 PHP에서 완전히 재사용되는 모든 페이지에 걸쳐 이런 일을 수행

0

두 번째 사용자 웹 개발자 툴바를 개발하고 개발 중에 캐시를 사용 중지하십시오. 당신은 자바 스크립트 파일을 클라이언트가 페이지를 열 때마다 업데이트하려는 경우 JS가 HTML 파일을 추가 할 때, 단지 같은 것을 할 :

<script type="" src="some.js?var=somerandvars" />