JHtml : script ()와 $ doc-> addScript의 차이점은 무엇입니까?


10

최근에 특정 JS 및 CSS 파일을 <head>각 페이지에 삽입 해야하는 모듈을 개발했습니다 . 처음에는 다음을 사용했습니다.

$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');

그러나 캐싱을 사용하도록 설정하면 사이트에서 캐시 된 버전 /cache과 캐시되지 않은 버전을 모두로드 /modules/mod_x/js/하여 JS 오류가 발생했습니다.

내가 이것을 변경했을 때 :

JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');

이 오류를 해결하여 스크립트가 캐시에서 한 번만로드되었습니다.

나는 문서 에서 addScript방법이 방법보다 '낮은 수준' 이라고 읽었JHtml:script 지만 그 이상은 아닙니다 ...

물론 [addScript를 사용하는 경우] 위의 [JHtml : script 방법]을 사용하여 자동으로 수행되는 [JHtml : script가 수행하는] 단계 중 일부를 수동으로 코딩해야합니다.

... 더 자세한 내용은 없습니다.

차이점은 무엇입니까? 나는 JHtml:script결국 addScript어느 시점에서 문서 객체를 호출 한다고 가정 하지만 다른 중간 단계가 먼저 수행됩니까?


4
joomla 문서를 약간 수정하여 업데이트하고 업데이트했습니다. 더 이해가 되셨나요?
George Wilson

1
@GeorgeWilson Joomla 문서는 최근에 실제로 향상되었습니다. 감사합니다 :)
TryHarder

스타일 시트에 대한 관련 질문 : joomla.stackexchange.com/q/10062/5239
Flimm

답변:


8

JHtml::script추가 로직이 포함되어 있습니다. 참조 http://api.joomla.org/cms-3/classes/JHtml.html#method_script를 은 API 참조

기본적으로 디버그 설정 및 사용 된 브라우저를 감지하고 일치하는 스크립트를로드합니다. 예를 들어 디버그가 활성화 된 경우 압축되지 않은 버전의 파일이 있으면로드합니다.

템플릿 수준 등에서 파일을 재정의 할 수있는 선택적 설정이 있습니다.

마이클 바커 (Michael Babker)는 JHtml::script()재정의를 허용 하기 위해 사용하는 방법에 대한 좋은 가이드를 작성했습니다 .

참조를 위해 repo의 기능 : https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/html/html.php#L659

George가 업데이트 한 공식 문서 페이지 : http://docs.joomla.org/J3.3:Adding_JavaScript_and_CSS_to_the_page


2
답변 해주셔서 감사합니다. API 참조는 상당히 간결합니다. detect_browser 및 detect_debug의 효과에 대한보다 포괄적 인 설명이 있습니까? '선택적 설정'및 '기타 사항'이라고 말하면 어디서나 문서화됩니까?
codinghands

재정의 부분을 설명하는 Michael의 기사에 대한 링크를 추가했습니다. 디버그 및 브라우저 부분에 대해서는 문서가 없다고 생각합니다. 해당 코드를 읽어야합니다.
Bakual

1
예를 들어 압축되지 않은 압축 js 파일이 있고 디버그가 켜져 있으면 디버그가 꺼져있을 때 filename-uncompressed.js와 filename.js 만로드됩니다. 브라우저를 디버그 할 때는 filename-browser.js를 찾은 다음 filename-browser-browserversion.js 등을 찾습니다.
George Wilson

2
@Bakual과 @GeorgeWilson에게 감사드립니다!
codinghands

1
JHtml이 스크립트 또는 스타일 시트의 MD5sum을 캐시 버스트에 추가 할 수도 있다는 것을 잊지 마십시오.
Flimm

4

두 단어로 :

  • JHtml::script() -특정 스크립트 (JDocument에 이미 첨부되어있는 것을 제외하고)를 무시하고 몇 가지 요인에 따라 달라집니다 (@Bakual 답변 참조).
  • $doc->addScript() -재정의를 확인하지 않고 스크립트를 문서에 직접 첨부하십시오.

확장 개발자 인 JHtml::script()경우 스크립트를 추가 할 때 사용하는 것이 좋습니다 . 이를 통해 사용자는 원하는 스크립트에 따라 특정 스크립트를 무시할 수 있습니다.
CSS에 대해서도 비슷한 방법이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.