이 질문에 대한 답변은 브라우저마다 다를 수 있습니다 만, 어떤 브라우저는 복수 < 스크립트 > 태그가 사용되고 src 속성이 같은 경우에 대한 동작을 정의합니까? 예를 들어 하나의 HTML 문서에서 동일한 "src"속성을 사용하여 <script> 태그를 여러 번 사용하면 어떻게됩니까?
은 ...<script src="../js/foo.js"></script>
...
<!-- what happens here? -->
<script src="../js/foo.js"></script>
나는 처음에이 질문을하는 이유, 내 특정 경우에 나는 JQuery와 사용을하는 ASP.NET MVC 응용 프로그램에서 부분적인 뷰를 사용하고 있다는 것입니다 . JQuery JS 파일은 모두 스크립트 태그를 통해 마스터 템플릿 파일에 포함됩니다. 부분 템플릿 파일에 스크립트 태그를 추가하여 마스터 템플릿 컨텍스트 외부에서 사용되는 경우 필요한 모든 JS 파일을 자동으로 포함하고 다른 뷰 또는 템플릿을 사용하여 포함시키지 않도록 스크립트 태그를 추가하는 것이 좋습니다. 그러나 JS 파일을 클라이언트에 여러 번 전송해야하거나 사용자 환경에 부정적인 영향을 미칠 수있는 부작용을 원하지는 않을 것입니다.
내 생각에 지금은 주요 브라우저 (FF, Safari, IE, Opera)의 전부는 아니지만 대부분이 JS 파일을 처음 사용할 때 캐시하고 이후 스크립트 태그에서는 브라우저가 가능하면 캐시 된 사본을 사용하고 만료되지 않은 경우 사용하십시오. 그러나 캐싱 동작은 대개 브라우저 구성을 통해 변경 될 수 있으므로 모든 종류의 캐싱 동작에 의존하는 것이 "안전"하지는 않습니다.
내 부분적인 뷰가 적절한 JS 파일을 포함하여 다른 템플릿이나 뷰에 종속된다는 사실을 받아 들여야합니까?
+1 일부 라이브러리는 이중 포함으로부터 보호되지만 jQuery는 볼 수 없습니다.두 번 포함시키지 마십시오. 라이브러리가 두 번 인스턴스화되면 비정상적인 동작이 발생할 수 있습니다. – bobince
코드가 호출 될 때 실행됩니다. 당신은 그것이 두 번 해석 될 것이라고 말하려고했는데, 이것은 상당히 다르며, 당신이 설명한 것과 다른 문제를 일으 킵니다. –
코드가로드 될 때 코드가 해석되어 실행되며 이는 JS와 완전히 동일합니다. 예를 들어'function foo() {}'는 실행될 때 foo라는 새로운 전역 변수를 생성하고 함수 본문의 값을 할당하는 코드 행입니다. JW는 이것이 두 번 행해지므로 문제가 있다고 말하고 있습니다. –